From e92f72e4904d10c68c260b6c62959db92271a3e5 Mon Sep 17 00:00:00 2001 From: Jesper Gravgaard Date: Wed, 30 Sep 2020 22:48:44 +0200 Subject: [PATCH] Expanded DuplicateRValueIdentification to also find RValues in different blocks as long as the first one dominates the last one. Closes #525 --- .../cache/fragment-cache-csg65ce02.asm | 2 +- .../cache/fragment-cache-mega45gs02.asm | 93 +- .../fragment/cache/fragment-cache-mos6502.asm | 2 +- .../cache/fragment-cache-mos6502x.asm | 2361 ++++---- .../cache/fragment-cache-wdc65c02.asm | 2 +- .../vwum1=vwum2_plus_pwuc1_derefidx_vbuxx.asm | 7 + .../java/dk/camelot64/kickc/Compiler.java | 1 + .../kickc/model/DominatorsBlock.java | 20 +- .../Pass2DuplicateRValueIdentification.java | 140 +- .../ref/complex/clearscreen/clearscreen.asm | 110 +- .../ref/complex/clearscreen/clearscreen.cfg | 479 +- .../ref/complex/clearscreen/clearscreen.log | 4263 +++++++------- .../ref/complex/clearscreen/clearscreen.sym | 190 +- .../ref/complex/nes-balls/kickballs-2.asm | 34 +- .../ref/complex/nes-balls/kickballs-2.cfg | 153 +- .../ref/complex/nes-balls/kickballs-2.log | 1506 +++-- .../ref/complex/nes-balls/kickballs-2.sym | 52 +- .../ref/complex/splines/truetype-splines.asm | 203 +- .../ref/complex/splines/truetype-splines.cfg | 517 +- .../ref/complex/splines/truetype-splines.log | 5079 ++++++++--------- .../ref/complex/splines/truetype-splines.sym | 329 +- src/test/ref/condition-integer-4.asm | 52 +- src/test/ref/condition-integer-4.cfg | 32 +- src/test/ref/condition-integer-4.log | 421 +- src/test/ref/condition-integer-4.sym | 24 +- .../ref/examples/sinplotter/sine-plotter.asm | 83 +- .../ref/examples/sinplotter/sine-plotter.cfg | 309 +- .../ref/examples/sinplotter/sine-plotter.log | 2808 +++++---- .../ref/examples/sinplotter/sine-plotter.sym | 129 +- src/test/ref/hex2dec.asm | 5 +- src/test/ref/hex2dec.cfg | 25 +- src/test/ref/hex2dec.log | 308 +- src/test/ref/hex2dec.sym | 14 +- src/test/ref/index-sizeof-reuse-2.asm | 14 +- src/test/ref/index-sizeof-reuse-2.cfg | 20 +- src/test/ref/index-sizeof-reuse-2.log | 232 +- src/test/ref/index-sizeof-reuse-2.sym | 12 +- src/test/ref/index-sizeof-reuse.asm | 8 +- src/test/ref/index-sizeof-reuse.cfg | 36 +- src/test/ref/index-sizeof-reuse.log | 379 +- src/test/ref/index-sizeof-reuse.sym | 12 +- src/test/ref/line-anim.asm | 20 +- src/test/ref/line-anim.cfg | 151 +- src/test/ref/line-anim.log | 1244 ++-- src/test/ref/line-anim.sym | 9 +- src/test/ref/linegen.asm | 22 +- src/test/ref/linegen.cfg | 204 +- src/test/ref/linegen.log | 1858 +++--- src/test/ref/linegen.sym | 44 +- src/test/ref/loophead-problem-2.asm | 23 +- src/test/ref/loophead-problem-2.cfg | 15 +- src/test/ref/loophead-problem-2.log | 204 +- src/test/ref/loophead-problem-2.sym | 12 +- src/test/ref/subexpr-optimize-4.asm | 14 +- src/test/ref/subexpr-optimize-4.cfg | 25 +- src/test/ref/subexpr-optimize-4.log | 240 +- src/test/ref/subexpr-optimize-4.sym | 10 +- 57 files changed, 11952 insertions(+), 12609 deletions(-) create mode 100644 src/main/fragment/mos6502-common/vwum1=vwum2_plus_pwuc1_derefidx_vbuxx.asm diff --git a/src/main/fragment/cache/fragment-cache-csg65ce02.asm b/src/main/fragment/cache/fragment-cache-csg65ce02.asm index bcb319d64..4c760b0fb 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 11e0585d5e 11e05876ff +//KICKC FRAGMENT CACHE 12011d8c00 12011da5a7 //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 8a2d3a957..fbba3f166 100644 --- a/src/main/fragment/cache/fragment-cache-mega45gs02.asm +++ b/src/main/fragment/cache/fragment-cache-mega45gs02.asm @@ -1,19 +1,67 @@ -//KICKC FRAGMENT CACHE 11e0585d5e 11e05876ff -//FRAGMENT vbuz1=vbuc1 -lda #{c1} -sta {z1} +//KICKC FRAGMENT CACHE 12011d8c00 12011da5a7 +//FRAGMENT _deref_pbuc1=vbuc2 +lda #{c2} +sta {c1} +//FRAGMENT _deref_pbuc1=_deref_pbuc1_bor_vbuc2 +lda #{c2} +ora {c1} +sta {c1} //FRAGMENT pbuz1=pbuc1 lda #<{c1} sta {z1} lda #>{c1} sta {z1}+1 -//FRAGMENT _deref_pbuc1=_deref_pbuc1_bor_vbuc2 -lda #{c2} -ora {c1} -sta {c1} -//FRAGMENT _deref_pbuc1=vbuc2 -lda #{c2} +//FRAGMENT pbuz1_lt_pbuc1_then_la1 +lda {z1}+1 +cmp #>{c1} +bcc {la1} +bne !+ +lda {z1} +cmp #<{c1} +bcc {la1} +!: +//FRAGMENT _deref_pbuc1=_deref_pbuc2 +lda {c2} sta {c1} +//FRAGMENT vbuz1=_lo_pbuz2 +lda {z2} +sta {z1} +//FRAGMENT _deref_pbuz1=vbuz2 +lda {z2} +ldy #0 +sta ({z1}),y +//FRAGMENT pbuz1=_inc_pbuz1 +inw {z1} +//FRAGMENT _deref_pbuz1=vbuc1 +lda #{c1} +ldy #0 +sta ({z1}),y +//FRAGMENT vbuaa=_lo_pbuz1 +lda {z1} +//FRAGMENT vbuxx=_lo_pbuz1 +ldx {z1} +//FRAGMENT _deref_pbuz1=vbuaa +ldy #0 +sta ({z1}),y +//FRAGMENT _deref_pbuz1=vbuxx +txa +ldy #0 +sta ({z1}),y +//FRAGMENT _deref_pbuz1=vbuyy +tya +ldy #0 +sta ({z1}),y +//FRAGMENT _deref_pbuz1=vbuzz +tza +ldy #0 +sta ({z1}),y +//FRAGMENT vbuyy=_lo_pbuz1 +ldy {z1} +//FRAGMENT vbuzz=_lo_pbuz1 +ldz {z1} +//FRAGMENT vbuz1=vbuc1 +lda #{c1} +sta {z1} //FRAGMENT vbuz1=_inc_vbuz1 inc {z1} //FRAGMENT vbuz1=vbuz2 @@ -40,8 +88,6 @@ dec {z1} ldy #0 lda ({z2}),y sta {z1} -//FRAGMENT pbuz1=_inc_pbuz1 -inw {z1} //FRAGMENT vbuz1_neq_0_then_la1 lda {z1} cmp #0 @@ -134,10 +180,6 @@ bne {la1} lda {z1} cmp #<{c1} bne {la1} -//FRAGMENT _deref_pbuz1=vbuc1 -lda #{c1} -ldy #0 -sta ({z1}),y //FRAGMENT vbuaa=vbuz1 lda {z1} //FRAGMENT vbuxx=vbuz1 @@ -1248,10 +1290,6 @@ sta {z1} lda #0 adc {z2}+1 sta {z1}+1 -//FRAGMENT _deref_pbuz1=vbuz2 -lda {z2} -ldy #0 -sta ({z1}),y //FRAGMENT vbuaa=_deref_pbuc1_plus_1 lda {c1} inc @@ -1287,18 +1325,6 @@ sta ({z1}),y txa ldz {z2} sta ({z1}),z -//FRAGMENT _deref_pbuz1=vbuxx -txa -ldy #0 -sta ({z1}),y -//FRAGMENT _deref_pbuz1=vbuyy -tya -ldy #0 -sta ({z1}),y -//FRAGMENT _deref_pbuz1=vbuzz -tza -ldy #0 -sta ({z1}),y //FRAGMENT pbuz1_derefidx_vbuz2=vbuyy tya ldy {z2} @@ -1510,9 +1536,6 @@ tay tza sty $ff ora $ff -//FRAGMENT _deref_pbuc1=_deref_pbuc2 -lda {c2} -sta {c1} //FRAGMENT vduz1=vduc1 lda #<{c1} sta {z1} diff --git a/src/main/fragment/cache/fragment-cache-mos6502.asm b/src/main/fragment/cache/fragment-cache-mos6502.asm index 818b0a7dc..341eafc2e 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 11e0585d5e 11e05876ff +//KICKC FRAGMENT CACHE 12011d8c00 12011da5a7 //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 0774c0039..66292acb3 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 11e0585d5e 11e05876ff +//KICKC FRAGMENT CACHE 12011d8c00 12011da5a7 //FRAGMENT vbuz1=vbuc1 lda #{c1} sta {z1} @@ -3909,296 +3909,6 @@ sta {c1},x lda ({z2}),y ldx {z1} sta {c1},x -//FRAGMENT _deref_pbuc1_neq_vbuc2_then_la1 -lda #{c2} -cmp {c1} -bne {la1} -//FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuz2)=vbuc2 -lda #{c2} -ldx {z2} -ldy {c1},x -sta ({z1}),y -//FRAGMENT pbsc1_derefidx_vbuz1=pbsc1_derefidx_vbuz1_plus_pbsc2_derefidx_vbuz1 -ldy {z1} -clc -lda {c1},y -adc {c2},y -sta {c1},y -//FRAGMENT pbsc1_derefidx_vbuz1_lt_0_then_la1 -ldy {z1} -lda {c1},y -cmp #0 -bmi {la1} -//FRAGMENT pbsc1_derefidx_vbuz1_lt_vbsc2_then_la1 -ldy {z1} -lda {c1},y -sec -sbc #{c2} -bvc !+ -eor #$80 -!: -bmi {la1} -//FRAGMENT vbsz1=_neg_pbsc1_derefidx_vbuz2 -ldy {z2} -lda {c1},y -eor #$ff -clc -adc #$01 -sta {z1} -//FRAGMENT pbsc1_derefidx_vbuz1=vbsz2 -lda {z2} -ldy {z1} -sta {c1},y -//FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuz2)=pbuc2_derefidx_vbuz2 -ldx {z2} -lda {c2},x -ldy {c1},x -sta ({z1}),y -//FRAGMENT vbuz1=vbuaa_plus_vbuz2 -clc -adc {z2} -sta {z1} -//FRAGMENT vbuz1=vbuaa_plus_vbuxx -stx $ff -clc -adc $ff -sta {z1} -//FRAGMENT vbuz1=vbuaa_plus_vbuyy -sty $ff -clc -adc $ff -sta {z1} -//FRAGMENT vbuaa=vbuaa_plus_vbuz1 -clc -adc {z1} -//FRAGMENT vbuaa=vbuaa_plus_vbuxx -stx $ff -clc -adc $ff -//FRAGMENT vbuaa=vbuaa_plus_vbuyy -sty $ff -clc -adc $ff -//FRAGMENT vbuxx=vbuaa_plus_vbuz1 -clc -adc {z1} -tax -//FRAGMENT vbuxx=vbuaa_plus_vbuxx -stx $ff -clc -adc $ff -tax -//FRAGMENT vbuxx=vbuaa_plus_vbuyy -sty $ff -clc -adc $ff -tax -//FRAGMENT vbuyy=vbuaa_plus_vbuz1 -clc -adc {z1} -tay -//FRAGMENT vbuyy=vbuaa_plus_vbuxx -stx $ff -clc -adc $ff -tay -//FRAGMENT vbuyy=vbuaa_plus_vbuyy -sty $ff -clc -adc $ff -tay -//FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuaa)=vbuc2 -tax -lda #{c2} -ldy {c1},x -sta ({z1}),y -//FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuxx)=vbuc2 -lda #{c2} -ldy {c1},x -sta ({z1}),y -//FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuyy)=vbuc2 -tya -tax -lda #{c2} -ldy {c1},x -sta ({z1}),y -//FRAGMENT pbsc1_derefidx_vbuxx=pbsc1_derefidx_vbuxx_plus_pbsc2_derefidx_vbuxx -clc -lda {c1},x -adc {c2},x -sta {c1},x -//FRAGMENT pbsc1_derefidx_vbuxx_lt_0_then_la1 -lda {c1},x -cmp #0 -bmi {la1} -//FRAGMENT pbsc1_derefidx_vbuxx_lt_vbsc2_then_la1 -lda {c1},x -sec -sbc #{c2} -bvc !+ -eor #$80 -!: -bmi {la1} -//FRAGMENT vbsz1=_neg_pbsc1_derefidx_vbuaa -tay -lda {c1},y -eor #$ff -clc -adc #$01 -sta {z1} -//FRAGMENT vbsz1=_neg_pbsc1_derefidx_vbuxx -lda {c1},x -eor #$ff -clc -adc #$01 -sta {z1} -//FRAGMENT vbsz1=_neg_pbsc1_derefidx_vbuyy -lda {c1},y -eor #$ff -clc -adc #$01 -sta {z1} -//FRAGMENT vbsaa=_neg_pbsc1_derefidx_vbuz1 -ldy {z1} -lda {c1},y -eor #$ff -clc -adc #$01 -//FRAGMENT vbsaa=_neg_pbsc1_derefidx_vbuaa -tay -lda {c1},y -eor #$ff -clc -adc #$01 -//FRAGMENT vbsaa=_neg_pbsc1_derefidx_vbuxx -lda {c1},x -eor #$ff -clc -adc #$01 -//FRAGMENT vbsaa=_neg_pbsc1_derefidx_vbuyy -lda {c1},y -eor #$ff -clc -adc #$01 -//FRAGMENT vbsxx=_neg_pbsc1_derefidx_vbuz1 -ldx {z1} -lda {c1},x -eor #$ff -clc -adc #$01 -tax -//FRAGMENT vbsxx=_neg_pbsc1_derefidx_vbuaa -tax -lda {c1},x -eor #$ff -clc -adc #$01 -tax -//FRAGMENT vbsxx=_neg_pbsc1_derefidx_vbuxx -lda {c1},x -eor #$ff -clc -adc #$01 -tax -//FRAGMENT vbsxx=_neg_pbsc1_derefidx_vbuyy -lda {c1},y -eor #$ff -clc -adc #$01 -tax -//FRAGMENT vbsyy=_neg_pbsc1_derefidx_vbuz1 -ldy {z1} -lda {c1},y -eor #$ff -clc -adc #$01 -tay -//FRAGMENT vbsyy=_neg_pbsc1_derefidx_vbuaa -tay -lda {c1},y -eor #$ff -clc -adc #$01 -tay -//FRAGMENT vbsyy=_neg_pbsc1_derefidx_vbuxx -lda {c1},x -eor #$ff -clc -adc #$01 -tay -//FRAGMENT vbsyy=_neg_pbsc1_derefidx_vbuyy -lda {c1},y -eor #$ff -clc -adc #$01 -tay -//FRAGMENT pbsc1_derefidx_vbuxx=vbsz1 -lda {z1} -sta {c1},x -//FRAGMENT pbsc1_derefidx_vbuyy=vbsz1 -lda {z1} -sta {c1},y -//FRAGMENT pbsc1_derefidx_vbuz1=vbsaa -ldy {z1} -sta {c1},y -//FRAGMENT pbsc1_derefidx_vbuyy=pbsc1_derefidx_vbuyy_plus_pbsc2_derefidx_vbuyy -clc -lda {c1},y -adc {c2},y -sta {c1},y -//FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuaa)=pbuc2_derefidx_vbuaa -tax -lda {c2},x -ldy {c1},x -sta ({z1}),y -//FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuxx)=pbuc2_derefidx_vbuxx -lda {c2},x -ldy {c1},x -sta ({z1}),y -//FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuyy)=pbuc2_derefidx_vbuyy -tya -tax -lda {c2},x -ldy {c1},x -sta ({z1}),y -//FRAGMENT pbsc1_derefidx_vbuz1=vbsxx -ldy {z1} -txa -sta {c1},y -//FRAGMENT pbsc1_derefidx_vbuz1=vbsyy -tya -ldy {z1} -sta {c1},y -//FRAGMENT pbsc1_derefidx_vbuaa=vbsz1 -tay -lda {z1} -sta {c1},y -//FRAGMENT pbsc1_derefidx_vbuaa=vbsxx -tay -txa -sta {c1},y -//FRAGMENT pbsc1_derefidx_vbuaa=vbsyy -tax -tya -sta {c1},x -//FRAGMENT pbsc1_derefidx_vbuxx=vbsxx -txa -sta {c1},x -//FRAGMENT pbsc1_derefidx_vbuxx=vbsyy -tya -sta {c1},x -//FRAGMENT pbsc1_derefidx_vbuyy=vbsxx -txa -sta {c1},y -//FRAGMENT pbsc1_derefidx_vbuyy=vbsyy -tya -sta {c1},y -//FRAGMENT pbsc1_derefidx_vbuxx=vbsaa -sta {c1},x -//FRAGMENT pbsc1_derefidx_vbuyy=vbsaa -sta {c1},y -//FRAGMENT vbsyy=vbsc1 -ldy #{c1} //FRAGMENT vbuz1=vbuz2_plus_vbuc1 lax {z2} axs #-[{c1}] @@ -4411,6 +4121,40 @@ bcc {la1} //FRAGMENT vbuxx=vbuz1_plus_1 ldx {z1} inx +//FRAGMENT vbuz1=vbuaa_plus_vbuz2 +clc +adc {z2} +sta {z1} +//FRAGMENT vbuaa=vbuaa_plus_vbuz1 +clc +adc {z1} +//FRAGMENT vbuxx=vbuaa_plus_vbuz1 +clc +adc {z1} +tax +//FRAGMENT vbuyy=vbuaa_plus_vbuz1 +clc +adc {z1} +tay +//FRAGMENT vbuz1=vbuaa_plus_vbuxx +stx $ff +clc +adc $ff +sta {z1} +//FRAGMENT vbuaa=vbuaa_plus_vbuxx +stx $ff +clc +adc $ff +//FRAGMENT vbuxx=vbuaa_plus_vbuxx +stx $ff +clc +adc $ff +tax +//FRAGMENT vbuyy=vbuaa_plus_vbuxx +stx $ff +clc +adc $ff +tay //FRAGMENT vwuz1=vbuaa_rol_3 sta {z1} lda #0 @@ -4443,6 +4187,25 @@ asl {z1} rol {z1}+1 asl {z1} rol {z1}+1 +//FRAGMENT vbuz1=vbuaa_plus_vbuyy +sty $ff +clc +adc $ff +sta {z1} +//FRAGMENT vbuaa=vbuaa_plus_vbuyy +sty $ff +clc +adc $ff +//FRAGMENT vbuxx=vbuaa_plus_vbuyy +sty $ff +clc +adc $ff +tax +//FRAGMENT vbuyy=vbuaa_plus_vbuyy +sty $ff +clc +adc $ff +tay //FRAGMENT vbuaa_lt_vbuz1_then_la1 cmp {z1} bcc {la1} @@ -6053,6 +5816,10 @@ tay //FRAGMENT vboz1=vboyy tya sta {z1} +//FRAGMENT _deref_pbuc1_neq_vbuc2_then_la1 +lda #{c2} +cmp {c1} +bne {la1} //FRAGMENT vbuz1=vbuc1_bor_vbuz2 lda #{c1} ora {z2} @@ -7321,16 +7088,6 @@ tax lda #{c1} eor {z1} 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 pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa ldy #{c1} tax @@ -9306,6 +9063,8 @@ bvc !+ eor #$80 !: bmi {la1} +//FRAGMENT vbsyy=vbsc1 +ldy #{c1} //FRAGMENT vwsz1=vwsz2_ror_7 // ROL once instead of RORing 7 times lda {z2} // {z2} low byte to tmp $ff @@ -9414,6 +9173,139 @@ tax ldy #0 lda ({z1}),y sta {c1},x +//FRAGMENT vbuz1=_byte_pwuc1_derefidx_vbuz2 +ldy {z2} +lda {c1},y +sta {z1} +//FRAGMENT pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_plus_1 +ldx {z1} +inc {c1},x +bne !+ +inc {c1}+1,x +!: +//FRAGMENT pwuc1_derefidx_vbuz1_lt_vbuc2_then_la1 +ldy {z1} +lda {c1}+1,y +bne !+ +lda {c1},y +cmp #{c2} +bcc {la1} +!: +//FRAGMENT pwuc1_derefidx_vbuz1=vbuc2 +lda #{c2} +ldy {z1} +sta {c1},y +lda #0 +sta {c1}+1,y +//FRAGMENT pbuz1=pbuz2_plus_pwuc1_derefidx_vbuz3 +ldy {z3} +clc +lda {z2} +adc {c1},y +sta {z1} +lda {z2}+1 +adc {c1}+1,y +sta {z1}+1 +//FRAGMENT vbuaa=_byte_pwuc1_derefidx_vbuz1 +ldy {z1} +lda {c1},y +//FRAGMENT vbuxx=_byte_pwuc1_derefidx_vbuz1 +ldx {z1} +lda {c1},x +tax +//FRAGMENT vbuyy=_byte_pwuc1_derefidx_vbuz1 +ldy {z1} +lda {c1},y +tay +//FRAGMENT vbuz1=_byte_pwuc1_derefidx_vbuaa +tay +lda {c1},y +sta {z1} +//FRAGMENT vbuaa=_byte_pwuc1_derefidx_vbuaa +tay +lda {c1},y +//FRAGMENT vbuxx=_byte_pwuc1_derefidx_vbuaa +tax +lda {c1},x +tax +//FRAGMENT vbuyy=_byte_pwuc1_derefidx_vbuaa +tay +lda {c1},y +tay +//FRAGMENT vbuz1=_byte_pwuc1_derefidx_vbuxx +lda {c1},x +sta {z1} +//FRAGMENT vbuaa=_byte_pwuc1_derefidx_vbuxx +lda {c1},x +//FRAGMENT vbuxx=_byte_pwuc1_derefidx_vbuxx +lda {c1},x +tax +//FRAGMENT vbuyy=_byte_pwuc1_derefidx_vbuxx +lda {c1},x +tay +//FRAGMENT vbuz1=_byte_pwuc1_derefidx_vbuyy +lda {c1},y +sta {z1} +//FRAGMENT vbuaa=_byte_pwuc1_derefidx_vbuyy +lda {c1},y +//FRAGMENT vbuxx=_byte_pwuc1_derefidx_vbuyy +lda {c1},y +tax +//FRAGMENT vbuyy=_byte_pwuc1_derefidx_vbuyy +lda {c1},y +tay +//FRAGMENT pwuc1_derefidx_vbuxx=pwuc1_derefidx_vbuxx_plus_1 +inc {c1},x +bne !+ +inc {c1}+1,x +!: +//FRAGMENT pwuc1_derefidx_vbuxx_lt_vbuc2_then_la1 +lda {c1}+1,x +bne !+ +lda {c1},x +cmp #{c2} +bcc {la1} +!: +//FRAGMENT pwuc1_derefidx_vbuyy_lt_vbuc2_then_la1 +lda {c1}+1,y +bne !+ +lda {c1},y +cmp #{c2} +bcc {la1} +!: +//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 pbuz1=pbuz2_plus_pwuc1_derefidx_vbuxx +clc +lda {z2} +adc {c1},x +sta {z1} +lda {z2}+1 +adc {c1}+1,x +sta {z1}+1 +//FRAGMENT pbuz1=pbuz2_plus_pwuc1_derefidx_vbuyy +clc +lda {z2} +adc {c1},y +sta {z1} +lda {z2}+1 +adc {c1}+1,y +sta {z1}+1 +//FRAGMENT pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_1 +tya +tax +inc {c1},x +bne !+ +inc {c1}+1,x +!: //FRAGMENT pbsc1_derefidx_vbuz1=_deref_pbsc2 lda {c2} ldy {z1} @@ -10837,15 +10729,6 @@ sta {z1} lda #>{c1} adc #0 sta {z1}+1 -//FRAGMENT vwsz1_neq_vbsc1_then_la1 -NO_SYNTHESIS -//FRAGMENT vwsz1_neq_vwuc1_then_la1 -lda {z1}+1 -cmp #>{c1} -bne {la1} -lda {z1} -cmp #<{c1} -bne {la1} //FRAGMENT vwuz1=_word__deref_pbuc1 lda {c1} sta {z1} @@ -10893,6 +10776,9 @@ lda {z1} cmp #{c1} bcs {la1} !: +//FRAGMENT pbuc1_derefidx_vbuxx=_byte_vwuz1 +lda {z1} +sta {c1},x //FRAGMENT vwuz1=vwuz1_plus_1 inc {z1} bne !+ @@ -12711,6 +12597,316 @@ bne {la1} lda {z1} cmp #<{c1} bne {la1} +//FRAGMENT pwuc1_derefidx_vbuz1=vbuz2 +lda {z2} +ldy {z1} +sta {c1},y +lda #0 +sta {c1}+1,y +//FRAGMENT vbuz1=_deref_pbuc1_band_vbuc2 +lda #{c2} +and {c1} +sta {z1} +//FRAGMENT _deref_pbuc1_lt_vbuz1_then_la1 +lda {c1} +cmp {z1} +bcc {la1} +//FRAGMENT vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1 +lda {z1} +ldx {z2} +ldy {c2},x +cmp {c1},y +bcs {la1} +//FRAGMENT vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1 +lda {z1} +ldx {z2} +ldy {c2},x +cmp {c1},y +bcc {la1} +//FRAGMENT vbuz1=pbuc1_derefidx_(pbuc2_derefidx_vbuz2) +ldx {z2} +ldy {c2},x +ldx {c1},y +stx {z1} +//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_(pbuc3_derefidx_vbuz2) +ldx {z2} +ldy {c3},x +lda {c2},y +ldx {z1} +sta {c1},x +//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuz2 +ldy {z2} +lda {c1},y +sta {z1} +//FRAGMENT vbuz1=_hi_pwuc1_derefidx_vbuz2 +ldy {z2} +lda {c1}+1,y +sta {z1} +//FRAGMENT 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_vbuaa=vbuz1 +tay +lda {z1} +sta {c1},y +lda #0 +sta {c1}+1,y +//FRAGMENT pwuc1_derefidx_vbuaa=vbuxx +tay +txa +sta {c1},y +lda #0 +sta {c1}+1,y +//FRAGMENT pwuc1_derefidx_vbuaa=vbuyy +tax +tya +sta {c1},x +lda #0 +sta {c1}+1,x +//FRAGMENT pwuc1_derefidx_vbuxx=vbuz1 +lda {z1} +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=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 vbuaa=_deref_pbuc1_band_vbuc2 +lda #{c2} +and {c1} +//FRAGMENT vbuxx=_deref_pbuc1_band_vbuc2 +lda #{c2} +and {c1} +tax +//FRAGMENT vbuyy=_deref_pbuc1_band_vbuc2 +lda #{c2} +and {c1} +tay +//FRAGMENT _deref_pbuc1_lt_vbuaa_then_la1 +ldy {c1} +sta $ff +cpy $ff +bcc {la1} +//FRAGMENT vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuaa)_then_la1 +tax +lda {z1} +ldy {c2},x +cmp {c1},y +bcs {la1} +//FRAGMENT vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1 +lda {z1} +ldy {c2},x +cmp {c1},y +bcs {la1} +//FRAGMENT vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1 +lda {z1} +ldx {c2},y +cmp {c1},x +bcs {la1} +//FRAGMENT vbuaa_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1 +ldx {z1} +ldy {c2},x +cmp {c1},y +bcs {la1} +//FRAGMENT vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1 +lda {z1} +ldy {c2},x +cmp {c1},y +bcc {la1} +//FRAGMENT vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1 +lda {z1} +ldx {c2},y +cmp {c1},x +bcc {la1} +//FRAGMENT vbuxx_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1 +ldy {z1} +txa +ldx {c2},y +cmp {c1},x +bcc {la1} +//FRAGMENT vbuxx_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1 +txa +ldy {c2},x +cmp {c1},y +bcc {la1} +//FRAGMENT vbuxx_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1 +txa +ldx {c2},y +cmp {c1},x +bcc {la1} +//FRAGMENT vbuyy_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1 +ldx {z1} +tya +ldy {c2},x +cmp {c1},y +bcc {la1} +//FRAGMENT vbuyy_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1 +tya +ldy {c2},x +cmp {c1},y +bcc {la1} +//FRAGMENT vbuyy_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1 +tya +ldx {c2},y +cmp {c1},x +bcc {la1} +//FRAGMENT vbuaa=pbuc1_derefidx_(pbuc2_derefidx_vbuz1) +ldx {z1} +ldy {c2},x +lda {c1},y +//FRAGMENT vbuxx=pbuc1_derefidx_(pbuc2_derefidx_vbuz1) +ldx {z1} +ldy {c2},x +ldx {c1},y +//FRAGMENT vbuyy=pbuc1_derefidx_(pbuc2_derefidx_vbuz1) +ldy {z1} +ldx {c2},y +ldy {c1},x +//FRAGMENT vbuaa=_lo_pwuc1_derefidx_vbuz1 +ldy {z1} +lda {c1},y +//FRAGMENT vbuxx=_lo_pwuc1_derefidx_vbuz1 +ldx {z1} +lda {c1},x +tax +//FRAGMENT vbuyy=_lo_pwuc1_derefidx_vbuz1 +ldy {z1} +lda {c1},y +tay +//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuaa +tay +lda {c1},y +sta {z1} +//FRAGMENT vbuaa=_lo_pwuc1_derefidx_vbuaa +tay +lda {c1},y +//FRAGMENT vbuxx=_lo_pwuc1_derefidx_vbuaa +tax +lda {c1},x +tax +//FRAGMENT vbuyy=_lo_pwuc1_derefidx_vbuaa +tay +lda {c1},y +tay +//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuxx +lda {c1},x +sta {z1} +//FRAGMENT vbuaa=_lo_pwuc1_derefidx_vbuxx +lda {c1},x +//FRAGMENT vbuxx=_lo_pwuc1_derefidx_vbuxx +lda {c1},x +tax +//FRAGMENT vbuyy=_lo_pwuc1_derefidx_vbuxx +lda {c1},x +tay +//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuyy +lda {c1},y +sta {z1} +//FRAGMENT vbuaa=_lo_pwuc1_derefidx_vbuyy +lda {c1},y +//FRAGMENT vbuxx=_lo_pwuc1_derefidx_vbuyy +lda {c1},y +tax +//FRAGMENT vbuyy=_lo_pwuc1_derefidx_vbuyy +lda {c1},y +tay +//FRAGMENT vbuz1=_hi_pwuc1_derefidx_vbuxx +lda {c1}+1,x +sta {z1} +//FRAGMENT vbuaa=_hi_pwuc1_derefidx_vbuz1 +ldy {z1} +lda {c1}+1,y +//FRAGMENT vbuaa=_hi_pwuc1_derefidx_vbuxx +lda {c1}+1,x +//FRAGMENT vbuxx=_hi_pwuc1_derefidx_vbuz1 +ldx {z1} +lda {c1}+1,x +tax +//FRAGMENT vbuxx=_hi_pwuc1_derefidx_vbuxx +lda {c1}+1,x +tax +//FRAGMENT vbuyy=_hi_pwuc1_derefidx_vbuz1 +ldy {z1} +lda {c1}+1,y +tay +//FRAGMENT vbuyy=_hi_pwuc1_derefidx_vbuxx +lda {c1}+1,x +tay +//FRAGMENT vbuxx_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1 +ldy {z1} +txa +ldx {c2},y +cmp {c1},x +bcs {la1} +//FRAGMENT vbuxx_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1 +txa +ldy {c2},x +cmp {c1},y +bcs {la1} +//FRAGMENT vbuxx_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1 +txa +ldx {c2},y +cmp {c1},x +bcs {la1} +//FRAGMENT vbuyy_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1 +ldx {z1} +tya +ldy {c2},x +cmp {c1},y +bcs {la1} +//FRAGMENT vbuyy_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1 +tya +ldy {c2},x +cmp {c1},y +bcs {la1} +//FRAGMENT vbuyy_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1 +tya +ldx {c2},y +cmp {c1},x +bcs {la1} +//FRAGMENT _deref_pbuc1_lt_vbuxx_then_la1 +lda {c1} +stx $ff +cmp $ff +bcc {la1} +//FRAGMENT _deref_pbuc1_lt_vbuyy_then_la1 +ldx {c1} +sty $ff +cpx $ff +bcc {la1} +//FRAGMENT vbsxx=pbsc1_derefidx_vbuyy +ldx {c1},y //FRAGMENT pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuc2 ldx {z1} ldy #{c2} @@ -12875,14 +13071,6 @@ eor #$ff sec adc {z1} sta {z1} -//FRAGMENT vwsz1=vwsz1_minus_vwsc1 -lda {z1} -sec -sbc #<{c1} -sta {z1} -lda {z1}+1 -sbc #>{c1} -sta {z1}+1 //FRAGMENT vbsz1=pbsc1_derefidx_vbuz2_minus_pbsc2_derefidx_vbuz2 ldy {z2} lda {c1},y @@ -13100,23 +13288,6 @@ cmp {z2} beq {la1} !: bcc {la1} -//FRAGMENT vduz1=vwuz2_dword_vwuc1 -lda #<{c1} -sta {z1} -lda #>{c1} -sta {z1}+1 -lda {z2} -sta {z1}+2 -lda {z2}+1 -sta {z1}+3 -//FRAGMENT vwuz1=vwuz1_minus_vbuc1 -sec -lda {z1} -sbc #{c1} -sta {z1} -lda {z1}+1 -sbc #0 -sta {z1}+1 //FRAGMENT vbuz1=vbuz2_plus_pbuc1_derefidx_vbuz3 lda {z2} ldy {z3} @@ -14029,248 +14200,6 @@ sta {c1},x ldx {c3},y lda {c2},x sta {c1},y -//FRAGMENT vbuz1=_deref_pbuc1_band_vbuc2 -lda #{c2} -and {c1} -sta {z1} -//FRAGMENT _deref_pbuc1_lt_vbuz1_then_la1 -lda {c1} -cmp {z1} -bcc {la1} -//FRAGMENT vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1 -lda {z1} -ldx {z2} -ldy {c2},x -cmp {c1},y -bcs {la1} -//FRAGMENT vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1 -lda {z1} -ldx {z2} -ldy {c2},x -cmp {c1},y -bcc {la1} -//FRAGMENT vbuz1=pbuc1_derefidx_(pbuc2_derefidx_vbuz2) -ldx {z2} -ldy {c2},x -ldx {c1},y -stx {z1} -//FRAGMENT pbuc1_derefidx_vbuz1=pbuc2_derefidx_(pbuc3_derefidx_vbuz2) -ldx {z2} -ldy {c3},x -lda {c2},y -ldx {z1} -sta {c1},x -//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuz2 -ldy {z2} -lda {c1},y -sta {z1} -//FRAGMENT vbuz1=_hi_pwuc1_derefidx_vbuz2 -ldy {z2} -lda {c1}+1,y -sta {z1} -//FRAGMENT vbuaa=_deref_pbuc1_band_vbuc2 -lda #{c2} -and {c1} -//FRAGMENT vbuxx=_deref_pbuc1_band_vbuc2 -lda #{c2} -and {c1} -tax -//FRAGMENT vbuyy=_deref_pbuc1_band_vbuc2 -lda #{c2} -and {c1} -tay -//FRAGMENT _deref_pbuc1_lt_vbuaa_then_la1 -ldy {c1} -sta $ff -cpy $ff -bcc {la1} -//FRAGMENT vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuaa)_then_la1 -tax -lda {z1} -ldy {c2},x -cmp {c1},y -bcs {la1} -//FRAGMENT vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1 -lda {z1} -ldy {c2},x -cmp {c1},y -bcs {la1} -//FRAGMENT vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1 -lda {z1} -ldx {c2},y -cmp {c1},x -bcs {la1} -//FRAGMENT vbuaa_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1 -ldx {z1} -ldy {c2},x -cmp {c1},y -bcs {la1} -//FRAGMENT vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1 -lda {z1} -ldy {c2},x -cmp {c1},y -bcc {la1} -//FRAGMENT vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1 -lda {z1} -ldx {c2},y -cmp {c1},x -bcc {la1} -//FRAGMENT vbuxx_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1 -ldy {z1} -txa -ldx {c2},y -cmp {c1},x -bcc {la1} -//FRAGMENT vbuxx_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1 -txa -ldy {c2},x -cmp {c1},y -bcc {la1} -//FRAGMENT vbuxx_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1 -txa -ldx {c2},y -cmp {c1},x -bcc {la1} -//FRAGMENT vbuyy_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1 -ldx {z1} -tya -ldy {c2},x -cmp {c1},y -bcc {la1} -//FRAGMENT vbuyy_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1 -tya -ldy {c2},x -cmp {c1},y -bcc {la1} -//FRAGMENT vbuyy_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1 -tya -ldx {c2},y -cmp {c1},x -bcc {la1} -//FRAGMENT vbuaa=pbuc1_derefidx_(pbuc2_derefidx_vbuz1) -ldx {z1} -ldy {c2},x -lda {c1},y -//FRAGMENT vbuxx=pbuc1_derefidx_(pbuc2_derefidx_vbuz1) -ldx {z1} -ldy {c2},x -ldx {c1},y -//FRAGMENT vbuyy=pbuc1_derefidx_(pbuc2_derefidx_vbuz1) -ldy {z1} -ldx {c2},y -ldy {c1},x -//FRAGMENT vbuaa=_lo_pwuc1_derefidx_vbuz1 -ldy {z1} -lda {c1},y -//FRAGMENT vbuxx=_lo_pwuc1_derefidx_vbuz1 -ldx {z1} -lda {c1},x -tax -//FRAGMENT vbuyy=_lo_pwuc1_derefidx_vbuz1 -ldy {z1} -lda {c1},y -tay -//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuaa -tay -lda {c1},y -sta {z1} -//FRAGMENT vbuaa=_lo_pwuc1_derefidx_vbuaa -tay -lda {c1},y -//FRAGMENT vbuxx=_lo_pwuc1_derefidx_vbuaa -tax -lda {c1},x -tax -//FRAGMENT vbuyy=_lo_pwuc1_derefidx_vbuaa -tay -lda {c1},y -tay -//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuxx -lda {c1},x -sta {z1} -//FRAGMENT vbuaa=_lo_pwuc1_derefidx_vbuxx -lda {c1},x -//FRAGMENT vbuxx=_lo_pwuc1_derefidx_vbuxx -lda {c1},x -tax -//FRAGMENT vbuyy=_lo_pwuc1_derefidx_vbuxx -lda {c1},x -tay -//FRAGMENT vbuz1=_lo_pwuc1_derefidx_vbuyy -lda {c1},y -sta {z1} -//FRAGMENT vbuaa=_lo_pwuc1_derefidx_vbuyy -lda {c1},y -//FRAGMENT vbuxx=_lo_pwuc1_derefidx_vbuyy -lda {c1},y -tax -//FRAGMENT vbuyy=_lo_pwuc1_derefidx_vbuyy -lda {c1},y -tay -//FRAGMENT vbuz1=_hi_pwuc1_derefidx_vbuxx -lda {c1}+1,x -sta {z1} -//FRAGMENT vbuaa=_hi_pwuc1_derefidx_vbuz1 -ldy {z1} -lda {c1}+1,y -//FRAGMENT vbuaa=_hi_pwuc1_derefidx_vbuxx -lda {c1}+1,x -//FRAGMENT vbuxx=_hi_pwuc1_derefidx_vbuz1 -ldx {z1} -lda {c1}+1,x -tax -//FRAGMENT vbuxx=_hi_pwuc1_derefidx_vbuxx -lda {c1}+1,x -tax -//FRAGMENT vbuyy=_hi_pwuc1_derefidx_vbuz1 -ldy {z1} -lda {c1}+1,y -tay -//FRAGMENT vbuyy=_hi_pwuc1_derefidx_vbuxx -lda {c1}+1,x -tay -//FRAGMENT vbuxx_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1 -ldy {z1} -txa -ldx {c2},y -cmp {c1},x -bcs {la1} -//FRAGMENT vbuxx_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1 -txa -ldy {c2},x -cmp {c1},y -bcs {la1} -//FRAGMENT vbuxx_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1 -txa -ldx {c2},y -cmp {c1},x -bcs {la1} -//FRAGMENT vbuyy_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1 -ldx {z1} -tya -ldy {c2},x -cmp {c1},y -bcs {la1} -//FRAGMENT vbuyy_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1 -tya -ldy {c2},x -cmp {c1},y -bcs {la1} -//FRAGMENT vbuyy_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1 -tya -ldx {c2},y -cmp {c1},x -bcs {la1} -//FRAGMENT _deref_pbuc1_lt_vbuxx_then_la1 -lda {c1} -stx $ff -cmp $ff -bcc {la1} -//FRAGMENT _deref_pbuc1_lt_vbuyy_then_la1 -ldx {c1} -sty $ff -cpx $ff -bcc {la1} //FRAGMENT pwsz1_lt_pwsc1_then_la1 lda {z1}+1 cmp #>{c1} @@ -14349,50 +14278,6 @@ tay clc adc {z1} sta {z1} -//FRAGMENT vduz1_neq_vduc1_then_la1 -lda {z1}+3 -cmp #>{c1}>>$10 -bne {la1} -lda {z1}+2 -cmp #<{c1}>>$10 -bne {la1} -lda {z1}+1 -cmp #>{c1} -bne {la1} -lda {z1} -cmp #<{c1} -bne {la1} -//FRAGMENT vwuz1=vwuz2_plus_vwuc1 -lda {z2} -clc -adc #<{c1} -sta {z1} -lda {z2}+1 -adc #>{c1} -sta {z1}+1 -//FRAGMENT vduz1=vduz2_sethi_vwuz3 -lda {z2} -sta {z1} -lda {z2}+1 -sta {z1}+1 -lda {z3} -sta {z1}+2 -lda {z3}+1 -sta {z1}+3 -//FRAGMENT vduz1=vduz2_setlo_vwuz3 -lda {z3} -sta {z1} -lda {z3}+1 -sta {z1}+1 -lda {z2}+2 -sta {z1}+2 -lda {z2}+3 -sta {z1}+3 -//FRAGMENT vduz1=vduz1_setlo_vwuz2 -lda {z2} -sta {z1} -lda {z2}+1 -sta {z1}+1 //FRAGMENT vbuaa=vbuaa_plus_2 clc adc #2 @@ -14747,103 +14632,6 @@ lda {z1} cmp #<{c1} bcs {la1} !: -//FRAGMENT vbuz1=_deref_pbuc1_ror_1 -lda {c1} -lsr -sta {z1} -//FRAGMENT vwuz1_ge_pwuc1_derefidx_vbuz2_then_la1 -ldy {z2} -lda {c1}+1,y -cmp {z1}+1 -bne !+ -lda {c1},y -cmp {z1} -beq {la1} -!: -bcc {la1} -//FRAGMENT _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuz1 -ldy {z1} -lda {c2},y -ldy {c1} -sty $fe -ldy {c1}+1 -sty $ff -ldy #0 -sta ($fe),y -//FRAGMENT _deref_qbuc1=_inc__deref_qbuc1 -inc {c1} -bne !+ -inc {c1}+1 -!: -//FRAGMENT vbuaa=_deref_pbuc1_ror_1 -lda {c1} -lsr -//FRAGMENT vbuxx=_deref_pbuc1_ror_1 -lda {c1} -lsr -tax -//FRAGMENT vbuyy=_deref_pbuc1_ror_1 -lda {c1} -lsr -tay -//FRAGMENT vwuz1_ge_pwuc1_derefidx_vbuaa_then_la1 -tay -lda {c1}+1,y -cmp {z1}+1 -bne !+ -lda {c1},y -cmp {z1} -beq {la1} -!: -bcc {la1} -//FRAGMENT vwuz1_ge_pwuc1_derefidx_vbuxx_then_la1 -lda {c1}+1,x -cmp {z1}+1 -bne !+ -lda {c1},x -cmp {z1} -beq {la1} -!: -bcc {la1} -//FRAGMENT vwuz1_ge_pwuc1_derefidx_vbuyy_then_la1 -lda {c1}+1,y -cmp {z1}+1 -bne !+ -lda {c1},y -cmp {z1} -beq {la1} -!: -bcc {la1} -//FRAGMENT _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuaa -tay -lda {c2},y -ldy {c1} -sty $fe -ldy {c1}+1 -sty $ff -ldy #0 -sta ($fe),y -//FRAGMENT _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuxx -lda {c2},x -ldy {c1} -sty $fe -ldy {c1}+1 -sty $ff -ldy #0 -sta ($fe),y -//FRAGMENT _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuyy -lda {c2},y -ldy {c1} -sty $fe -ldy {c1}+1 -sty $ff -ldy #0 -sta ($fe),y -//FRAGMENT vbuyy=vbuxx_bor_vbuyy -txa -sty $ff -ora $ff -tay //FRAGMENT _deref_pwuz1=vbuz2 lda {z2} ldy #0 @@ -15145,6 +14933,48 @@ sta {z1} lda {z1}+1 adc #>{c1} sta {z1}+1 +//FRAGMENT pbsc1_derefidx_vbuz1=vbsz2 +lda {z2} +ldy {z1} +sta {c1},y +//FRAGMENT pbsc1_derefidx_vbuaa=vbsz1 +tay +lda {z1} +sta {c1},y +//FRAGMENT pbsc1_derefidx_vbuxx=vbsz1 +lda {z1} +sta {c1},x +//FRAGMENT pbsc1_derefidx_vbuyy=vbsz1 +lda {z1} +sta {c1},y +//FRAGMENT pbsc1_derefidx_vbuz1=vbsxx +ldy {z1} +txa +sta {c1},y +//FRAGMENT pbsc1_derefidx_vbuaa=vbsxx +tay +txa +sta {c1},y +//FRAGMENT pbsc1_derefidx_vbuxx=vbsxx +txa +sta {c1},x +//FRAGMENT pbsc1_derefidx_vbuyy=vbsxx +txa +sta {c1},y +//FRAGMENT pbsc1_derefidx_vbuz1=vbsyy +tya +ldy {z1} +sta {c1},y +//FRAGMENT pbsc1_derefidx_vbuaa=vbsyy +tax +tya +sta {c1},x +//FRAGMENT pbsc1_derefidx_vbuxx=vbsyy +tya +sta {c1},x +//FRAGMENT pbsc1_derefidx_vbuyy=vbsyy +tya +sta {c1},y //FRAGMENT _deref_pbuc1=_deref_pbuc1_plus_vbuc2 lda #{c2} clc @@ -15338,6 +15168,15 @@ iny lda {z2} ldy #0 sta ({z1}),y +//FRAGMENT vwsz1_neq_vbsc1_then_la1 +NO_SYNTHESIS +//FRAGMENT vwsz1_neq_vwuc1_then_la1 +lda {z1}+1 +cmp #>{c1} +bne {la1} +lda {z1} +cmp #<{c1} +bne {la1} //FRAGMENT vbuz1=vbuxx_band_pbuz2_derefidx_vbuc1 ldy #{c1} txa @@ -15869,59 +15708,6 @@ lda {z1}+3 eor #$ff adc #$0 sta {z1}+3 -//FRAGMENT pwsc1_derefidx_vbuz1_ge_vwsz2_then_la1 -ldy {z1} -lda {c1},y -cmp {z2} -lda {c1}+1,y -sbc {z2}+1 -bvc !+ -eor #$80 -!: -bpl {la1} -//FRAGMENT vbuz1=_lo_pwsc1_derefidx_vbuaa -tay -lda {c1},y -sta {z1} -//FRAGMENT vbuaa=_lo_pwsc1_derefidx_vbuaa -tay -lda {c1},y -//FRAGMENT vbuxx=_lo_pwsc1_derefidx_vbuaa -tax -lda {c1},x -tax -//FRAGMENT vbuyy=_lo_pwsc1_derefidx_vbuaa -tay -lda {c1},y -tay -//FRAGMENT pwsc1_derefidx_vbuaa_ge_vwsz1_then_la1 -tay -lda {c1},y -cmp {z1} -lda {c1}+1,y -sbc {z1}+1 -bvc !+ -eor #$80 -!: -bpl {la1} -//FRAGMENT pwsc1_derefidx_vbuxx_ge_vwsz1_then_la1 -lda {c1},x -cmp {z1} -lda {c1}+1,x -sbc {z1}+1 -bvc !+ -eor #$80 -!: -bpl {la1} -//FRAGMENT pwsc1_derefidx_vbuyy_ge_vwsz1_then_la1 -lda {c1},y -cmp {z1} -lda {c1}+1,y -sbc {z1}+1 -bvc !+ -eor #$80 -!: -bpl {la1} //FRAGMENT pbuz1_derefidx_vbuz2=vbuz2 lda {z2} tay @@ -16992,6 +16778,11 @@ ldx {z1} ldy {z1}+1 //FRAGMENT vbuyy=_lo_pvoz1 ldy {z1} +//FRAGMENT vbuyy=vbuxx_bor_vbuyy +txa +sty $ff +ora $ff +tay //FRAGMENT vbsz1_eq_vbsc1_then_la1 lda #{c1} cmp {z1} @@ -17021,6 +16812,14 @@ sta {z1} lda {z2}+1 sbc #0 sta {z1}+1 +//FRAGMENT vwuz1=vwuz2_plus_vwuc1 +lda {z2} +clc +adc #<{c1} +sta {z1} +lda {z2}+1 +adc #>{c1} +sta {z1}+1 //FRAGMENT vbsaa_eq_vbsc1_then_la1 cmp #{c1} beq {la1} @@ -17361,6 +17160,11 @@ ldy {c1}+1 sty $ff ldy #0 sta ($fe),y +//FRAGMENT _deref_qbuc1=_inc__deref_qbuc1 +inc {c1} +bne !+ +inc {c1}+1 +!: //FRAGMENT _deref_(_deref_qbuc1)=vbuz1 lda {z1} ldy {c1} @@ -17392,152 +17196,6 @@ ldy {c1}+1 sty $ff ldy #0 sta ($fe),y -//FRAGMENT vwsz1=vwsz2_minus_vwsc1 -lda {z2} -sec -sbc #<{c1} -sta {z1} -lda {z2}+1 -sbc #>{c1} -sta {z1}+1 -//FRAGMENT vwsz1=_sword_pbsc1_derefidx_vbuz2 -ldy {z2} -lda {c1},y -sta {z1} -// sign-extend the byte -ora #$7f -bmi !+ -lda #0 -!: -sta {z1}+1 -//FRAGMENT vwsz1=_sword_vbsz2 -lda {z2} -sta {z1} -// sign-extend the byte -ora #$7f -bmi !+ -lda #0 -!: -sta {z1}+1 -//FRAGMENT vwsz1=vwsz2_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 vwsz1=vwsz2_ror_6 -lda {z2} -sta $ff -lda {z2}+1 -sta {z1} -lda #0 -bit {z2}+1 -bpl !+ -lda #$ff -!: -sta {z1}+1 -rol $ff -rol {z1} -rol {z1}+1 -rol $ff -rol {z1} -rol {z1}+1 -//FRAGMENT vwsz1=_deref_pwsc1 -lda {c1} -sta {z1} -lda {c1}+1 -sta {z1}+1 -//FRAGMENT vwsz1=_sword_pbsc1_derefidx_vbuaa -tay -lda {c1},y -sta {z1} -// sign-extend the byte -ora #$7f -bmi !+ -lda #0 -!: -sta {z1}+1 -//FRAGMENT vwsz1=_sword_pbsc1_derefidx_vbuxx -lda {c1},x -sta {z1} -// sign-extend the byte -ora #$7f -bmi !+ -lda #0 -!: -sta {z1}+1 -//FRAGMENT vwsz1=_sword_pbsc1_derefidx_vbuyy -lda {c1},y -sta {z1} -// sign-extend the byte -ora #$7f -bmi !+ -lda #0 -!: -sta {z1}+1 -//FRAGMENT vwsz1=_sword_vbsaa -sta {z1} -// sign-extend the byte -ora #$7f -bmi !+ -lda #0 -!: -sta {z1}+1 -//FRAGMENT vwsz1=_sword_vbsxx -txa -sta {z1} -// sign-extend the byte -ora #$7f -bmi !+ -lda #0 -!: -sta {z1}+1 -//FRAGMENT vwsz1=_sword_vbsyy -tya -sta {z1} -// sign-extend the byte -ora #$7f -bmi !+ -lda #0 -!: -sta {z1}+1 -//FRAGMENT vwsz1=vwsz2_minus_vwsz1 -lda {z2} -sec -sbc {z1} -sta {z1} -lda {z2}+1 -sbc {z1}+1 -sta {z1}+1 -//FRAGMENT vwsz1=vwsz1_ror_6 -lda {z1} -sta $ff -lda {z1}+1 -sta {z1} -lda #0 -bit {z1}+1 -bpl !+ -lda #$ff -!: -sta {z1}+1 -rol $ff -rol {z1} -rol {z1}+1 -rol $ff -rol {z1} -rol {z1}+1 -//FRAGMENT vwsz1=vwsz1_rol_3 -asl {z1} -rol {z1}+1 -asl {z1} -rol {z1}+1 -asl {z1} -rol {z1}+1 //FRAGMENT vbsz1_le_vbsc1_then_la1 lda #{c1} sec @@ -17842,120 +17500,6 @@ lda {z1} cmp #<{c1} bcc {la1} !: -//FRAGMENT vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 -ldy {z2} -sec -lda {c1},y -sbc {c2},y -sta {z1} -lda {c1}+1,y -sbc {c2}+1,y -sta {z1}+1 -//FRAGMENT vwsz1=_sword_pbuc1_derefidx_vbuz2 -ldy {z2} -lda {c1},y -sta {z1} -lda #0 -sta {z1}+1 -//FRAGMENT vwuz1=pwuc1_derefidx_vbuz2_rol_4 -ldy {z2} -lda {c1},y -asl -sta {z1} -lda {c1}+1,y -rol -sta {z1}+1 -asl {z1} -rol {z1}+1 -asl {z1} -rol {z1}+1 -asl {z1} -rol {z1}+1 -//FRAGMENT pbsc1_derefidx_vbuz1=vbsc2 -lda #{c2} -ldy {z1} -sta {c1},y -//FRAGMENT vwsz1=pwsc1_derefidx_vbuaa_minus_pwsc2_derefidx_vbuaa -tay -sec -lda {c1},y -sbc {c2},y -sta {z1} -lda {c1}+1,y -sbc {c2}+1,y -sta {z1}+1 -//FRAGMENT vwsz1=pwsc1_derefidx_vbuxx_minus_pwsc2_derefidx_vbuxx -sec -lda {c1},x -sbc {c2},x -sta {z1} -lda {c1}+1,x -sbc {c2}+1,x -sta {z1}+1 -//FRAGMENT vwsz1=pwsc1_derefidx_vbuyy_minus_pwsc2_derefidx_vbuyy -sec -lda {c1},y -sbc {c2},y -sta {z1} -lda {c1}+1,y -sbc {c2}+1,y -sta {z1}+1 -//FRAGMENT vwsz1=_sword_pbuc1_derefidx_vbuxx -lda {c1},x -sta {z1} -lda #0 -sta {z1}+1 -//FRAGMENT vwsz1=_sword_pbuc1_derefidx_vbuyy -lda {c1},y -sta {z1} -lda #0 -sta {z1}+1 -//FRAGMENT vwuz1=pwuc1_derefidx_vbuaa_rol_4 -tay -lda {c1},y -asl -sta {z1} -lda {c1}+1,y -rol -sta {z1}+1 -asl {z1} -rol {z1}+1 -asl {z1} -rol {z1}+1 -asl {z1} -rol {z1}+1 -//FRAGMENT vwuz1=pwuc1_derefidx_vbuxx_rol_4 -lda {c1},x -asl -sta {z1} -lda {c1}+1,x -rol -sta {z1}+1 -asl {z1} -rol {z1}+1 -asl {z1} -rol {z1}+1 -asl {z1} -rol {z1}+1 -//FRAGMENT vwuz1=pwuc1_derefidx_vbuyy_rol_4 -lda {c1},y -asl -sta {z1} -lda {c1}+1,y -rol -sta {z1}+1 -asl {z1} -rol {z1}+1 -asl {z1} -rol {z1}+1 -asl {z1} -rol {z1}+1 -//FRAGMENT pbsc1_derefidx_vbuxx=vbsc2 -lda #{c2} -sta {c1},x -//FRAGMENT pbsc1_derefidx_vbuyy=vbsc2 -lda #{c2} -sta {c1},y //FRAGMENT _deref_pwuc1=_deref_pwuc1_plus_vwuc2 lda #<{c2} clc @@ -18119,58 +17663,6 @@ asl {z1} rol {z1}+1 asl {z1} rol {z1}+1 -//FRAGMENT vbuz1=_byte_pwuc1_derefidx_vbuz2 -ldy {z2} -lda {c1},y -sta {z1} -//FRAGMENT vbuaa=_byte_pwuc1_derefidx_vbuz1 -ldy {z1} -lda {c1},y -//FRAGMENT vbuxx=_byte_pwuc1_derefidx_vbuz1 -ldx {z1} -lda {c1},x -tax -//FRAGMENT vbuyy=_byte_pwuc1_derefidx_vbuz1 -ldy {z1} -lda {c1},y -tay -//FRAGMENT vbuz1=_byte_pwuc1_derefidx_vbuaa -tay -lda {c1},y -sta {z1} -//FRAGMENT vbuaa=_byte_pwuc1_derefidx_vbuaa -tay -lda {c1},y -//FRAGMENT vbuxx=_byte_pwuc1_derefidx_vbuaa -tax -lda {c1},x -tax -//FRAGMENT vbuyy=_byte_pwuc1_derefidx_vbuaa -tay -lda {c1},y -tay -//FRAGMENT vbuz1=_byte_pwuc1_derefidx_vbuxx -lda {c1},x -sta {z1} -//FRAGMENT vbuaa=_byte_pwuc1_derefidx_vbuxx -lda {c1},x -//FRAGMENT vbuxx=_byte_pwuc1_derefidx_vbuxx -lda {c1},x -tax -//FRAGMENT vbuyy=_byte_pwuc1_derefidx_vbuxx -lda {c1},x -tay -//FRAGMENT vbuz1=_byte_pwuc1_derefidx_vbuyy -lda {c1},y -sta {z1} -//FRAGMENT vbuaa=_byte_pwuc1_derefidx_vbuyy -lda {c1},y -//FRAGMENT vbuxx=_byte_pwuc1_derefidx_vbuyy -lda {c1},y -tax -//FRAGMENT vbuyy=_byte_pwuc1_derefidx_vbuyy -lda {c1},y -tay //FRAGMENT pprz1=_deref_qprc1 lda {c1} sta {z1} @@ -18251,172 +17743,555 @@ sta {c1},x lda #{c2} ora {c1},y sta {c1},y -//FRAGMENT pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_plus_1 -ldx {z1} -inc {c1},x -bne !+ -inc {c1}+1,x -!: -//FRAGMENT pwuc1_derefidx_vbuz1_lt_vbuc2_then_la1 -ldy {z1} -lda {c1}+1,y -bne !+ -lda {c1},y -cmp #{c2} -bcc {la1} -!: -//FRAGMENT pwuc1_derefidx_vbuz1=vbuc2 -lda #{c2} -ldy {z1} -sta {c1},y -lda #0 -sta {c1}+1,y -//FRAGMENT pbuz1=pbuz2_plus_pwuc1_derefidx_vbuz3 -ldy {z3} -clc +//FRAGMENT vwsz1=_sword_vbsz2 +lda {z2} +sta {z1} +// sign-extend the byte +ora #$7f +bmi !+ +lda #0 +!: +sta {z1}+1 +//FRAGMENT vwsz1=vwsz1_minus_vwsc1 +lda {z1} +sec +sbc #<{c1} +sta {z1} +lda {z1}+1 +sbc #>{c1} +sta {z1}+1 +//FRAGMENT vwsz1=_sword_vbsyy +tya +sta {z1} +// sign-extend the byte +ora #$7f +bmi !+ +lda #0 +!: +sta {z1}+1 +//FRAGMENT vduz1_neq_vduc1_then_la1 +lda {z1}+3 +cmp #>{c1}>>$10 +bne {la1} +lda {z1}+2 +cmp #<{c1}>>$10 +bne {la1} +lda {z1}+1 +cmp #>{c1} +bne {la1} +lda {z1} +cmp #<{c1} +bne {la1} +//FRAGMENT vduz1=vduz2_sethi_vwuz3 lda {z2} -adc {c1},y sta {z1} lda {z2}+1 -adc {c1}+1,y sta {z1}+1 -//FRAGMENT pwuc1_derefidx_vbuxx=pwuc1_derefidx_vbuxx_plus_1 -inc {c1},x -bne !+ -inc {c1}+1,x +lda {z3} +sta {z1}+2 +lda {z3}+1 +sta {z1}+3 +//FRAGMENT vduz1=vduz2_setlo_vwuz3 +lda {z3} +sta {z1} +lda {z3}+1 +sta {z1}+1 +lda {z2}+2 +sta {z1}+2 +lda {z2}+3 +sta {z1}+3 +//FRAGMENT vduz1=vduz1_setlo_vwuz2 +lda {z2} +sta {z1} +lda {z2}+1 +sta {z1}+1 +//FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuz2)=vbuc2 +lda #{c2} +ldx {z2} +ldy {c1},x +sta ({z1}),y +//FRAGMENT pbsc1_derefidx_vbuz1=pbsc1_derefidx_vbuz1_plus_pbsc2_derefidx_vbuz1 +ldy {z1} +clc +lda {c1},y +adc {c2},y +sta {c1},y +//FRAGMENT pbsc1_derefidx_vbuz1_lt_0_then_la1 +ldy {z1} +lda {c1},y +cmp #0 +bmi {la1} +//FRAGMENT pbsc1_derefidx_vbuz1_lt_vbsc2_then_la1 +ldy {z1} +lda {c1},y +sec +sbc #{c2} +bvc !+ +eor #$80 !: -//FRAGMENT pwuc1_derefidx_vbuxx_lt_vbuc2_then_la1 -lda {c1}+1,x -bne !+ +bmi {la1} +//FRAGMENT vbsz1=_neg_pbsc1_derefidx_vbuz2 +ldy {z2} +lda {c1},y +eor #$ff +clc +adc #$01 +sta {z1} +//FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuz2)=pbuc2_derefidx_vbuz2 +ldx {z2} +lda {c2},x +ldy {c1},x +sta ({z1}),y +//FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuaa)=vbuc2 +tax +lda #{c2} +ldy {c1},x +sta ({z1}),y +//FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuxx)=vbuc2 +lda #{c2} +ldy {c1},x +sta ({z1}),y +//FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuyy)=vbuc2 +tya +tax +lda #{c2} +ldy {c1},x +sta ({z1}),y +//FRAGMENT pbsc1_derefidx_vbuxx=pbsc1_derefidx_vbuxx_plus_pbsc2_derefidx_vbuxx +clc lda {c1},x -cmp #{c2} -bcc {la1} +adc {c2},x +sta {c1},x +//FRAGMENT pbsc1_derefidx_vbuxx_lt_0_then_la1 +lda {c1},x +cmp #0 +bmi {la1} +//FRAGMENT pbsc1_derefidx_vbuxx_lt_vbsc2_then_la1 +lda {c1},x +sec +sbc #{c2} +bvc !+ +eor #$80 !: -//FRAGMENT pwuc1_derefidx_vbuyy_lt_vbuc2_then_la1 -lda {c1}+1,y -bne !+ +bmi {la1} +//FRAGMENT vbsz1=_neg_pbsc1_derefidx_vbuaa +tay lda {c1},y -cmp #{c2} -bcc {la1} -!: -//FRAGMENT pwuc1_derefidx_vbuaa=vbuc2 +eor #$ff +clc +adc #$01 +sta {z1} +//FRAGMENT vbsz1=_neg_pbsc1_derefidx_vbuxx +lda {c1},x +eor #$ff +clc +adc #$01 +sta {z1} +//FRAGMENT vbsz1=_neg_pbsc1_derefidx_vbuyy +lda {c1},y +eor #$ff +clc +adc #$01 +sta {z1} +//FRAGMENT vbsaa=_neg_pbsc1_derefidx_vbuz1 +ldy {z1} +lda {c1},y +eor #$ff +clc +adc #$01 +//FRAGMENT vbsaa=_neg_pbsc1_derefidx_vbuaa tay -lda #{c2} +lda {c1},y +eor #$ff +clc +adc #$01 +//FRAGMENT vbsaa=_neg_pbsc1_derefidx_vbuxx +lda {c1},x +eor #$ff +clc +adc #$01 +//FRAGMENT vbsaa=_neg_pbsc1_derefidx_vbuyy +lda {c1},y +eor #$ff +clc +adc #$01 +//FRAGMENT vbsxx=_neg_pbsc1_derefidx_vbuz1 +ldx {z1} +lda {c1},x +eor #$ff +clc +adc #$01 +tax +//FRAGMENT vbsxx=_neg_pbsc1_derefidx_vbuaa +tax +lda {c1},x +eor #$ff +clc +adc #$01 +tax +//FRAGMENT vbsxx=_neg_pbsc1_derefidx_vbuxx +lda {c1},x +eor #$ff +clc +adc #$01 +tax +//FRAGMENT vbsxx=_neg_pbsc1_derefidx_vbuyy +lda {c1},y +eor #$ff +clc +adc #$01 +tax +//FRAGMENT vbsyy=_neg_pbsc1_derefidx_vbuz1 +ldy {z1} +lda {c1},y +eor #$ff +clc +adc #$01 +tay +//FRAGMENT vbsyy=_neg_pbsc1_derefidx_vbuaa +tay +lda {c1},y +eor #$ff +clc +adc #$01 +tay +//FRAGMENT vbsyy=_neg_pbsc1_derefidx_vbuxx +lda {c1},x +eor #$ff +clc +adc #$01 +tay +//FRAGMENT vbsyy=_neg_pbsc1_derefidx_vbuyy +lda {c1},y +eor #$ff +clc +adc #$01 +tay +//FRAGMENT pbsc1_derefidx_vbuz1=vbsaa +ldy {z1} 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} +//FRAGMENT pbsc1_derefidx_vbuyy=pbsc1_derefidx_vbuyy_plus_pbsc2_derefidx_vbuyy +clc +lda {c1},y +adc {c2},y sta {c1},y -lda #0 -sta {c1}+1,y -//FRAGMENT pbuz1=pbuz2_plus_pwuc1_derefidx_vbuaa -tay -clc -lda {z2} -adc {c1},y -sta {z1} -lda {z2}+1 -adc {c1}+1,y -sta {z1}+1 -//FRAGMENT pbuz1=pbuz2_plus_pwuc1_derefidx_vbuxx -txa -tay -clc -lda {z2} -adc {c1},y -sta {z1} -lda {z2}+1 -adc {c1}+1,y -sta {z1}+1 -//FRAGMENT pbuz1=pbuz2_plus_pwuc1_derefidx_vbuyy -clc -lda {z2} -adc {c1},y -sta {z1} -lda {z2}+1 -adc {c1}+1,y -sta {z1}+1 -//FRAGMENT pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_1 +//FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuaa)=pbuc2_derefidx_vbuaa +tax +lda {c2},x +ldy {c1},x +sta ({z1}),y +//FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuxx)=pbuc2_derefidx_vbuxx +lda {c2},x +ldy {c1},x +sta ({z1}),y +//FRAGMENT pbuz1_derefidx_(pbsc1_derefidx_vbuyy)=pbuc2_derefidx_vbuyy tya tax -inc {c1},x -bne !+ -inc {c1}+1,x -!: -//FRAGMENT pwuc1_derefidx_vbuz1=vbuz2 +lda {c2},x +ldy {c1},x +sta ({z1}),y +//FRAGMENT pbsc1_derefidx_vbuxx=vbsaa +sta {c1},x +//FRAGMENT pbsc1_derefidx_vbuyy=vbsaa +sta {c1},y +//FRAGMENT vduz1=vwuz2_dword_vwuc1 +lda #<{c1} +sta {z1} +lda #>{c1} +sta {z1}+1 lda {z2} -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_vbuaa=vbuz1 -tay +sta {z1}+2 +lda {z2}+1 +sta {z1}+3 +//FRAGMENT vwuz1=vwuz1_minus_vbuc1 +sec lda {z1} -sta {c1},y -lda #0 -sta {c1}+1,y -//FRAGMENT pwuc1_derefidx_vbuaa=vbuxx +sbc #{c1} +sta {z1} +lda {z1}+1 +sbc #0 +sta {z1}+1 +//FRAGMENT pwsc1_derefidx_vbuz1_ge_vwsz2_then_la1 +ldy {z1} +lda {c1},y +cmp {z2} +lda {c1}+1,y +sbc {z2}+1 +bvc !+ +eor #$80 +!: +bpl {la1} +//FRAGMENT vbuz1=_lo_pwsc1_derefidx_vbuaa tay -txa -sta {c1},y -lda #0 -sta {c1}+1,y -//FRAGMENT pwuc1_derefidx_vbuaa=vbuyy +lda {c1},y +sta {z1} +//FRAGMENT vbuaa=_lo_pwsc1_derefidx_vbuaa +tay +lda {c1},y +//FRAGMENT vbuxx=_lo_pwsc1_derefidx_vbuaa tax -tya -sta {c1},x +lda {c1},x +tax +//FRAGMENT vbuyy=_lo_pwsc1_derefidx_vbuaa +tay +lda {c1},y +tay +//FRAGMENT pwsc1_derefidx_vbuaa_ge_vwsz1_then_la1 +tay +lda {c1},y +cmp {z1} +lda {c1}+1,y +sbc {z1}+1 +bvc !+ +eor #$80 +!: +bpl {la1} +//FRAGMENT pwsc1_derefidx_vbuxx_ge_vwsz1_then_la1 +lda {c1},x +cmp {z1} +lda {c1}+1,x +sbc {z1}+1 +bvc !+ +eor #$80 +!: +bpl {la1} +//FRAGMENT pwsc1_derefidx_vbuyy_ge_vwsz1_then_la1 +lda {c1},y +cmp {z1} +lda {c1}+1,y +sbc {z1}+1 +bvc !+ +eor #$80 +!: +bpl {la1} +//FRAGMENT vwsz1=vwsz2_minus_vwsc1 +lda {z2} +sec +sbc #<{c1} +sta {z1} +lda {z2}+1 +sbc #>{c1} +sta {z1}+1 +//FRAGMENT vwsz1=_sword_pbsc1_derefidx_vbuz2 +ldy {z2} +lda {c1},y +sta {z1} +// sign-extend the byte +ora #$7f +bmi !+ lda #0 -sta {c1}+1,x -//FRAGMENT pwuc1_derefidx_vbuxx=vbuz1 -lda {z1} -sta {c1},x +!: +sta {z1}+1 +//FRAGMENT vwsz1=vwsz2_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 vwsz1=vwsz2_ror_6 +lda {z2} +sta $ff +lda {z2}+1 +sta {z1} lda #0 -sta {c1}+1,x -//FRAGMENT pwuc1_derefidx_vbuxx=vbuxx +bit {z2}+1 +bpl !+ +lda #$ff +!: +sta {z1}+1 +rol $ff +rol {z1} +rol {z1}+1 +rol $ff +rol {z1} +rol {z1}+1 +//FRAGMENT vwsz1=_deref_pwsc1 +lda {c1} +sta {z1} +lda {c1}+1 +sta {z1}+1 +//FRAGMENT vwsz1=_sword_pbsc1_derefidx_vbuaa +tay +lda {c1},y +sta {z1} +// sign-extend the byte +ora #$7f +bmi !+ +lda #0 +!: +sta {z1}+1 +//FRAGMENT vwsz1=_sword_pbsc1_derefidx_vbuxx +lda {c1},x +sta {z1} +// sign-extend the byte +ora #$7f +bmi !+ +lda #0 +!: +sta {z1}+1 +//FRAGMENT vwsz1=_sword_pbsc1_derefidx_vbuyy +lda {c1},y +sta {z1} +// sign-extend the byte +ora #$7f +bmi !+ +lda #0 +!: +sta {z1}+1 +//FRAGMENT vwsz1=_sword_vbsaa +sta {z1} +// sign-extend the byte +ora #$7f +bmi !+ +lda #0 +!: +sta {z1}+1 +//FRAGMENT vwsz1=_sword_vbsxx txa -sta {c1},x +sta {z1} +// sign-extend the byte +ora #$7f +bmi !+ 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 +!: +sta {z1}+1 +//FRAGMENT vwsz1=vwsz2_minus_vwsz1 +lda {z2} +sec +sbc {z1} +sta {z1} +lda {z2}+1 +sbc {z1}+1 +sta {z1}+1 +//FRAGMENT vwsz1=vwsz1_ror_6 lda {z1} -sta {c1},y +sta $ff +lda {z1}+1 +sta {z1} lda #0 -sta {c1}+1,y -//FRAGMENT pwuc1_derefidx_vbuyy=vbuxx -txa -sta {c1},y +bit {z1}+1 +bpl !+ +lda #$ff +!: +sta {z1}+1 +rol $ff +rol {z1} +rol {z1}+1 +rol $ff +rol {z1} +rol {z1}+1 +//FRAGMENT vwsz1=vwsz1_rol_3 +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1 +//FRAGMENT vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 +ldy {z2} +sec +lda {c1},y +sbc {c2},y +sta {z1} +lda {c1}+1,y +sbc {c2}+1,y +sta {z1}+1 +//FRAGMENT vwsz1=_sword_pbuc1_derefidx_vbuz2 +ldy {z2} +lda {c1},y +sta {z1} lda #0 -sta {c1}+1,y -//FRAGMENT pwuc1_derefidx_vbuyy=vbuyy -tya +sta {z1}+1 +//FRAGMENT vwuz1=pwuc1_derefidx_vbuz2_rol_4 +ldy {z2} +lda {c1},y +asl +sta {z1} +lda {c1}+1,y +rol +sta {z1}+1 +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1 +//FRAGMENT pbsc1_derefidx_vbuz1=vbsc2 +lda #{c2} +ldy {z1} sta {c1},y +//FRAGMENT vwsz1=pwsc1_derefidx_vbuaa_minus_pwsc2_derefidx_vbuaa +tay +sec +lda {c1},y +sbc {c2},y +sta {z1} +lda {c1}+1,y +sbc {c2}+1,y +sta {z1}+1 +//FRAGMENT vwsz1=pwsc1_derefidx_vbuxx_minus_pwsc2_derefidx_vbuxx +sec +lda {c1},x +sbc {c2},x +sta {z1} +lda {c1}+1,x +sbc {c2}+1,x +sta {z1}+1 +//FRAGMENT vwsz1=pwsc1_derefidx_vbuyy_minus_pwsc2_derefidx_vbuyy +sec +lda {c1},y +sbc {c2},y +sta {z1} +lda {c1}+1,y +sbc {c2}+1,y +sta {z1}+1 +//FRAGMENT vwsz1=_sword_pbuc1_derefidx_vbuxx +lda {c1},x +sta {z1} lda #0 -sta {c1}+1,y -//FRAGMENT vbsxx=pbsc1_derefidx_vbuyy -ldx {c1},y +sta {z1}+1 +//FRAGMENT vwsz1=_sword_pbuc1_derefidx_vbuyy +lda {c1},y +sta {z1} +lda #0 +sta {z1}+1 +//FRAGMENT vwuz1=pwuc1_derefidx_vbuxx_rol_4 +lda {c1},x +asl +sta {z1} +lda {c1}+1,x +rol +sta {z1}+1 +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1 +//FRAGMENT vwuz1=pwuc1_derefidx_vbuyy_rol_4 +lda {c1},y +asl +sta {z1} +lda {c1}+1,y +rol +sta {z1}+1 +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1 +//FRAGMENT pbsc1_derefidx_vbuxx=vbsc2 +lda #{c2} +sta {c1},x +//FRAGMENT pbsc1_derefidx_vbuyy=vbsc2 +lda #{c2} +sta {c1},y //FRAGMENT vbuz1=pbuc1_derefidx_vbuz2_plus_vbuc2 lda #{c2} ldy {z2} @@ -18525,6 +18400,12 @@ lda #{c2} clc adc {c1},y tay +//FRAGMENT pwuc1_derefidx_vbuaa=vbuc2 +tay +lda #{c2} +sta {c1},y +lda #0 +sta {c1}+1,y //FRAGMENT pwuc1_derefidx_vbuaa=pwuc1_derefidx_vbuaa_plus_pwuc2_derefidx_vbuaa tax tay @@ -18547,14 +18428,6 @@ lda #0 sta {z1}+1 lda {c1}+1,y sta {z1} -//FRAGMENT pwuc1_derefidx_vbuaa=pwuc1_derefidx_vbuaa_bxor_vwuc2 -tay -lda {c1},y -eor #<{c2} -sta {c1},y -lda {c1}+1,y -eor #>{c2} -sta {c1}+1,y //FRAGMENT pwuc1_derefidx_vbuxx=pwuc1_derefidx_vbuxx_bxor_vwuc2 txa tay @@ -18571,12 +18444,6 @@ sta {c1},y lda {c1}+1,y eor #>{c2} sta {c1}+1,y -//FRAGMENT vwuz1=pwuc1_derefidx_vbuaa_ror_8 -tay -lda #0 -sta {z1}+1 -lda {c1}+1,y -sta {z1} //FRAGMENT vwuz1_lt_vbuxx_then_la1 lda {z1}+1 bne !+ @@ -18613,6 +18480,26 @@ bcs {la1} dex dex stx {z1} +//FRAGMENT pbuc1_derefidx_vbuaa=_byte_vwuz1 +tay +lda {z1} +sta {c1},y +//FRAGMENT pbuc1_derefidx_vbuyy=_byte_vwuz1 +lda {z1} +sta {c1},y +//FRAGMENT pwuc1_derefidx_vbuz1=vbuaa +ldy {z1} +sta {c1},y +lda #0 +sta {c1}+1,y +//FRAGMENT pwuc1_derefidx_vbuxx=vbuaa +sta {c1},x +lda #0 +sta {c1}+1,x +//FRAGMENT pwuc1_derefidx_vbuyy=vbuaa +sta {c1},y +lda #0 +sta {c1}+1,y //FRAGMENT vbuyy=vbuz1_minus_2 ldy {z1} dey diff --git a/src/main/fragment/cache/fragment-cache-wdc65c02.asm b/src/main/fragment/cache/fragment-cache-wdc65c02.asm index 39f3e968e..5d4f021b0 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 11e0585d5e 11e05876ff +//KICKC FRAGMENT CACHE 12011d8c00 12011da5a7 //FRAGMENT vbuz1=_deref_pbuc1 lda {c1} sta {z1} diff --git a/src/main/fragment/mos6502-common/vwum1=vwum2_plus_pwuc1_derefidx_vbuxx.asm b/src/main/fragment/mos6502-common/vwum1=vwum2_plus_pwuc1_derefidx_vbuxx.asm new file mode 100644 index 000000000..acc2cd10a --- /dev/null +++ b/src/main/fragment/mos6502-common/vwum1=vwum2_plus_pwuc1_derefidx_vbuxx.asm @@ -0,0 +1,7 @@ +clc +lda {m2} +adc {c1},x +sta {m1} +lda {m2}+1 +adc {c1}+1,x +sta {m1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/Compiler.java b/src/main/java/dk/camelot64/kickc/Compiler.java index d2a9c8bfc..f6b0005a5 100644 --- a/src/main/java/dk/camelot64/kickc/Compiler.java +++ b/src/main/java/dk/camelot64/kickc/Compiler.java @@ -370,6 +370,7 @@ public class Compiler { program.clearVariableReferenceInfos(); program.clearControlFlowBlockSuccessorClosure(); program.clearStatementInfos(); + program.clearDominators(); return false; }); optimizations.add(new PassNStatementIndices(program)); diff --git a/src/main/java/dk/camelot64/kickc/model/DominatorsBlock.java b/src/main/java/dk/camelot64/kickc/model/DominatorsBlock.java index 3d69345c2..844c1c8b7 100644 --- a/src/main/java/dk/camelot64/kickc/model/DominatorsBlock.java +++ b/src/main/java/dk/camelot64/kickc/model/DominatorsBlock.java @@ -2,10 +2,7 @@ package dk.camelot64.kickc.model; import dk.camelot64.kickc.model.values.LabelRef; -import java.util.Collection; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; +import java.util.*; /** * The Dominators for a specific block. @@ -43,7 +40,6 @@ public class DominatorsBlock { for(LabelRef dominator : dominators) { add(dominator); } - } /** @@ -53,13 +49,7 @@ public class DominatorsBlock { * @param other The dominator set to intersect with */ public void intersect(DominatorsBlock other) { - Iterator iterator = dominators.iterator(); - while(iterator.hasNext()) { - LabelRef dominator = iterator.next(); - if(!other.contains(dominator)) { - iterator.remove(); - } - } + dominators.removeIf(dominator -> !other.contains(dominator)); } /** @@ -80,15 +70,13 @@ public class DominatorsBlock { public boolean equals(Object o) { if(this == o) return true; if(o == null || getClass() != o.getClass()) return false; - DominatorsBlock that = (DominatorsBlock) o; - - return dominators != null ? dominators.equals(that.dominators) : that.dominators == null; + return Objects.equals(dominators, that.dominators); } @Override public int hashCode() { - return dominators != null ? dominators.hashCode() : 0; + return Objects.hash(dominators); } @Override diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2DuplicateRValueIdentification.java b/src/main/java/dk/camelot64/kickc/passes/Pass2DuplicateRValueIdentification.java index a63be6573..8656d3a78 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2DuplicateRValueIdentification.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2DuplicateRValueIdentification.java @@ -1,6 +1,8 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.ControlFlowBlock; +import dk.camelot64.kickc.model.DominatorsBlock; +import dk.camelot64.kickc.model.DominatorsGraph; import dk.camelot64.kickc.model.Program; import dk.camelot64.kickc.model.iterator.ProgramValue; import dk.camelot64.kickc.model.iterator.ProgramValueHandler; @@ -13,9 +15,7 @@ import dk.camelot64.kickc.model.statements.StatementAssignment; import dk.camelot64.kickc.model.symbols.Variable; import dk.camelot64.kickc.model.values.*; -import java.util.HashSet; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; /** @@ -31,27 +31,44 @@ public class Pass2DuplicateRValueIdentification extends Pass2SsaOptimization { public boolean step() { boolean modified = false; + // Dominators are used for determining if one statement is guaranteed to be executed before another statement + DominatorsGraph dominators = getProgram().getDominators(); + + // All RValues in the program + Set rValues = new HashSet<>(); + for(ControlFlowBlock block : getGraph().getAllBlocks()) { - Set rValues = new HashSet<>(); for(Statement statement : block.getStatements()) { if(statement instanceof StatementAssignment) { - StatementAssignment assignment = (StatementAssignment) statement; - AssignmentRValue assignmentRValue = new AssignmentRValue(assignment, block); - if(!assignmentRValue.isConstant() && !assignmentRValue.isTrivial() && !assignmentRValue.isVolatile()&& !assignmentRValue.isLoadStore()) { - if(rValues.contains(assignmentRValue)) { - AssignmentRValue firstAssignment = rValues.stream().filter(assignmentRValue1 -> assignmentRValue1.equals(assignmentRValue)).findFirst().get(); - if(firstAssignment.assignment.getlValue() instanceof VariableRef) { - getLog().append("Identified duplicate assignment right side " + assignment.toString(getProgram(), false)); - assignment.setrValue1(null); - assignment.setOperator(null); - assignment.setrValue2(firstAssignment.assignment.getlValue()); - modified = true; - } else { - throw new InternalError("Complex lValue for duplicate rvalue " + firstAssignment.assignment.toString(getProgram(), false)); + StatementAssignment thisAssignment = (StatementAssignment) statement; + AssignmentWithRValue thisRValue = new AssignmentWithRValue(thisAssignment, block); + if(!thisRValue.isConstant() && !thisRValue.isTrivial() && !thisRValue.isVolatile() && !thisRValue.isLoadStore()) { + boolean duplicate = false; + for(AssignmentWithRValue otherRValue : rValues) { + if(otherRValue.isSameRValue(thisRValue)) { + // Check if any of the statements is guaranteed to be executed before the other statement + DominatorsBlock thisDominators = dominators.getDominators(thisRValue.block.getLabel()); + DominatorsBlock otherDominators = dominators.getDominators(otherRValue.block.getLabel()); + if(otherRValue.block.getLabel().equals(thisRValue.block.getLabel())) { + // The two assignments are in the same block + // Since we are visiting statements sequentially the other other assignment is guaranteed to be executed before this assignment + duplicate |= deduplicateRValue(otherRValue, thisRValue); + } else if(thisDominators.contains(otherRValue.block.getLabel())) { + // The other assignment is guaranteed to be executed before this assignment + if(scopeMatch(thisRValue.rValue1, thisRValue.block) && scopeMatch(thisRValue.rValue2, thisRValue.block)) + duplicate |= deduplicateRValue(otherRValue, thisRValue); + } else if(otherDominators.contains(thisRValue.block.getLabel())) { + // This assignment is guaranteed to be executed before the other assignment + if(scopeMatch(thisRValue.rValue1, thisRValue.block) && scopeMatch(thisRValue.rValue2, thisRValue.block)) + duplicate |= deduplicateRValue(thisRValue, otherRValue); + } } - } else { - rValues.add(assignmentRValue); } + // If not a duplicate itself - add it to the candidate pool + if(!duplicate) + rValues.add(thisRValue); + // Determine if anything is modified + modified |= duplicate; } } } @@ -59,19 +76,65 @@ public class Pass2DuplicateRValueIdentification extends Pass2SsaOptimization { return modified; } + /** + * Check that the scope of the values inside an RValue matches the scope of a block. + * We only know that a specific variable version has the same value if it is from the same scope as the block. + * Otherwise it might be modified inside some called function. + * + * @param rValue The RValue to examine (may be null) + * @param block The block to examine + * @return true if the scope match + */ + private boolean scopeMatch(RValue rValue, ControlFlowBlock block) { + if(rValue == null) + return true; + List varRefs = new ArrayList<>(); + ProgramValueIterator.execute(new ProgramValue.GenericValue(rValue), + (programValue, currentStmt, stmtIt, currentBlock) -> { + if(programValue.get() instanceof SymbolVariableRef) varRefs.add((SymbolVariableRef) programValue.get()); + } + , null, null, null); + for(SymbolVariableRef varRef : varRefs) { + Variable var = getScope().getVariable(varRef); + if(!var.getScope().getRef().equals(block.getScope())) + return false; + } + return true; + } + + /** + * De-duplicates the RValues of two assignments, where the first one is guaranteed to be called before the second one. + * Modifies the second assignment to reference the result of the first. + * + * @param firstRValue The first assignment with the RValue - guaranteed to be called before the second assignment. + * @param secondRValue A second assignment with a duplicated RValue. + * @return true if the deduplication was successful. + */ + private boolean deduplicateRValue(AssignmentWithRValue firstRValue, AssignmentWithRValue secondRValue) { + if(firstRValue.assignment.getlValue() instanceof VariableRef) { + StatementAssignment secondAssignment = secondRValue.assignment; + getLog().append("Identified duplicate assignment right side " + secondAssignment.toString(getProgram(), false)); + secondAssignment.setrValue1(null); + secondAssignment.setOperator(null); + secondAssignment.setrValue2(firstRValue.assignment.getlValue()); + return true; + } else { + throw new InternalError("Complex lValue for duplicate rvalue " + firstRValue.assignment.toString(getProgram(), false)); + } + } + /** * Represents an RValue of an assignment. - * Implements equals() and hashcode() to allow identification of duplicate RValues */ - private class AssignmentRValue { + private class AssignmentWithRValue { private ControlFlowBlock block; private StatementAssignment assignment; private RValue rValue1; private Operator operator; private RValue rValue2; - public AssignmentRValue(StatementAssignment assignment, ControlFlowBlock block) { + public AssignmentWithRValue(StatementAssignment assignment, ControlFlowBlock block) { this.block = block; this.assignment = assignment; this.rValue1 = assignment.getrValue1(); @@ -97,8 +160,8 @@ public class Pass2DuplicateRValueIdentification extends Pass2SsaOptimization { isLoadStore.set(true); } }; - ProgramValueIterator.execute(new ProgramValue.GenericValue(rValue1), loadStoreIdentificator, assignment, null, block); - ProgramValueIterator.execute(new ProgramValue.GenericValue(rValue2), loadStoreIdentificator, assignment, null, block); + ProgramValueIterator.execute(new ProgramValue.GenericValue(rValue1), loadStoreIdentificator, assignment, null, block); + ProgramValueIterator.execute(new ProgramValue.GenericValue(rValue2), loadStoreIdentificator, assignment, null, block); return isLoadStore.get(); } @@ -134,24 +197,39 @@ public class Pass2DuplicateRValueIdentification extends Pass2SsaOptimization { if(operator.equals(Operators.LOGIC_NOT)) return true; if(operator.equals(Operators.LOGIC_AND)) return true; if(operator.equals(Operators.LOGIC_OR)) return true; + if(operator.equals(Operators.HIBYTE)) return true; + if(operator.equals(Operators.LOWBYTE)) return true; return false; } - @Override - public boolean equals(Object o) { - if(this == o) return true; - if(o == null || getClass() != o.getClass()) return false; - AssignmentRValue that = (AssignmentRValue) o; + /** + * Determines if two assignment RValues are duplicates. + * + * @param that The other assignment + * @return true if the RValues are duplicates + */ + public boolean isSameRValue(AssignmentWithRValue that) { return Objects.equals(rValue1, that.rValue1) && Objects.equals(operator, that.operator) && Objects.equals(rValue2, that.rValue2); } @Override - public int hashCode() { - return Objects.hash(rValue1, operator, rValue2); + public boolean equals(Object o) { + if(this == o) return true; + if(o == null || getClass() != o.getClass()) return false; + AssignmentWithRValue that = (AssignmentWithRValue) o; + return block.equals(that.block) && + assignment.equals(that.assignment) && + Objects.equals(rValue1, that.rValue1) && + Objects.equals(operator, that.operator) && + Objects.equals(rValue2, that.rValue2); } + @Override + public int hashCode() { + return Objects.hash(block, assignment, rValue1, operator, rValue2); + } } } diff --git a/src/test/ref/complex/clearscreen/clearscreen.asm b/src/test/ref/complex/clearscreen/clearscreen.asm index c1f6ce001..f87e70d8e 100644 --- a/src/test/ref/complex/clearscreen/clearscreen.asm +++ b/src/test/ref/complex/clearscreen/clearscreen.asm @@ -289,13 +289,14 @@ main: { } // Process any chars in the PROCESSING array processChars: { - .label __12 = $1a - .label __21 = $18 - .label processing = $15 - .label bitmask = $17 + .label __12 = $1b + .label __13 = $15 + .label __21 = $19 + .label processing = $16 + .label bitmask = $18 .label i = 7 - .label xpos = $18 - .label ypos = $1c + .label xpos = $19 + .label ypos = $1d .label numActive = 8 lda #0 sta.z numActive @@ -304,6 +305,7 @@ processChars: { // PROCESSING+i lda.z i asl + sta.z __13 clc adc.z i asl @@ -413,13 +415,10 @@ processChars: { and SPRITES_XMSB sta SPRITES_XMSB __b5: - // i*2 - lda.z i - asl - tax // SPRITES_XPOS[i*2] = (char)xpos + ldy.z __13 lda.z xpos - sta SPRITES_XPOS,x + sta SPRITES_XPOS,y // processing->y>>4 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y lda (processing),y @@ -439,7 +438,8 @@ processChars: { lda.z __12 sta.z ypos // SPRITES_YPOS[i*2] = ypos - sta SPRITES_YPOS,x + ldy.z __13 + sta SPRITES_YPOS,y // if(processing->x < XPOS_LEFTMOST || processing->x > XPOS_RIGHTMOST || processing->y < YPOS_TOPMOST|| processing->y > YPOS_BOTTOMMOST ) // Move sprite ldy #1 @@ -606,16 +606,16 @@ processChars: { // Utilizes symmetry around the center // init_angle_screen(byte* zp($12) screen) init_angle_screen: { - .label __7 = $1e + .label __7 = $1f .label screen = $12 .label screen_topline = $a .label screen_bottomline = $12 - .label xw = $24 - .label yw = $27 - .label angle_w = $1e - .label ang_w = $1d - .label x = $26 - .label xb = $2b + .label xw = $25 + .label yw = $28 + .label angle_w = $1f + .label ang_w = $1e + .label x = $27 + .label xb = $2c .label y = $14 // screen_topline = screen+40*12 lda.z screen @@ -817,19 +817,19 @@ setupRasterIrq: { // Find the non-space char closest to the center of the screen // If no non-space char is found the distance will be 0xffff getCharToProcess: { - .label __8 = $29 - .label __9 = $29 - .label __11 = $29 + .label __8 = $2a + .label __9 = $2a + .label __11 = $2a .label screen_line = $12 .label dist_line = $a .label y = $14 - .label return_x = $2b + .label return_x = $2c .label return_y = 9 - .label closest_dist = $26 - .label closest_x = $2b + .label closest_dist = $27 + .label closest_x = $2c .label closest_y = 9 - .label __12 = $1e - .label __13 = $29 + .label __12 = $1f + .label __13 = $2a // screen_line = SCREEN_COPY lda.z SCREEN_COPY sta.z screen_line @@ -949,36 +949,36 @@ getCharToProcess: { jmp __b3 } // Start processing a char - by inserting it into the PROCESSING array -// startProcessing(byte zp($1d) center_x, byte zp($14) center_y) +// startProcessing(byte zp($1e) center_x, byte zp($14) center_y) startProcessing: { - .label __0 = $20 + .label __0 = $21 .label __4 = $c .label __6 = $a - .label __8 = $27 - .label __9 = $27 - .label __11 = $29 - .label __12 = $29 - .label __23 = $20 + .label __8 = $28 + .label __9 = $28 + .label __11 = $2a + .label __12 = $2a + .label __23 = $21 .label __24 = $c .label __25 = $a - .label __26 = $27 - .label __27 = $29 - .label center_x = $1d + .label __26 = $28 + .label __27 = $2a + .label center_x = $1e .label center_y = $14 .label i = 9 - .label offset = $20 - .label colPtr = $24 - .label spriteCol = $26 - .label screenPtr = $20 + .label offset = $21 + .label colPtr = $25 + .label spriteCol = $27 + .label screenPtr = $21 .label spriteData = $c .label chargenData = $a - .label spriteX = $27 - .label spriteY = $29 - .label spritePtr = $2b + .label spriteX = $28 + .label spriteY = $2a + .label spritePtr = $2c // Busy-wait while finding an empty slot in the PROCESSING array .label freeIdx = 9 - .label __33 = $22 - .label __34 = $20 + .label __33 = $23 + .label __34 = $21 ldx #$ff __b1: lda #0 @@ -1262,18 +1262,18 @@ startProcessing: { // Find the atan2(x, y) - which is the angle of the line from (0,0) to (x,y) // Finding the angle requires a binary search using CORDIC_ITERATIONS_16 // Returns the angle in hex-degrees (0=0, 0x8000=PI, 0x10000=2*PI) -// atan2_16(signed word zp($24) x, signed word zp($27) y) +// atan2_16(signed word zp($25) x, signed word zp($28) y) atan2_16: { .label __2 = $c - .label __7 = $29 + .label __7 = $2a .label yi = $c - .label xi = $29 - .label angle = $1e - .label xd = $22 - .label yd = $20 - .label return = $1e - .label x = $24 - .label y = $27 + .label xi = $2a + .label angle = $1f + .label xd = $23 + .label yd = $21 + .label return = $1f + .label x = $25 + .label y = $28 // (y>=0)?y:-y lda.z y+1 bmi !__b1+ diff --git a/src/test/ref/complex/clearscreen/clearscreen.cfg b/src/test/ref/complex/clearscreen/clearscreen.cfg index affe87710..0eecc69cd 100644 --- a/src/test/ref/complex/clearscreen/clearscreen.cfg +++ b/src/test/ref/complex/clearscreen/clearscreen.cfg @@ -131,8 +131,8 @@ processChars: scope:[processChars] from irqBottom::@1 processChars::@1: scope:[processChars] from processChars processChars::@2 [61] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 ) [61] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) - [62] (byte~) processChars::$86 ← (byte) processChars::i#10 << (byte) 1 - [63] (byte~) processChars::$87 ← (byte~) processChars::$86 + (byte) processChars::i#10 + [62] (byte~) processChars::$13 ← (byte) processChars::i#10 << (byte) 1 + [63] (byte~) processChars::$87 ← (byte~) processChars::$13 + (byte) processChars::i#10 [64] (byte~) processChars::$88 ← (byte~) processChars::$87 << (byte) 1 [65] (byte~) processChars::$89 ← (byte~) processChars::$88 + (byte) processChars::i#10 [66] (byte~) processChars::$28 ← (byte~) processChars::$89 << (byte) 1 @@ -160,406 +160,405 @@ processChars::@8: scope:[processChars] from processChars::@3 [80] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) & (byte~) processChars::$10 to:processChars::@5 processChars::@5: scope:[processChars] from processChars::@4 processChars::@8 - [81] (byte~) processChars::$13 ← (byte) processChars::i#10 << (byte) 1 - [82] *((const nomodify byte*) SPRITES_XPOS + (byte~) processChars::$13) ← (byte)(word) processChars::xpos#0 - [83] (word~) processChars::$12 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 - [84] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$12 - [85] *((const nomodify byte*) SPRITES_YPOS + (byte~) processChars::$13) ← (byte) processChars::ypos#0 - [86] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const nomodify word) XPOS_LEFTMOST) goto processChars::@6 + [81] *((const nomodify byte*) SPRITES_XPOS + (byte~) processChars::$13) ← (byte)(word) processChars::xpos#0 + [82] (word~) processChars::$12 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 + [83] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$12 + [84] *((const nomodify byte*) SPRITES_YPOS + (byte~) processChars::$13) ← (byte) processChars::ypos#0 + [85] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const nomodify word) XPOS_LEFTMOST) goto processChars::@6 to:processChars::@14 processChars::@14: scope:[processChars] from processChars::@5 - [87] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const nomodify word) XPOS_RIGHTMOST) goto processChars::@6 + [86] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const nomodify word) XPOS_RIGHTMOST) goto processChars::@6 to:processChars::@13 processChars::@13: scope:[processChars] from processChars::@14 - [88] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const nomodify word) YPOS_TOPMOST) goto processChars::@6 + [87] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const nomodify word) YPOS_TOPMOST) goto processChars::@6 to:processChars::@12 processChars::@12: scope:[processChars] from processChars::@13 - [89] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const nomodify word) YPOS_BOTTOMMOST) goto processChars::@6 + [88] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const nomodify word) YPOS_BOTTOMMOST) goto processChars::@6 to:processChars::@9 processChars::@9: scope:[processChars] from processChars::@12 - [90] (word~) processChars::$21 ← (word) processChars::xpos#0 >> (byte) 3 - [91] (byte~) processChars::$73 ← (byte)(word~) processChars::$21 - [92] (byte) processChars::xchar#0 ← (byte~) processChars::$73 - (const nomodify byte) BORDER_XPOS_LEFT/(byte) 8 - [93] (byte~) processChars::$29 ← (byte) processChars::xchar#0 << (byte) 1 - [94] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const to_nomodify word*) VXSIN + (byte~) processChars::$29) - [95] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) - [96] (byte~) processChars::$79 ← (byte) processChars::ypos#0 >> (byte) 3 - [97] (byte) processChars::ychar#0 ← (byte~) processChars::$79 - (const nomodify byte) BORDER_YPOS_TOP/(byte) 8 - [98] (byte~) processChars::$30 ← (byte) processChars::ychar#0 << (byte) 1 - [99] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const to_nomodify word*) VYSIN + (byte~) processChars::$30) - [100] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + [89] (word~) processChars::$21 ← (word) processChars::xpos#0 >> (byte) 3 + [90] (byte~) processChars::$73 ← (byte)(word~) processChars::$21 + [91] (byte) processChars::xchar#0 ← (byte~) processChars::$73 - (const nomodify byte) BORDER_XPOS_LEFT/(byte) 8 + [92] (byte~) processChars::$29 ← (byte) processChars::xchar#0 << (byte) 1 + [93] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const to_nomodify word*) VXSIN + (byte~) processChars::$29) + [94] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + [95] (byte~) processChars::$79 ← (byte) processChars::ypos#0 >> (byte) 3 + [96] (byte) processChars::ychar#0 ← (byte~) processChars::$79 - (const nomodify byte) BORDER_YPOS_TOP/(byte) 8 + [97] (byte~) processChars::$30 ← (byte) processChars::ychar#0 << (byte) 1 + [98] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const to_nomodify word*) VYSIN + (byte~) processChars::$30) + [99] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) to:processChars::@7 processChars::@7: scope:[processChars] from processChars::@6 processChars::@9 - [101] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 + [100] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 to:processChars::@2 processChars::@2: scope:[processChars] from processChars::@1 processChars::@7 - [102] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) - [103] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 - [104] if((byte) processChars::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 + [101] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) + [102] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 + [103] if((byte) processChars::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 to:processChars::@return processChars::@return: scope:[processChars] from processChars::@2 - [105] return + [104] return to:@return processChars::@6: scope:[processChars] from processChars::@12 processChars::@13 processChars::@14 processChars::@5 - [106] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE - [107] (byte~) processChars::$25 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [108] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) & (byte~) processChars::$25 + [105] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE + [106] (byte~) processChars::$25 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [107] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) & (byte~) processChars::$25 to:processChars::@7 processChars::@4: scope:[processChars] from processChars::@3 - [109] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 + [108] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 to:processChars::@5 (void()) init_angle_screen((byte*) init_angle_screen::screen) init_angle_screen: scope:[init_angle_screen] from main - [110] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c - [111] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c + [109] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c + [110] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c to:init_angle_screen::@1 init_angle_screen::@1: scope:[init_angle_screen] from init_angle_screen init_angle_screen::@4 - [112] (byte*) init_angle_screen::screen_bottomline#6 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_bottomline#0 init_angle_screen::@4/(byte*) init_angle_screen::screen_bottomline#1 ) - [112] (byte*) init_angle_screen::screen_topline#6 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_topline#0 init_angle_screen::@4/(byte*) init_angle_screen::screen_topline#1 ) - [112] (byte) init_angle_screen::y#5 ← phi( init_angle_screen/(byte) 0 init_angle_screen::@4/(byte) init_angle_screen::y#1 ) + [111] (byte*) init_angle_screen::screen_bottomline#6 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_bottomline#0 init_angle_screen::@4/(byte*) init_angle_screen::screen_bottomline#1 ) + [111] (byte*) init_angle_screen::screen_topline#6 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_topline#0 init_angle_screen::@4/(byte*) init_angle_screen::screen_topline#1 ) + [111] (byte) init_angle_screen::y#5 ← phi( init_angle_screen/(byte) 0 init_angle_screen::@4/(byte) init_angle_screen::y#1 ) to:init_angle_screen::@2 init_angle_screen::@2: scope:[init_angle_screen] from init_angle_screen::@1 init_angle_screen::@5 - [113] (byte) init_angle_screen::xb#2 ← phi( init_angle_screen::@1/(byte) $27 init_angle_screen::@5/(byte) init_angle_screen::xb#1 ) - [113] (byte) init_angle_screen::x#2 ← phi( init_angle_screen::@1/(byte) 0 init_angle_screen::@5/(byte) init_angle_screen::x#1 ) - [114] if((byte) init_angle_screen::x#2<(byte) $13+(byte) 1) goto init_angle_screen::@3 + [112] (byte) init_angle_screen::xb#2 ← phi( init_angle_screen::@1/(byte) $27 init_angle_screen::@5/(byte) init_angle_screen::xb#1 ) + [112] (byte) init_angle_screen::x#2 ← phi( init_angle_screen::@1/(byte) 0 init_angle_screen::@5/(byte) init_angle_screen::x#1 ) + [113] if((byte) init_angle_screen::x#2<(byte) $13+(byte) 1) goto init_angle_screen::@3 to:init_angle_screen::@4 init_angle_screen::@4: scope:[init_angle_screen] from init_angle_screen::@2 - [115] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 - [116] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 - [117] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#5 - [118] if((byte) init_angle_screen::y#1!=(byte) $d) goto init_angle_screen::@1 + [114] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 + [115] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 + [116] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#5 + [117] if((byte) init_angle_screen::y#1!=(byte) $d) goto init_angle_screen::@1 to:init_angle_screen::@return init_angle_screen::@return: scope:[init_angle_screen] from init_angle_screen::@4 - [119] return + [118] return to:@return init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2 - [120] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 - [121] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 - [122] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 - [123] (byte~) init_angle_screen::$5 ← (byte) init_angle_screen::y#5 << (byte) 1 - [124] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$5 w= (byte) 0 - [125] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 - [126] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 - [127] call atan2_16 - [128] (word) atan2_16::return#2 ← (word) atan2_16::return#0 + [119] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 + [120] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 + [121] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 + [122] (byte~) init_angle_screen::$5 ← (byte) init_angle_screen::y#5 << (byte) 1 + [123] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$5 w= (byte) 0 + [124] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 + [125] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 + [126] call atan2_16 + [127] (word) atan2_16::return#2 ← (word) atan2_16::return#0 to:init_angle_screen::@5 init_angle_screen::@5: scope:[init_angle_screen] from init_angle_screen::@3 - [129] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 - [130] (word~) init_angle_screen::$7 ← (word) init_angle_screen::angle_w#0 + (byte) $80 - [131] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$7 - [132] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 - [133] (byte~) init_angle_screen::$9 ← - (byte) init_angle_screen::ang_w#0 - [134] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$9 - [135] (byte~) init_angle_screen::$10 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 - [136] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$10 - [137] (byte~) init_angle_screen::$11 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 - [138] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$11 - [139] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2 - [140] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2 + [128] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 + [129] (word~) init_angle_screen::$7 ← (word) init_angle_screen::angle_w#0 + (byte) $80 + [130] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$7 + [131] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 + [132] (byte~) init_angle_screen::$9 ← - (byte) init_angle_screen::ang_w#0 + [133] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$9 + [134] (byte~) init_angle_screen::$10 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 + [135] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$10 + [136] (byte~) init_angle_screen::$11 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 + [137] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$11 + [138] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2 + [139] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2 to:init_angle_screen::@2 (void()) initSprites() initSprites: scope:[initSprites] from main::@4 - [141] phi() + [140] phi() to:initSprites::@1 initSprites::@1: scope:[initSprites] from initSprites initSprites::@2 - [142] (byte*) initSprites::sp#2 ← phi( initSprites/(const nomodify byte*) SPRITE_DATA initSprites::@2/(byte*) initSprites::sp#1 ) - [143] if((byte*) initSprites::sp#2<(const nomodify byte*) SPRITE_DATA+(const nomodify byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2 + [141] (byte*) initSprites::sp#2 ← phi( initSprites/(const nomodify byte*) SPRITE_DATA initSprites::@2/(byte*) initSprites::sp#1 ) + [142] if((byte*) initSprites::sp#2<(const nomodify byte*) SPRITE_DATA+(const nomodify byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2 to:initSprites::@3 initSprites::@3: scope:[initSprites] from initSprites::@1 initSprites::@3 - [144] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@3/(byte) initSprites::i#1 ) - [145] *((const nomodify byte*) SPRITES_COLOR + (byte) initSprites::i#2) ← (const nomodify byte) LIGHT_BLUE - [146] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 - [147] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@3 + [143] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@3/(byte) initSprites::i#1 ) + [144] *((const nomodify byte*) SPRITES_COLOR + (byte) initSprites::i#2) ← (const nomodify byte) LIGHT_BLUE + [145] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 + [146] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@3 to:initSprites::@4 initSprites::@4: scope:[initSprites] from initSprites::@3 - [148] *((const nomodify byte*) SPRITES_MC) ← (byte) 0 - [149] *((const nomodify byte*) SPRITES_EXPAND_X) ← (byte) 0 - [150] *((const nomodify byte*) SPRITES_EXPAND_Y) ← (byte) 0 + [147] *((const nomodify byte*) SPRITES_MC) ← (byte) 0 + [148] *((const nomodify byte*) SPRITES_EXPAND_X) ← (byte) 0 + [149] *((const nomodify byte*) SPRITES_EXPAND_Y) ← (byte) 0 to:initSprites::@return initSprites::@return: scope:[initSprites] from initSprites::@4 - [151] return + [150] return to:@return initSprites::@2: scope:[initSprites] from initSprites::@1 - [152] *((byte*) initSprites::sp#2) ← (byte) 0 - [153] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 + [151] *((byte*) initSprites::sp#2) ← (byte) 0 + [152] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 to:initSprites::@1 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) setupRasterIrq: scope:[setupRasterIrq] from main::@10 asm { sei } - [155] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK - [156] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO - [157] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR + [154] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK + [155] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO + [156] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR to:setupRasterIrq::@1 setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq - [158] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) & (byte) $7f + [157] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) & (byte) $7f to:setupRasterIrq::@2 setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1 - [159] *((const nomodify byte*) RASTER) ← <(const nomodify byte) RASTER_IRQ_TOP - [160] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER - [161] *((const nomodify void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0 + [158] *((const nomodify byte*) RASTER) ← <(const nomodify byte) RASTER_IRQ_TOP + [159] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER + [160] *((const nomodify void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0 asm { cli } to:setupRasterIrq::@return setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2 - [163] return + [162] return to:@return (struct ProcessingChar()) getCharToProcess() getCharToProcess: scope:[getCharToProcess] from main::@5 - [164] (byte*) getCharToProcess::screen_line#0 ← (byte*)(void*) SCREEN_COPY#0 - [165] (byte*) getCharToProcess::dist_line#0 ← (byte*)(void*) SCREEN_DIST#0 + [163] (byte*) getCharToProcess::screen_line#0 ← (byte*)(void*) SCREEN_COPY#0 + [164] (byte*) getCharToProcess::dist_line#0 ← (byte*)(void*) SCREEN_DIST#0 to:getCharToProcess::@1 getCharToProcess::@1: scope:[getCharToProcess] from getCharToProcess getCharToProcess::@9 - [166] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 ) - [166] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 ) - [166] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 ) - [166] (byte) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const nomodify byte) NOT_FOUND getCharToProcess::@9/(byte) getCharToProcess::closest_dist#10 ) - [166] (byte*) getCharToProcess::dist_line#6 ← phi( getCharToProcess/(byte*) getCharToProcess::dist_line#0 getCharToProcess::@9/(byte*) getCharToProcess::dist_line#1 ) - [166] (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(byte*) getCharToProcess::screen_line#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 ) + [165] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 ) + [165] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 ) + [165] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 ) + [165] (byte) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const nomodify byte) NOT_FOUND getCharToProcess::@9/(byte) getCharToProcess::closest_dist#10 ) + [165] (byte*) getCharToProcess::dist_line#6 ← phi( getCharToProcess/(byte*) getCharToProcess::dist_line#0 getCharToProcess::@9/(byte*) getCharToProcess::dist_line#1 ) + [165] (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(byte*) getCharToProcess::screen_line#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 ) to:getCharToProcess::@2 getCharToProcess::@2: scope:[getCharToProcess] from getCharToProcess::@1 getCharToProcess::@10 - [167] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 ) - [167] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 ) - [167] (byte) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_dist#8 getCharToProcess::@10/(byte) getCharToProcess::closest_dist#12 ) - [167] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 ) - [168] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 + [166] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 ) + [166] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 ) + [166] (byte) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_dist#8 getCharToProcess::@10/(byte) getCharToProcess::closest_dist#12 ) + [166] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 ) + [167] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 to:getCharToProcess::@4 getCharToProcess::@4: scope:[getCharToProcess] from getCharToProcess::@2 - [169] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) - [170] if((byte) getCharToProcess::dist#0>=(byte) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 + [168] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) + [169] if((byte) getCharToProcess::dist#0>=(byte) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 to:getCharToProcess::@5 getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4 - [171] (byte) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 - [172] (byte) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 + [170] (byte) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 + [171] (byte) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 to:getCharToProcess::@3 getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 - [173] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte) getCharToProcess::return_y#7 ) - [173] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte) getCharToProcess::return_x#7 ) - [173] (byte) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::return_dist#5 getCharToProcess::@12/(byte) getCharToProcess::return_dist#6 getCharToProcess::@5/(byte) getCharToProcess::dist#0 ) - [174] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 - [175] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 + [172] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte) getCharToProcess::return_y#7 ) + [172] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte) getCharToProcess::return_x#7 ) + [172] (byte) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::return_dist#5 getCharToProcess::@12/(byte) getCharToProcess::return_dist#6 getCharToProcess::@5/(byte) getCharToProcess::dist#0 ) + [173] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 + [174] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 to:getCharToProcess::@6 getCharToProcess::@6: scope:[getCharToProcess] from getCharToProcess::@3 - [176] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 - [177] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 - [178] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 - [179] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 + [175] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 + [176] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 + [177] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 + [178] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 to:getCharToProcess::@7 getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@6 - [180] if((byte) getCharToProcess::return_dist#1==(const nomodify byte) NOT_FOUND) goto getCharToProcess::@return + [179] if((byte) getCharToProcess::return_dist#1==(const nomodify byte) NOT_FOUND) goto getCharToProcess::@return to:getCharToProcess::@8 getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7 - [181] (word~) getCharToProcess::$11 ← (word)(byte) getCharToProcess::return_y#1 - [182] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$11 << (byte) 2 - [183] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$11 - [184] (word~) getCharToProcess::$8 ← (word~) getCharToProcess::$13 << (byte) 3 - [185] (byte*~) getCharToProcess::$9 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$8 - [186] *((byte*~) getCharToProcess::$9 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' + [180] (word~) getCharToProcess::$11 ← (word)(byte) getCharToProcess::return_y#1 + [181] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$11 << (byte) 2 + [182] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$11 + [183] (word~) getCharToProcess::$8 ← (word~) getCharToProcess::$13 << (byte) 3 + [184] (byte*~) getCharToProcess::$9 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$8 + [185] *((byte*~) getCharToProcess::$9 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' to:getCharToProcess::@return getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@7 getCharToProcess::@8 - [187] return + [186] return to:@return getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@6 - [188] (byte) getCharToProcess::closest_dist#10 ← (byte) getCharToProcess::return_dist#1 + [187] (byte) getCharToProcess::closest_dist#10 ← (byte) getCharToProcess::return_dist#1 to:getCharToProcess::@1 getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@3 - [189] (byte) getCharToProcess::closest_dist#12 ← (byte) getCharToProcess::return_dist#1 + [188] (byte) getCharToProcess::closest_dist#12 ← (byte) getCharToProcess::return_dist#1 to:getCharToProcess::@2 getCharToProcess::@12: scope:[getCharToProcess] from getCharToProcess::@4 - [190] (byte) getCharToProcess::return_dist#6 ← (byte) getCharToProcess::closest_dist#2 + [189] (byte) getCharToProcess::return_dist#6 ← (byte) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@2 - [191] (byte) getCharToProcess::return_dist#5 ← (byte) getCharToProcess::closest_dist#2 + [190] (byte) getCharToProcess::return_dist#5 ← (byte) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (byte) startProcessing::center_dist) startProcessing: scope:[startProcessing] from main::@6 - [192] phi() + [191] phi() to:startProcessing::@1 startProcessing::@1: scope:[startProcessing] from startProcessing startProcessing::@8 - [193] (byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) $ff startProcessing::@8/(byte) startProcessing::freeIdx#7 ) + [192] (byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) $ff startProcessing::@8/(byte) startProcessing::freeIdx#7 ) to:startProcessing::@2 startProcessing::@2: scope:[startProcessing] from startProcessing::@1 startProcessing::@3 - [194] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 ) - [195] (byte~) startProcessing::$28 ← (byte) startProcessing::i#2 << (byte) 1 - [196] (byte~) startProcessing::$29 ← (byte~) startProcessing::$28 + (byte) startProcessing::i#2 - [197] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 << (byte) 1 - [198] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 + (byte) startProcessing::i#2 - [199] (byte~) startProcessing::$21 ← (byte~) startProcessing::$31 << (byte) 1 - [200] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$21)!=(const byte) STATUS_FREE) goto startProcessing::@3 + [193] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 ) + [194] (byte~) startProcessing::$28 ← (byte) startProcessing::i#2 << (byte) 1 + [195] (byte~) startProcessing::$29 ← (byte~) startProcessing::$28 + (byte) startProcessing::i#2 + [196] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 << (byte) 1 + [197] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 + (byte) startProcessing::i#2 + [198] (byte~) startProcessing::$21 ← (byte~) startProcessing::$31 << (byte) 1 + [199] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$21)!=(const byte) STATUS_FREE) goto startProcessing::@3 to:startProcessing::@4 startProcessing::@4: scope:[startProcessing] from startProcessing::@2 startProcessing::@9 - [201] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@9/(byte) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 ) - [202] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 + [200] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@9/(byte) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 ) + [201] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 to:startProcessing::@5 startProcessing::@5: scope:[startProcessing] from startProcessing::@4 - [203] (word~) startProcessing::$23 ← (word)(byte) startProcessing::center_y#0 - [204] (word~) startProcessing::$33 ← (word~) startProcessing::$23 << (byte) 2 - [205] (word~) startProcessing::$34 ← (word~) startProcessing::$33 + (word~) startProcessing::$23 - [206] (word~) startProcessing::$0 ← (word~) startProcessing::$34 << (byte) 3 - [207] (word) startProcessing::offset#0 ← (word~) startProcessing::$0 + (byte) startProcessing::center_x#0 - [208] (byte*) startProcessing::colPtr#0 ← (const nomodify byte*) COLS + (word) startProcessing::offset#0 - [209] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) - [210] (byte*) startProcessing::screenPtr#0 ← (const nomodify byte*) SCREEN + (word) startProcessing::offset#0 - [211] (word~) startProcessing::$24 ← (word)(byte) startProcessing::freeIdx#2 - [212] (word~) startProcessing::$4 ← (word~) startProcessing::$24 << (byte) 6 - [213] (byte*) startProcessing::spriteData#0 ← (const nomodify byte*) SPRITE_DATA + (word~) startProcessing::$4 - [214] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) - [215] (word~) startProcessing::$25 ← (word)(byte) startProcessing::ch#0 - [216] (word~) startProcessing::$6 ← (word~) startProcessing::$25 << (byte) 3 - [217] (byte*) startProcessing::chargenData#0 ← (const nomodify byte*) CHARGEN + (word~) startProcessing::$6 + [202] (word~) startProcessing::$23 ← (word)(byte) startProcessing::center_y#0 + [203] (word~) startProcessing::$33 ← (word~) startProcessing::$23 << (byte) 2 + [204] (word~) startProcessing::$34 ← (word~) startProcessing::$33 + (word~) startProcessing::$23 + [205] (word~) startProcessing::$0 ← (word~) startProcessing::$34 << (byte) 3 + [206] (word) startProcessing::offset#0 ← (word~) startProcessing::$0 + (byte) startProcessing::center_x#0 + [207] (byte*) startProcessing::colPtr#0 ← (const nomodify byte*) COLS + (word) startProcessing::offset#0 + [208] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) + [209] (byte*) startProcessing::screenPtr#0 ← (const nomodify byte*) SCREEN + (word) startProcessing::offset#0 + [210] (word~) startProcessing::$24 ← (word)(byte) startProcessing::freeIdx#2 + [211] (word~) startProcessing::$4 ← (word~) startProcessing::$24 << (byte) 6 + [212] (byte*) startProcessing::spriteData#0 ← (const nomodify byte*) SPRITE_DATA + (word~) startProcessing::$4 + [213] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) + [214] (word~) startProcessing::$25 ← (word)(byte) startProcessing::ch#0 + [215] (word~) startProcessing::$6 ← (word~) startProcessing::$25 << (byte) 3 + [216] (byte*) startProcessing::chargenData#0 ← (const nomodify byte*) CHARGEN + (word~) startProcessing::$6 asm { sei } - [219] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_CHARROM + [218] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_CHARROM to:startProcessing::@6 startProcessing::@6: scope:[startProcessing] from startProcessing::@5 startProcessing::@6 - [220] (byte) startProcessing::i1#2 ← phi( startProcessing::@5/(byte) 0 startProcessing::@6/(byte) startProcessing::i1#1 ) - [220] (byte*) startProcessing::spriteData#2 ← phi( startProcessing::@5/(byte*) startProcessing::spriteData#0 startProcessing::@6/(byte*) startProcessing::spriteData#1 ) - [220] (byte*) startProcessing::chargenData#2 ← phi( startProcessing::@5/(byte*) startProcessing::chargenData#0 startProcessing::@6/(byte*) startProcessing::chargenData#1 ) - [221] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) - [222] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 - [223] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 - [224] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 - [225] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 + [219] (byte) startProcessing::i1#2 ← phi( startProcessing::@5/(byte) 0 startProcessing::@6/(byte) startProcessing::i1#1 ) + [219] (byte*) startProcessing::spriteData#2 ← phi( startProcessing::@5/(byte*) startProcessing::spriteData#0 startProcessing::@6/(byte*) startProcessing::spriteData#1 ) + [219] (byte*) startProcessing::chargenData#2 ← phi( startProcessing::@5/(byte*) startProcessing::chargenData#0 startProcessing::@6/(byte*) startProcessing::chargenData#1 ) + [220] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) + [221] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 + [222] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 + [223] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 + [224] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 to:startProcessing::@7 startProcessing::@7: scope:[startProcessing] from startProcessing::@6 - [226] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO + [225] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO asm { cli } - [228] (word~) startProcessing::$26 ← (word)(byte) startProcessing::center_x#0 - [229] (word~) startProcessing::$8 ← (word~) startProcessing::$26 << (byte) 3 - [230] (word~) startProcessing::$9 ← (const nomodify byte) BORDER_XPOS_LEFT + (word~) startProcessing::$8 - [231] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$9 << (byte) 4 - [232] (word~) startProcessing::$27 ← (word)(byte) startProcessing::center_y#0 - [233] (word~) startProcessing::$11 ← (word~) startProcessing::$27 << (byte) 3 - [234] (word~) startProcessing::$12 ← (const nomodify byte) BORDER_YPOS_TOP + (word~) startProcessing::$11 - [235] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$12 << (byte) 4 - [236] (byte) startProcessing::spritePtr#0 ← (byte)(const nomodify byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 - [237] (byte~) startProcessing::$15 ← (byte) startProcessing::freeIdx#2 << (byte) 3 - [238] (byte~) startProcessing::$36 ← (byte) startProcessing::freeIdx#2 << (byte) 1 - [239] (byte~) startProcessing::$37 ← (byte~) startProcessing::$36 + (byte) startProcessing::freeIdx#2 - [240] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 << (byte) 1 - [241] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 + (byte) startProcessing::freeIdx#2 - [242] (byte~) startProcessing::$22 ← (byte~) startProcessing::$39 << (byte) 1 - [243] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$22) ← (word) startProcessing::spriteX#0 - [244] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$22) ← (word) startProcessing::spriteY#0 - [245] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$22) ← (word)(byte~) startProcessing::$15 - [246] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$22) ← (word) $3c - [247] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$22) ← (byte) startProcessing::freeIdx#2 - [248] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$22) ← (byte) startProcessing::spritePtr#0 - [249] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$22) ← (byte) startProcessing::spriteCol#0 - [250] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$22) ← (const byte) STATUS_NEW - [251] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$22) ← (byte*) startProcessing::screenPtr#0 + [227] (word~) startProcessing::$26 ← (word)(byte) startProcessing::center_x#0 + [228] (word~) startProcessing::$8 ← (word~) startProcessing::$26 << (byte) 3 + [229] (word~) startProcessing::$9 ← (const nomodify byte) BORDER_XPOS_LEFT + (word~) startProcessing::$8 + [230] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$9 << (byte) 4 + [231] (word~) startProcessing::$27 ← (word)(byte) startProcessing::center_y#0 + [232] (word~) startProcessing::$11 ← (word~) startProcessing::$27 << (byte) 3 + [233] (word~) startProcessing::$12 ← (const nomodify byte) BORDER_YPOS_TOP + (word~) startProcessing::$11 + [234] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$12 << (byte) 4 + [235] (byte) startProcessing::spritePtr#0 ← (byte)(const nomodify byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 + [236] (byte~) startProcessing::$15 ← (byte) startProcessing::freeIdx#2 << (byte) 3 + [237] (byte~) startProcessing::$36 ← (byte) startProcessing::freeIdx#2 << (byte) 1 + [238] (byte~) startProcessing::$37 ← (byte~) startProcessing::$36 + (byte) startProcessing::freeIdx#2 + [239] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 << (byte) 1 + [240] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 + (byte) startProcessing::freeIdx#2 + [241] (byte~) startProcessing::$22 ← (byte~) startProcessing::$39 << (byte) 1 + [242] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$22) ← (word) startProcessing::spriteX#0 + [243] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$22) ← (word) startProcessing::spriteY#0 + [244] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$22) ← (word)(byte~) startProcessing::$15 + [245] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$22) ← (word) $3c + [246] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$22) ← (byte) startProcessing::freeIdx#2 + [247] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$22) ← (byte) startProcessing::spritePtr#0 + [248] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$22) ← (byte) startProcessing::spriteCol#0 + [249] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$22) ← (const byte) STATUS_NEW + [250] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$22) ← (byte*) startProcessing::screenPtr#0 to:startProcessing::@return startProcessing::@return: scope:[startProcessing] from startProcessing::@7 - [252] return + [251] return to:@return startProcessing::@8: scope:[startProcessing] from startProcessing::@4 - [253] (byte) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 + [252] (byte) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 to:startProcessing::@1 startProcessing::@3: scope:[startProcessing] from startProcessing::@2 - [254] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 - [255] if((byte) startProcessing::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto startProcessing::@2 + [253] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 + [254] if((byte) startProcessing::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto startProcessing::@2 to:startProcessing::@9 startProcessing::@9: scope:[startProcessing] from startProcessing::@3 - [256] (byte) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 + [255] (byte) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 to:startProcessing::@4 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) atan2_16: scope:[atan2_16] from init_angle_screen::@3 - [257] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 + [256] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 to:atan2_16::@2 atan2_16::@2: scope:[atan2_16] from atan2_16 - [258] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 + [257] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 to:atan2_16::@3 atan2_16::@3: scope:[atan2_16] from atan2_16::@1 atan2_16::@2 - [259] (signed word) atan2_16::yi#0 ← phi( atan2_16::@1/(signed word) atan2_16::yi#16 atan2_16::@2/(signed word~) atan2_16::$2 ) - [260] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 + [258] (signed word) atan2_16::yi#0 ← phi( atan2_16::@1/(signed word) atan2_16::yi#16 atan2_16::@2/(signed word~) atan2_16::$2 ) + [259] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 to:atan2_16::@5 atan2_16::@5: scope:[atan2_16] from atan2_16::@3 - [261] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 + [260] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 to:atan2_16::@6 atan2_16::@6: scope:[atan2_16] from atan2_16::@4 atan2_16::@5 - [262] (signed word) atan2_16::xi#0 ← phi( atan2_16::@4/(signed word) atan2_16::xi#13 atan2_16::@5/(signed word~) atan2_16::$7 ) + [261] (signed word) atan2_16::xi#0 ← phi( atan2_16::@4/(signed word) atan2_16::xi#13 atan2_16::@5/(signed word~) atan2_16::$7 ) to:atan2_16::@10 atan2_16::@10: scope:[atan2_16] from atan2_16::@19 atan2_16::@6 - [263] (word) atan2_16::angle#12 ← phi( atan2_16::@19/(word) atan2_16::angle#13 atan2_16::@6/(word) 0 ) - [263] (byte) atan2_16::i#2 ← phi( atan2_16::@19/(byte) atan2_16::i#1 atan2_16::@6/(byte) 0 ) - [263] (signed word) atan2_16::xi#3 ← phi( atan2_16::@19/(signed word) atan2_16::xi#8 atan2_16::@6/(signed word) atan2_16::xi#0 ) - [263] (signed word) atan2_16::yi#3 ← phi( atan2_16::@19/(signed word) atan2_16::yi#8 atan2_16::@6/(signed word) atan2_16::yi#0 ) - [264] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 + [262] (word) atan2_16::angle#12 ← phi( atan2_16::@19/(word) atan2_16::angle#13 atan2_16::@6/(word) 0 ) + [262] (byte) atan2_16::i#2 ← phi( atan2_16::@19/(byte) atan2_16::i#1 atan2_16::@6/(byte) 0 ) + [262] (signed word) atan2_16::xi#3 ← phi( atan2_16::@19/(signed word) atan2_16::xi#8 atan2_16::@6/(signed word) atan2_16::xi#0 ) + [262] (signed word) atan2_16::yi#3 ← phi( atan2_16::@19/(signed word) atan2_16::yi#8 atan2_16::@6/(signed word) atan2_16::yi#0 ) + [263] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 to:atan2_16::@12 atan2_16::@12: scope:[atan2_16] from atan2_16::@10 atan2_16::@19 - [265] (word) atan2_16::angle#6 ← phi( atan2_16::@10/(word) atan2_16::angle#12 atan2_16::@19/(word) atan2_16::angle#13 ) - [266] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 - [267] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 + [264] (word) atan2_16::angle#6 ← phi( atan2_16::@10/(word) atan2_16::angle#12 atan2_16::@19/(word) atan2_16::angle#13 ) + [265] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 + [266] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 to:atan2_16::@21 atan2_16::@21: scope:[atan2_16] from atan2_16::@12 - [268] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 + [267] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 to:atan2_16::@7 atan2_16::@7: scope:[atan2_16] from atan2_16::@12 atan2_16::@21 - [269] (word) atan2_16::angle#11 ← phi( atan2_16::@12/(word) atan2_16::angle#1 atan2_16::@21/(word) atan2_16::angle#4 ) - [270] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 + [268] (word) atan2_16::angle#11 ← phi( atan2_16::@12/(word) atan2_16::angle#1 atan2_16::@21/(word) atan2_16::angle#4 ) + [269] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 to:atan2_16::@9 atan2_16::@9: scope:[atan2_16] from atan2_16::@7 - [271] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 + [270] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 to:atan2_16::@8 atan2_16::@8: scope:[atan2_16] from atan2_16::@7 atan2_16::@9 - [272] (word) atan2_16::return#0 ← phi( atan2_16::@7/(word) atan2_16::angle#11 atan2_16::@9/(word) atan2_16::angle#5 ) + [271] (word) atan2_16::return#0 ← phi( atan2_16::@7/(word) atan2_16::angle#11 atan2_16::@9/(word) atan2_16::angle#5 ) to:atan2_16::@return atan2_16::@return: scope:[atan2_16] from atan2_16::@8 - [273] return + [272] return to:@return atan2_16::@11: scope:[atan2_16] from atan2_16::@10 - [274] (byte) atan2_16::shift#5 ← (byte) atan2_16::i#2 - [275] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 - [276] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 + [273] (byte) atan2_16::shift#5 ← (byte) atan2_16::i#2 + [274] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 + [275] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 to:atan2_16::@13 atan2_16::@13: scope:[atan2_16] from atan2_16::@11 atan2_16::@14 - [277] (signed word) atan2_16::yd#3 ← phi( atan2_16::@11/(signed word) atan2_16::yd#10 atan2_16::@14/(signed word) atan2_16::yd#1 ) - [277] (signed word) atan2_16::xd#3 ← phi( atan2_16::@11/(signed word) atan2_16::xd#10 atan2_16::@14/(signed word) atan2_16::xd#1 ) - [277] (byte) atan2_16::shift#2 ← phi( atan2_16::@11/(byte) atan2_16::shift#5 atan2_16::@14/(byte) atan2_16::shift#1 ) - [278] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 + [276] (signed word) atan2_16::yd#3 ← phi( atan2_16::@11/(signed word) atan2_16::yd#10 atan2_16::@14/(signed word) atan2_16::yd#1 ) + [276] (signed word) atan2_16::xd#3 ← phi( atan2_16::@11/(signed word) atan2_16::xd#10 atan2_16::@14/(signed word) atan2_16::xd#1 ) + [276] (byte) atan2_16::shift#2 ← phi( atan2_16::@11/(byte) atan2_16::shift#5 atan2_16::@14/(byte) atan2_16::shift#1 ) + [277] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 to:atan2_16::@15 atan2_16::@15: scope:[atan2_16] from atan2_16::@13 - [279] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 + [278] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 to:atan2_16::@16 atan2_16::@16: scope:[atan2_16] from atan2_16::@15 - [280] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 - [281] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 + [279] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 + [280] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 to:atan2_16::@17 atan2_16::@17: scope:[atan2_16] from atan2_16::@15 atan2_16::@16 - [282] (signed word) atan2_16::xd#5 ← phi( atan2_16::@15/(signed word) atan2_16::xd#3 atan2_16::@16/(signed word) atan2_16::xd#2 ) - [282] (signed word) atan2_16::yd#5 ← phi( atan2_16::@15/(signed word) atan2_16::yd#3 atan2_16::@16/(signed word) atan2_16::yd#2 ) - [283] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 + [281] (signed word) atan2_16::xd#5 ← phi( atan2_16::@15/(signed word) atan2_16::xd#3 atan2_16::@16/(signed word) atan2_16::xd#2 ) + [281] (signed word) atan2_16::yd#5 ← phi( atan2_16::@15/(signed word) atan2_16::yd#3 atan2_16::@16/(signed word) atan2_16::yd#2 ) + [282] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 to:atan2_16::@20 atan2_16::@20: scope:[atan2_16] from atan2_16::@17 - [284] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 - [285] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 - [286] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 - [287] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) + [283] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 + [284] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 + [285] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 + [286] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) to:atan2_16::@19 atan2_16::@19: scope:[atan2_16] from atan2_16::@18 atan2_16::@20 - [288] (signed word) atan2_16::xi#8 ← phi( atan2_16::@18/(signed word) atan2_16::xi#1 atan2_16::@20/(signed word) atan2_16::xi#2 ) - [288] (word) atan2_16::angle#13 ← phi( atan2_16::@18/(word) atan2_16::angle#2 atan2_16::@20/(word) atan2_16::angle#3 ) - [288] (signed word) atan2_16::yi#8 ← phi( atan2_16::@18/(signed word) atan2_16::yi#1 atan2_16::@20/(signed word) atan2_16::yi#2 ) - [289] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2 - [290] if((byte) atan2_16::i#1==(const nomodify byte) CORDIC_ITERATIONS_16-(byte) 1+(byte) 1) goto atan2_16::@12 + [287] (signed word) atan2_16::xi#8 ← phi( atan2_16::@18/(signed word) atan2_16::xi#1 atan2_16::@20/(signed word) atan2_16::xi#2 ) + [287] (word) atan2_16::angle#13 ← phi( atan2_16::@18/(word) atan2_16::angle#2 atan2_16::@20/(word) atan2_16::angle#3 ) + [287] (signed word) atan2_16::yi#8 ← phi( atan2_16::@18/(signed word) atan2_16::yi#1 atan2_16::@20/(signed word) atan2_16::yi#2 ) + [288] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2 + [289] if((byte) atan2_16::i#1==(const nomodify byte) CORDIC_ITERATIONS_16-(byte) 1+(byte) 1) goto atan2_16::@12 to:atan2_16::@10 atan2_16::@18: scope:[atan2_16] from atan2_16::@17 - [291] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 - [292] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 - [293] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 - [294] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) + [290] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 + [291] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 + [292] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 + [293] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) to:atan2_16::@19 atan2_16::@14: scope:[atan2_16] from atan2_16::@13 - [295] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 - [296] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 - [297] (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#2 - (byte) 2 + [294] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 + [295] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 + [296] (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#2 - (byte) 2 to:atan2_16::@13 atan2_16::@4: scope:[atan2_16] from atan2_16::@3 - [298] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 + [297] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 to:atan2_16::@6 atan2_16::@1: scope:[atan2_16] from atan2_16 - [299] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 + [298] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 to:atan2_16::@3 diff --git a/src/test/ref/complex/clearscreen/clearscreen.log b/src/test/ref/complex/clearscreen/clearscreen.log index 3829e2f9b..4606987f3 100644 --- a/src/test/ref/complex/clearscreen/clearscreen.log +++ b/src/test/ref/complex/clearscreen/clearscreen.log @@ -3047,8 +3047,12 @@ Alias processChars::$28 = processChars::$90 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) malloc::size#2 (word) $3e8 Successful SSA optimization Pass2IdenticalPhiElimination +Identified duplicate assignment right side [188] (byte~) processChars::$13 ← (byte) processChars::i#10 << (byte) 1 +Successful SSA optimization Pass2DuplicateRValueIdentification Eliminating unused constant (const byte) SIZEOF_WORD Successful SSA optimization PassNEliminateUnusedVars +Alias processChars::$13 = processChars::$86 +Successful SSA optimization Pass2AliasElimination Added new block during phi lifting atan2_16::@22(between atan2_16::@19 and atan2_16::@10) Added new block during phi lifting atan2_16::@23(between atan2_16::@10 and atan2_16::@12) Added new block during phi lifting atan2_16::@24(between atan2_16::@19 and atan2_16::@12) @@ -3092,7 +3096,7 @@ CALL GRAPH Calls in [__start] to malloc:2 malloc:5 main:8 Calls in [irqBottom] to processChars:13 Calls in [main] to init_angle_screen:29 initSprites:45 setupRasterIrq:47 getCharToProcess:50 startProcessing:62 -Calls in [init_angle_screen] to atan2_16:147 +Calls in [init_angle_screen] to atan2_16:146 Created 50 initial phi equivalence classes Coalesced [4] heap_head#13 ← heap_head#0 @@ -3101,84 +3105,84 @@ Coalesced [31] main::dst#4 ← main::dst#0 Coalesced [64] main::i#3 ← main::i#1 Coalesced [68] main::src#4 ← main::src#1 Coalesced [69] main::dst#5 ← main::dst#1 -Coalesced [112] processChars::numActive#17 ← processChars::numActive#1 -Coalesced [118] processChars::i#13 ← processChars::i#1 -Coalesced [119] processChars::numActive#15 ← processChars::numActive#3 -Coalesced (already) [124] processChars::numActive#16 ← processChars::numActive#10 -Coalesced [127] init_angle_screen::screen_topline#7 ← init_angle_screen::screen_topline#0 -Coalesced [128] init_angle_screen::screen_bottomline#7 ← init_angle_screen::screen_bottomline#0 -Coalesced [137] init_angle_screen::y#7 ← init_angle_screen::y#1 -Coalesced [138] init_angle_screen::screen_topline#8 ← init_angle_screen::screen_topline#1 -Coalesced [139] init_angle_screen::screen_bottomline#8 ← init_angle_screen::screen_bottomline#1 -Coalesced [161] init_angle_screen::x#5 ← init_angle_screen::x#1 -Coalesced [162] init_angle_screen::xb#5 ← init_angle_screen::xb#1 -Coalesced [175] initSprites::i#3 ← initSprites::i#1 -Coalesced [178] initSprites::sp#4 ← initSprites::sp#1 -Coalesced [191] getCharToProcess::screen_line#8 ← getCharToProcess::screen_line#0 -Coalesced [192] getCharToProcess::dist_line#8 ← getCharToProcess::dist_line#0 -Coalesced [194] getCharToProcess::closest_dist#11 ← getCharToProcess::closest_dist#8 -Coalesced [195] getCharToProcess::closest_x#11 ← getCharToProcess::closest_x#9 -Coalesced [196] getCharToProcess::closest_y#11 ← getCharToProcess::closest_y#9 -Coalesced [201] getCharToProcess::return_dist#7 ← getCharToProcess::dist#0 -Not coalescing [202] getCharToProcess::return_x#7 ← getCharToProcess::x#2 -Not coalescing [203] getCharToProcess::return_y#7 ← getCharToProcess::y#7 -Coalesced [220] getCharToProcess::screen_line#9 ← getCharToProcess::screen_line#1 -Coalesced [221] getCharToProcess::dist_line#9 ← getCharToProcess::dist_line#1 -Not coalescing [222] getCharToProcess::closest_dist#10 ← getCharToProcess::return_dist#1 -Coalesced [223] getCharToProcess::y#8 ← getCharToProcess::y#1 -Coalesced [224] getCharToProcess::closest_x#10 ← getCharToProcess::return_x#1 -Coalesced [225] getCharToProcess::closest_y#10 ← getCharToProcess::return_y#1 -Coalesced [226] getCharToProcess::x#6 ← getCharToProcess::x#1 -Not coalescing [227] getCharToProcess::closest_dist#12 ← getCharToProcess::return_dist#1 -Coalesced (already) [228] getCharToProcess::closest_x#12 ← getCharToProcess::return_x#1 -Coalesced (already) [229] getCharToProcess::closest_y#12 ← getCharToProcess::return_y#1 -Not coalescing [230] getCharToProcess::return_dist#6 ← getCharToProcess::closest_dist#2 -Coalesced (already) [231] getCharToProcess::return_x#6 ← getCharToProcess::closest_x#7 -Coalesced (already) [232] getCharToProcess::return_y#6 ← getCharToProcess::closest_y#7 -Not coalescing [233] getCharToProcess::return_dist#5 ← getCharToProcess::closest_dist#2 -Coalesced (already) [234] getCharToProcess::return_x#5 ← getCharToProcess::closest_x#7 -Coalesced (already) [235] getCharToProcess::return_y#5 ← getCharToProcess::closest_y#7 -Coalesced [245] startProcessing::freeIdx#9 ← startProcessing::i#2 -Coalesced [265] startProcessing::chargenData#3 ← startProcessing::chargenData#0 -Coalesced [266] startProcessing::spriteData#3 ← startProcessing::spriteData#0 -Coalesced [300] startProcessing::chargenData#4 ← startProcessing::chargenData#1 -Coalesced [301] startProcessing::spriteData#4 ← startProcessing::spriteData#1 -Coalesced [302] startProcessing::i1#3 ← startProcessing::i1#1 -Not coalescing [303] startProcessing::freeIdx#7 ← startProcessing::freeIdx#2 -Not coalescing [306] startProcessing::freeIdx#8 ← startProcessing::freeIdx#6 -Coalesced [307] startProcessing::i#5 ← startProcessing::i#1 -Coalesced [310] atan2_16::yi#17 ← atan2_16::$2 -Coalesced [314] atan2_16::xi#14 ← atan2_16::$7 -Coalesced [316] atan2_16::yi#19 ← atan2_16::yi#0 -Coalesced [317] atan2_16::xi#16 ← atan2_16::xi#0 -Coalesced [320] atan2_16::angle#22 ← atan2_16::angle#12 -Coalesced [325] atan2_16::angle#27 ← atan2_16::angle#4 -Coalesced [329] atan2_16::return#6 ← atan2_16::angle#5 -Coalesced [332] atan2_16::return#5 ← atan2_16::angle#11 -Coalesced [333] atan2_16::angle#26 ← atan2_16::angle#1 -Not coalescing [334] atan2_16::shift#5 ← atan2_16::i#2 -Not coalescing [335] atan2_16::xd#10 ← atan2_16::xi#3 -Not coalescing [336] atan2_16::yd#10 ← atan2_16::yi#3 -Coalesced [342] atan2_16::yd#13 ← atan2_16::yd#2 -Coalesced [343] atan2_16::xd#13 ← atan2_16::xd#2 -Coalesced [350] atan2_16::yi#21 ← atan2_16::yi#2 -Coalesced [351] atan2_16::angle#25 ← atan2_16::angle#3 -Coalesced [352] atan2_16::xi#18 ← atan2_16::xi#2 -Coalesced [356] atan2_16::yi#18 ← atan2_16::yi#8 -Coalesced [357] atan2_16::xi#15 ← atan2_16::xi#8 -Coalesced [358] atan2_16::i#12 ← atan2_16::i#1 -Coalesced [359] atan2_16::angle#21 ← atan2_16::angle#13 -Coalesced (already) [360] atan2_16::angle#23 ← atan2_16::angle#13 -Coalesced [365] atan2_16::yi#20 ← atan2_16::yi#1 -Coalesced [366] atan2_16::angle#24 ← atan2_16::angle#2 -Coalesced [367] atan2_16::xi#17 ← atan2_16::xi#1 -Coalesced [368] atan2_16::yd#12 ← atan2_16::yd#3 -Coalesced [369] atan2_16::xd#12 ← atan2_16::xd#3 -Coalesced [373] atan2_16::shift#6 ← atan2_16::shift#1 -Coalesced [374] atan2_16::xd#11 ← atan2_16::xd#1 -Coalesced [375] atan2_16::yd#11 ← atan2_16::yd#1 -Not coalescing [376] atan2_16::xi#13 ← atan2_16::x#0 -Not coalescing [377] atan2_16::yi#16 ← atan2_16::y#0 +Coalesced [111] processChars::numActive#17 ← processChars::numActive#1 +Coalesced [117] processChars::i#13 ← processChars::i#1 +Coalesced [118] processChars::numActive#15 ← processChars::numActive#3 +Coalesced (already) [123] processChars::numActive#16 ← processChars::numActive#10 +Coalesced [126] init_angle_screen::screen_topline#7 ← init_angle_screen::screen_topline#0 +Coalesced [127] init_angle_screen::screen_bottomline#7 ← init_angle_screen::screen_bottomline#0 +Coalesced [136] init_angle_screen::y#7 ← init_angle_screen::y#1 +Coalesced [137] init_angle_screen::screen_topline#8 ← init_angle_screen::screen_topline#1 +Coalesced [138] init_angle_screen::screen_bottomline#8 ← init_angle_screen::screen_bottomline#1 +Coalesced [160] init_angle_screen::x#5 ← init_angle_screen::x#1 +Coalesced [161] init_angle_screen::xb#5 ← init_angle_screen::xb#1 +Coalesced [174] initSprites::i#3 ← initSprites::i#1 +Coalesced [177] initSprites::sp#4 ← initSprites::sp#1 +Coalesced [190] getCharToProcess::screen_line#8 ← getCharToProcess::screen_line#0 +Coalesced [191] getCharToProcess::dist_line#8 ← getCharToProcess::dist_line#0 +Coalesced [193] getCharToProcess::closest_dist#11 ← getCharToProcess::closest_dist#8 +Coalesced [194] getCharToProcess::closest_x#11 ← getCharToProcess::closest_x#9 +Coalesced [195] getCharToProcess::closest_y#11 ← getCharToProcess::closest_y#9 +Coalesced [200] getCharToProcess::return_dist#7 ← getCharToProcess::dist#0 +Not coalescing [201] getCharToProcess::return_x#7 ← getCharToProcess::x#2 +Not coalescing [202] getCharToProcess::return_y#7 ← getCharToProcess::y#7 +Coalesced [219] getCharToProcess::screen_line#9 ← getCharToProcess::screen_line#1 +Coalesced [220] getCharToProcess::dist_line#9 ← getCharToProcess::dist_line#1 +Not coalescing [221] getCharToProcess::closest_dist#10 ← getCharToProcess::return_dist#1 +Coalesced [222] getCharToProcess::y#8 ← getCharToProcess::y#1 +Coalesced [223] getCharToProcess::closest_x#10 ← getCharToProcess::return_x#1 +Coalesced [224] getCharToProcess::closest_y#10 ← getCharToProcess::return_y#1 +Coalesced [225] getCharToProcess::x#6 ← getCharToProcess::x#1 +Not coalescing [226] getCharToProcess::closest_dist#12 ← getCharToProcess::return_dist#1 +Coalesced (already) [227] getCharToProcess::closest_x#12 ← getCharToProcess::return_x#1 +Coalesced (already) [228] getCharToProcess::closest_y#12 ← getCharToProcess::return_y#1 +Not coalescing [229] getCharToProcess::return_dist#6 ← getCharToProcess::closest_dist#2 +Coalesced (already) [230] getCharToProcess::return_x#6 ← getCharToProcess::closest_x#7 +Coalesced (already) [231] getCharToProcess::return_y#6 ← getCharToProcess::closest_y#7 +Not coalescing [232] getCharToProcess::return_dist#5 ← getCharToProcess::closest_dist#2 +Coalesced (already) [233] getCharToProcess::return_x#5 ← getCharToProcess::closest_x#7 +Coalesced (already) [234] getCharToProcess::return_y#5 ← getCharToProcess::closest_y#7 +Coalesced [244] startProcessing::freeIdx#9 ← startProcessing::i#2 +Coalesced [264] startProcessing::chargenData#3 ← startProcessing::chargenData#0 +Coalesced [265] startProcessing::spriteData#3 ← startProcessing::spriteData#0 +Coalesced [299] startProcessing::chargenData#4 ← startProcessing::chargenData#1 +Coalesced [300] startProcessing::spriteData#4 ← startProcessing::spriteData#1 +Coalesced [301] startProcessing::i1#3 ← startProcessing::i1#1 +Not coalescing [302] startProcessing::freeIdx#7 ← startProcessing::freeIdx#2 +Not coalescing [305] startProcessing::freeIdx#8 ← startProcessing::freeIdx#6 +Coalesced [306] startProcessing::i#5 ← startProcessing::i#1 +Coalesced [309] atan2_16::yi#17 ← atan2_16::$2 +Coalesced [313] atan2_16::xi#14 ← atan2_16::$7 +Coalesced [315] atan2_16::yi#19 ← atan2_16::yi#0 +Coalesced [316] atan2_16::xi#16 ← atan2_16::xi#0 +Coalesced [319] atan2_16::angle#22 ← atan2_16::angle#12 +Coalesced [324] atan2_16::angle#27 ← atan2_16::angle#4 +Coalesced [328] atan2_16::return#6 ← atan2_16::angle#5 +Coalesced [331] atan2_16::return#5 ← atan2_16::angle#11 +Coalesced [332] atan2_16::angle#26 ← atan2_16::angle#1 +Not coalescing [333] atan2_16::shift#5 ← atan2_16::i#2 +Not coalescing [334] atan2_16::xd#10 ← atan2_16::xi#3 +Not coalescing [335] atan2_16::yd#10 ← atan2_16::yi#3 +Coalesced [341] atan2_16::yd#13 ← atan2_16::yd#2 +Coalesced [342] atan2_16::xd#13 ← atan2_16::xd#2 +Coalesced [349] atan2_16::yi#21 ← atan2_16::yi#2 +Coalesced [350] atan2_16::angle#25 ← atan2_16::angle#3 +Coalesced [351] atan2_16::xi#18 ← atan2_16::xi#2 +Coalesced [355] atan2_16::yi#18 ← atan2_16::yi#8 +Coalesced [356] atan2_16::xi#15 ← atan2_16::xi#8 +Coalesced [357] atan2_16::i#12 ← atan2_16::i#1 +Coalesced [358] atan2_16::angle#21 ← atan2_16::angle#13 +Coalesced (already) [359] atan2_16::angle#23 ← atan2_16::angle#13 +Coalesced [364] atan2_16::yi#20 ← atan2_16::yi#1 +Coalesced [365] atan2_16::angle#24 ← atan2_16::angle#2 +Coalesced [366] atan2_16::xi#17 ← atan2_16::xi#1 +Coalesced [367] atan2_16::yd#12 ← atan2_16::yd#3 +Coalesced [368] atan2_16::xd#12 ← atan2_16::xd#3 +Coalesced [372] atan2_16::shift#6 ← atan2_16::shift#1 +Coalesced [373] atan2_16::xd#11 ← atan2_16::xd#1 +Coalesced [374] atan2_16::yd#11 ← atan2_16::yd#1 +Not coalescing [375] atan2_16::xi#13 ← atan2_16::x#0 +Not coalescing [376] atan2_16::yi#16 ← atan2_16::y#0 Coalesced down to 37 phi equivalence classes Culled Empty Block (label) __start::@4 Culled Empty Block (label) irqBottom::@7 @@ -3380,8 +3384,8 @@ processChars: scope:[processChars] from irqBottom::@1 processChars::@1: scope:[processChars] from processChars processChars::@2 [61] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 ) [61] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 ) - [62] (byte~) processChars::$86 ← (byte) processChars::i#10 << (byte) 1 - [63] (byte~) processChars::$87 ← (byte~) processChars::$86 + (byte) processChars::i#10 + [62] (byte~) processChars::$13 ← (byte) processChars::i#10 << (byte) 1 + [63] (byte~) processChars::$87 ← (byte~) processChars::$13 + (byte) processChars::i#10 [64] (byte~) processChars::$88 ← (byte~) processChars::$87 << (byte) 1 [65] (byte~) processChars::$89 ← (byte~) processChars::$88 + (byte) processChars::i#10 [66] (byte~) processChars::$28 ← (byte~) processChars::$89 << (byte) 1 @@ -3409,408 +3413,407 @@ processChars::@8: scope:[processChars] from processChars::@3 [80] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) & (byte~) processChars::$10 to:processChars::@5 processChars::@5: scope:[processChars] from processChars::@4 processChars::@8 - [81] (byte~) processChars::$13 ← (byte) processChars::i#10 << (byte) 1 - [82] *((const nomodify byte*) SPRITES_XPOS + (byte~) processChars::$13) ← (byte)(word) processChars::xpos#0 - [83] (word~) processChars::$12 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 - [84] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$12 - [85] *((const nomodify byte*) SPRITES_YPOS + (byte~) processChars::$13) ← (byte) processChars::ypos#0 - [86] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const nomodify word) XPOS_LEFTMOST) goto processChars::@6 + [81] *((const nomodify byte*) SPRITES_XPOS + (byte~) processChars::$13) ← (byte)(word) processChars::xpos#0 + [82] (word~) processChars::$12 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 + [83] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$12 + [84] *((const nomodify byte*) SPRITES_YPOS + (byte~) processChars::$13) ← (byte) processChars::ypos#0 + [85] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const nomodify word) XPOS_LEFTMOST) goto processChars::@6 to:processChars::@14 processChars::@14: scope:[processChars] from processChars::@5 - [87] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const nomodify word) XPOS_RIGHTMOST) goto processChars::@6 + [86] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const nomodify word) XPOS_RIGHTMOST) goto processChars::@6 to:processChars::@13 processChars::@13: scope:[processChars] from processChars::@14 - [88] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const nomodify word) YPOS_TOPMOST) goto processChars::@6 + [87] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const nomodify word) YPOS_TOPMOST) goto processChars::@6 to:processChars::@12 processChars::@12: scope:[processChars] from processChars::@13 - [89] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const nomodify word) YPOS_BOTTOMMOST) goto processChars::@6 + [88] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const nomodify word) YPOS_BOTTOMMOST) goto processChars::@6 to:processChars::@9 processChars::@9: scope:[processChars] from processChars::@12 - [90] (word~) processChars::$21 ← (word) processChars::xpos#0 >> (byte) 3 - [91] (byte~) processChars::$73 ← (byte)(word~) processChars::$21 - [92] (byte) processChars::xchar#0 ← (byte~) processChars::$73 - (const nomodify byte) BORDER_XPOS_LEFT/(byte) 8 - [93] (byte~) processChars::$29 ← (byte) processChars::xchar#0 << (byte) 1 - [94] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const to_nomodify word*) VXSIN + (byte~) processChars::$29) - [95] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) - [96] (byte~) processChars::$79 ← (byte) processChars::ypos#0 >> (byte) 3 - [97] (byte) processChars::ychar#0 ← (byte~) processChars::$79 - (const nomodify byte) BORDER_YPOS_TOP/(byte) 8 - [98] (byte~) processChars::$30 ← (byte) processChars::ychar#0 << (byte) 1 - [99] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const to_nomodify word*) VYSIN + (byte~) processChars::$30) - [100] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + [89] (word~) processChars::$21 ← (word) processChars::xpos#0 >> (byte) 3 + [90] (byte~) processChars::$73 ← (byte)(word~) processChars::$21 + [91] (byte) processChars::xchar#0 ← (byte~) processChars::$73 - (const nomodify byte) BORDER_XPOS_LEFT/(byte) 8 + [92] (byte~) processChars::$29 ← (byte) processChars::xchar#0 << (byte) 1 + [93] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const to_nomodify word*) VXSIN + (byte~) processChars::$29) + [94] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + [95] (byte~) processChars::$79 ← (byte) processChars::ypos#0 >> (byte) 3 + [96] (byte) processChars::ychar#0 ← (byte~) processChars::$79 - (const nomodify byte) BORDER_YPOS_TOP/(byte) 8 + [97] (byte~) processChars::$30 ← (byte) processChars::ychar#0 << (byte) 1 + [98] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const to_nomodify word*) VYSIN + (byte~) processChars::$30) + [99] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) to:processChars::@7 processChars::@7: scope:[processChars] from processChars::@6 processChars::@9 - [101] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 + [100] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 to:processChars::@2 processChars::@2: scope:[processChars] from processChars::@1 processChars::@7 - [102] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) - [103] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 - [104] if((byte) processChars::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 + [101] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 ) + [102] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 + [103] if((byte) processChars::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 to:processChars::@return processChars::@return: scope:[processChars] from processChars::@2 - [105] return + [104] return to:@return processChars::@6: scope:[processChars] from processChars::@12 processChars::@13 processChars::@14 processChars::@5 - [106] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE - [107] (byte~) processChars::$25 ← (byte) $ff ^ (byte) processChars::bitmask#0 - [108] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) & (byte~) processChars::$25 + [105] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE + [106] (byte~) processChars::$25 ← (byte) $ff ^ (byte) processChars::bitmask#0 + [107] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) & (byte~) processChars::$25 to:processChars::@7 processChars::@4: scope:[processChars] from processChars::@3 - [109] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 + [108] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 to:processChars::@5 (void()) init_angle_screen((byte*) init_angle_screen::screen) init_angle_screen: scope:[init_angle_screen] from main - [110] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c - [111] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c + [109] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c + [110] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c to:init_angle_screen::@1 init_angle_screen::@1: scope:[init_angle_screen] from init_angle_screen init_angle_screen::@4 - [112] (byte*) init_angle_screen::screen_bottomline#6 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_bottomline#0 init_angle_screen::@4/(byte*) init_angle_screen::screen_bottomline#1 ) - [112] (byte*) init_angle_screen::screen_topline#6 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_topline#0 init_angle_screen::@4/(byte*) init_angle_screen::screen_topline#1 ) - [112] (byte) init_angle_screen::y#5 ← phi( init_angle_screen/(byte) 0 init_angle_screen::@4/(byte) init_angle_screen::y#1 ) + [111] (byte*) init_angle_screen::screen_bottomline#6 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_bottomline#0 init_angle_screen::@4/(byte*) init_angle_screen::screen_bottomline#1 ) + [111] (byte*) init_angle_screen::screen_topline#6 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_topline#0 init_angle_screen::@4/(byte*) init_angle_screen::screen_topline#1 ) + [111] (byte) init_angle_screen::y#5 ← phi( init_angle_screen/(byte) 0 init_angle_screen::@4/(byte) init_angle_screen::y#1 ) to:init_angle_screen::@2 init_angle_screen::@2: scope:[init_angle_screen] from init_angle_screen::@1 init_angle_screen::@5 - [113] (byte) init_angle_screen::xb#2 ← phi( init_angle_screen::@1/(byte) $27 init_angle_screen::@5/(byte) init_angle_screen::xb#1 ) - [113] (byte) init_angle_screen::x#2 ← phi( init_angle_screen::@1/(byte) 0 init_angle_screen::@5/(byte) init_angle_screen::x#1 ) - [114] if((byte) init_angle_screen::x#2<(byte) $13+(byte) 1) goto init_angle_screen::@3 + [112] (byte) init_angle_screen::xb#2 ← phi( init_angle_screen::@1/(byte) $27 init_angle_screen::@5/(byte) init_angle_screen::xb#1 ) + [112] (byte) init_angle_screen::x#2 ← phi( init_angle_screen::@1/(byte) 0 init_angle_screen::@5/(byte) init_angle_screen::x#1 ) + [113] if((byte) init_angle_screen::x#2<(byte) $13+(byte) 1) goto init_angle_screen::@3 to:init_angle_screen::@4 init_angle_screen::@4: scope:[init_angle_screen] from init_angle_screen::@2 - [115] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 - [116] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 - [117] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#5 - [118] if((byte) init_angle_screen::y#1!=(byte) $d) goto init_angle_screen::@1 + [114] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 + [115] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 + [116] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#5 + [117] if((byte) init_angle_screen::y#1!=(byte) $d) goto init_angle_screen::@1 to:init_angle_screen::@return init_angle_screen::@return: scope:[init_angle_screen] from init_angle_screen::@4 - [119] return + [118] return to:@return init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2 - [120] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 - [121] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 - [122] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 - [123] (byte~) init_angle_screen::$5 ← (byte) init_angle_screen::y#5 << (byte) 1 - [124] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$5 w= (byte) 0 - [125] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 - [126] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 - [127] call atan2_16 - [128] (word) atan2_16::return#2 ← (word) atan2_16::return#0 + [119] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 + [120] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 + [121] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 + [122] (byte~) init_angle_screen::$5 ← (byte) init_angle_screen::y#5 << (byte) 1 + [123] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$5 w= (byte) 0 + [124] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 + [125] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 + [126] call atan2_16 + [127] (word) atan2_16::return#2 ← (word) atan2_16::return#0 to:init_angle_screen::@5 init_angle_screen::@5: scope:[init_angle_screen] from init_angle_screen::@3 - [129] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 - [130] (word~) init_angle_screen::$7 ← (word) init_angle_screen::angle_w#0 + (byte) $80 - [131] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$7 - [132] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 - [133] (byte~) init_angle_screen::$9 ← - (byte) init_angle_screen::ang_w#0 - [134] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$9 - [135] (byte~) init_angle_screen::$10 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 - [136] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$10 - [137] (byte~) init_angle_screen::$11 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 - [138] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$11 - [139] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2 - [140] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2 + [128] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 + [129] (word~) init_angle_screen::$7 ← (word) init_angle_screen::angle_w#0 + (byte) $80 + [130] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$7 + [131] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 + [132] (byte~) init_angle_screen::$9 ← - (byte) init_angle_screen::ang_w#0 + [133] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$9 + [134] (byte~) init_angle_screen::$10 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 + [135] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$10 + [136] (byte~) init_angle_screen::$11 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 + [137] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$11 + [138] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2 + [139] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2 to:init_angle_screen::@2 (void()) initSprites() initSprites: scope:[initSprites] from main::@4 - [141] phi() + [140] phi() to:initSprites::@1 initSprites::@1: scope:[initSprites] from initSprites initSprites::@2 - [142] (byte*) initSprites::sp#2 ← phi( initSprites/(const nomodify byte*) SPRITE_DATA initSprites::@2/(byte*) initSprites::sp#1 ) - [143] if((byte*) initSprites::sp#2<(const nomodify byte*) SPRITE_DATA+(const nomodify byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2 + [141] (byte*) initSprites::sp#2 ← phi( initSprites/(const nomodify byte*) SPRITE_DATA initSprites::@2/(byte*) initSprites::sp#1 ) + [142] if((byte*) initSprites::sp#2<(const nomodify byte*) SPRITE_DATA+(const nomodify byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2 to:initSprites::@3 initSprites::@3: scope:[initSprites] from initSprites::@1 initSprites::@3 - [144] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@3/(byte) initSprites::i#1 ) - [145] *((const nomodify byte*) SPRITES_COLOR + (byte) initSprites::i#2) ← (const nomodify byte) LIGHT_BLUE - [146] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 - [147] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@3 + [143] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@3/(byte) initSprites::i#1 ) + [144] *((const nomodify byte*) SPRITES_COLOR + (byte) initSprites::i#2) ← (const nomodify byte) LIGHT_BLUE + [145] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 + [146] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@3 to:initSprites::@4 initSprites::@4: scope:[initSprites] from initSprites::@3 - [148] *((const nomodify byte*) SPRITES_MC) ← (byte) 0 - [149] *((const nomodify byte*) SPRITES_EXPAND_X) ← (byte) 0 - [150] *((const nomodify byte*) SPRITES_EXPAND_Y) ← (byte) 0 + [147] *((const nomodify byte*) SPRITES_MC) ← (byte) 0 + [148] *((const nomodify byte*) SPRITES_EXPAND_X) ← (byte) 0 + [149] *((const nomodify byte*) SPRITES_EXPAND_Y) ← (byte) 0 to:initSprites::@return initSprites::@return: scope:[initSprites] from initSprites::@4 - [151] return + [150] return to:@return initSprites::@2: scope:[initSprites] from initSprites::@1 - [152] *((byte*) initSprites::sp#2) ← (byte) 0 - [153] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 + [151] *((byte*) initSprites::sp#2) ← (byte) 0 + [152] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 to:initSprites::@1 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) setupRasterIrq: scope:[setupRasterIrq] from main::@10 asm { sei } - [155] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK - [156] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO - [157] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR + [154] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK + [155] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO + [156] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR to:setupRasterIrq::@1 setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq - [158] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) & (byte) $7f + [157] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) & (byte) $7f to:setupRasterIrq::@2 setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1 - [159] *((const nomodify byte*) RASTER) ← <(const nomodify byte) RASTER_IRQ_TOP - [160] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER - [161] *((const nomodify void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0 + [158] *((const nomodify byte*) RASTER) ← <(const nomodify byte) RASTER_IRQ_TOP + [159] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER + [160] *((const nomodify void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0 asm { cli } to:setupRasterIrq::@return setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2 - [163] return + [162] return to:@return (struct ProcessingChar()) getCharToProcess() getCharToProcess: scope:[getCharToProcess] from main::@5 - [164] (byte*) getCharToProcess::screen_line#0 ← (byte*)(void*) SCREEN_COPY#0 - [165] (byte*) getCharToProcess::dist_line#0 ← (byte*)(void*) SCREEN_DIST#0 + [163] (byte*) getCharToProcess::screen_line#0 ← (byte*)(void*) SCREEN_COPY#0 + [164] (byte*) getCharToProcess::dist_line#0 ← (byte*)(void*) SCREEN_DIST#0 to:getCharToProcess::@1 getCharToProcess::@1: scope:[getCharToProcess] from getCharToProcess getCharToProcess::@9 - [166] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 ) - [166] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 ) - [166] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 ) - [166] (byte) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const nomodify byte) NOT_FOUND getCharToProcess::@9/(byte) getCharToProcess::closest_dist#10 ) - [166] (byte*) getCharToProcess::dist_line#6 ← phi( getCharToProcess/(byte*) getCharToProcess::dist_line#0 getCharToProcess::@9/(byte*) getCharToProcess::dist_line#1 ) - [166] (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(byte*) getCharToProcess::screen_line#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 ) + [165] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 ) + [165] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 ) + [165] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 ) + [165] (byte) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const nomodify byte) NOT_FOUND getCharToProcess::@9/(byte) getCharToProcess::closest_dist#10 ) + [165] (byte*) getCharToProcess::dist_line#6 ← phi( getCharToProcess/(byte*) getCharToProcess::dist_line#0 getCharToProcess::@9/(byte*) getCharToProcess::dist_line#1 ) + [165] (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(byte*) getCharToProcess::screen_line#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 ) to:getCharToProcess::@2 getCharToProcess::@2: scope:[getCharToProcess] from getCharToProcess::@1 getCharToProcess::@10 - [167] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 ) - [167] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 ) - [167] (byte) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_dist#8 getCharToProcess::@10/(byte) getCharToProcess::closest_dist#12 ) - [167] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 ) - [168] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 + [166] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 ) + [166] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 ) + [166] (byte) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_dist#8 getCharToProcess::@10/(byte) getCharToProcess::closest_dist#12 ) + [166] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 ) + [167] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 to:getCharToProcess::@4 getCharToProcess::@4: scope:[getCharToProcess] from getCharToProcess::@2 - [169] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) - [170] if((byte) getCharToProcess::dist#0>=(byte) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 + [168] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) + [169] if((byte) getCharToProcess::dist#0>=(byte) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 to:getCharToProcess::@5 getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4 - [171] (byte) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 - [172] (byte) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 + [170] (byte) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 + [171] (byte) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 to:getCharToProcess::@3 getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 - [173] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte) getCharToProcess::return_y#7 ) - [173] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte) getCharToProcess::return_x#7 ) - [173] (byte) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::return_dist#5 getCharToProcess::@12/(byte) getCharToProcess::return_dist#6 getCharToProcess::@5/(byte) getCharToProcess::dist#0 ) - [174] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 - [175] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 + [172] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte) getCharToProcess::return_y#7 ) + [172] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte) getCharToProcess::return_x#7 ) + [172] (byte) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::return_dist#5 getCharToProcess::@12/(byte) getCharToProcess::return_dist#6 getCharToProcess::@5/(byte) getCharToProcess::dist#0 ) + [173] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 + [174] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 to:getCharToProcess::@6 getCharToProcess::@6: scope:[getCharToProcess] from getCharToProcess::@3 - [176] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 - [177] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 - [178] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 - [179] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 + [175] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 + [176] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 + [177] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 + [178] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 to:getCharToProcess::@7 getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@6 - [180] if((byte) getCharToProcess::return_dist#1==(const nomodify byte) NOT_FOUND) goto getCharToProcess::@return + [179] if((byte) getCharToProcess::return_dist#1==(const nomodify byte) NOT_FOUND) goto getCharToProcess::@return to:getCharToProcess::@8 getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7 - [181] (word~) getCharToProcess::$11 ← (word)(byte) getCharToProcess::return_y#1 - [182] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$11 << (byte) 2 - [183] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$11 - [184] (word~) getCharToProcess::$8 ← (word~) getCharToProcess::$13 << (byte) 3 - [185] (byte*~) getCharToProcess::$9 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$8 - [186] *((byte*~) getCharToProcess::$9 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' + [180] (word~) getCharToProcess::$11 ← (word)(byte) getCharToProcess::return_y#1 + [181] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$11 << (byte) 2 + [182] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$11 + [183] (word~) getCharToProcess::$8 ← (word~) getCharToProcess::$13 << (byte) 3 + [184] (byte*~) getCharToProcess::$9 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$8 + [185] *((byte*~) getCharToProcess::$9 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' to:getCharToProcess::@return getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@7 getCharToProcess::@8 - [187] return + [186] return to:@return getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@6 - [188] (byte) getCharToProcess::closest_dist#10 ← (byte) getCharToProcess::return_dist#1 + [187] (byte) getCharToProcess::closest_dist#10 ← (byte) getCharToProcess::return_dist#1 to:getCharToProcess::@1 getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@3 - [189] (byte) getCharToProcess::closest_dist#12 ← (byte) getCharToProcess::return_dist#1 + [188] (byte) getCharToProcess::closest_dist#12 ← (byte) getCharToProcess::return_dist#1 to:getCharToProcess::@2 getCharToProcess::@12: scope:[getCharToProcess] from getCharToProcess::@4 - [190] (byte) getCharToProcess::return_dist#6 ← (byte) getCharToProcess::closest_dist#2 + [189] (byte) getCharToProcess::return_dist#6 ← (byte) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@2 - [191] (byte) getCharToProcess::return_dist#5 ← (byte) getCharToProcess::closest_dist#2 + [190] (byte) getCharToProcess::return_dist#5 ← (byte) getCharToProcess::closest_dist#2 to:getCharToProcess::@3 (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (byte) startProcessing::center_dist) startProcessing: scope:[startProcessing] from main::@6 - [192] phi() + [191] phi() to:startProcessing::@1 startProcessing::@1: scope:[startProcessing] from startProcessing startProcessing::@8 - [193] (byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) $ff startProcessing::@8/(byte) startProcessing::freeIdx#7 ) + [192] (byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) $ff startProcessing::@8/(byte) startProcessing::freeIdx#7 ) to:startProcessing::@2 startProcessing::@2: scope:[startProcessing] from startProcessing::@1 startProcessing::@3 - [194] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 ) - [195] (byte~) startProcessing::$28 ← (byte) startProcessing::i#2 << (byte) 1 - [196] (byte~) startProcessing::$29 ← (byte~) startProcessing::$28 + (byte) startProcessing::i#2 - [197] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 << (byte) 1 - [198] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 + (byte) startProcessing::i#2 - [199] (byte~) startProcessing::$21 ← (byte~) startProcessing::$31 << (byte) 1 - [200] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$21)!=(const byte) STATUS_FREE) goto startProcessing::@3 + [193] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 ) + [194] (byte~) startProcessing::$28 ← (byte) startProcessing::i#2 << (byte) 1 + [195] (byte~) startProcessing::$29 ← (byte~) startProcessing::$28 + (byte) startProcessing::i#2 + [196] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 << (byte) 1 + [197] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 + (byte) startProcessing::i#2 + [198] (byte~) startProcessing::$21 ← (byte~) startProcessing::$31 << (byte) 1 + [199] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$21)!=(const byte) STATUS_FREE) goto startProcessing::@3 to:startProcessing::@4 startProcessing::@4: scope:[startProcessing] from startProcessing::@2 startProcessing::@9 - [201] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@9/(byte) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 ) - [202] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 + [200] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@9/(byte) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 ) + [201] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 to:startProcessing::@5 startProcessing::@5: scope:[startProcessing] from startProcessing::@4 - [203] (word~) startProcessing::$23 ← (word)(byte) startProcessing::center_y#0 - [204] (word~) startProcessing::$33 ← (word~) startProcessing::$23 << (byte) 2 - [205] (word~) startProcessing::$34 ← (word~) startProcessing::$33 + (word~) startProcessing::$23 - [206] (word~) startProcessing::$0 ← (word~) startProcessing::$34 << (byte) 3 - [207] (word) startProcessing::offset#0 ← (word~) startProcessing::$0 + (byte) startProcessing::center_x#0 - [208] (byte*) startProcessing::colPtr#0 ← (const nomodify byte*) COLS + (word) startProcessing::offset#0 - [209] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) - [210] (byte*) startProcessing::screenPtr#0 ← (const nomodify byte*) SCREEN + (word) startProcessing::offset#0 - [211] (word~) startProcessing::$24 ← (word)(byte) startProcessing::freeIdx#2 - [212] (word~) startProcessing::$4 ← (word~) startProcessing::$24 << (byte) 6 - [213] (byte*) startProcessing::spriteData#0 ← (const nomodify byte*) SPRITE_DATA + (word~) startProcessing::$4 - [214] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) - [215] (word~) startProcessing::$25 ← (word)(byte) startProcessing::ch#0 - [216] (word~) startProcessing::$6 ← (word~) startProcessing::$25 << (byte) 3 - [217] (byte*) startProcessing::chargenData#0 ← (const nomodify byte*) CHARGEN + (word~) startProcessing::$6 + [202] (word~) startProcessing::$23 ← (word)(byte) startProcessing::center_y#0 + [203] (word~) startProcessing::$33 ← (word~) startProcessing::$23 << (byte) 2 + [204] (word~) startProcessing::$34 ← (word~) startProcessing::$33 + (word~) startProcessing::$23 + [205] (word~) startProcessing::$0 ← (word~) startProcessing::$34 << (byte) 3 + [206] (word) startProcessing::offset#0 ← (word~) startProcessing::$0 + (byte) startProcessing::center_x#0 + [207] (byte*) startProcessing::colPtr#0 ← (const nomodify byte*) COLS + (word) startProcessing::offset#0 + [208] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) + [209] (byte*) startProcessing::screenPtr#0 ← (const nomodify byte*) SCREEN + (word) startProcessing::offset#0 + [210] (word~) startProcessing::$24 ← (word)(byte) startProcessing::freeIdx#2 + [211] (word~) startProcessing::$4 ← (word~) startProcessing::$24 << (byte) 6 + [212] (byte*) startProcessing::spriteData#0 ← (const nomodify byte*) SPRITE_DATA + (word~) startProcessing::$4 + [213] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) + [214] (word~) startProcessing::$25 ← (word)(byte) startProcessing::ch#0 + [215] (word~) startProcessing::$6 ← (word~) startProcessing::$25 << (byte) 3 + [216] (byte*) startProcessing::chargenData#0 ← (const nomodify byte*) CHARGEN + (word~) startProcessing::$6 asm { sei } - [219] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_CHARROM + [218] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_CHARROM to:startProcessing::@6 startProcessing::@6: scope:[startProcessing] from startProcessing::@5 startProcessing::@6 - [220] (byte) startProcessing::i1#2 ← phi( startProcessing::@5/(byte) 0 startProcessing::@6/(byte) startProcessing::i1#1 ) - [220] (byte*) startProcessing::spriteData#2 ← phi( startProcessing::@5/(byte*) startProcessing::spriteData#0 startProcessing::@6/(byte*) startProcessing::spriteData#1 ) - [220] (byte*) startProcessing::chargenData#2 ← phi( startProcessing::@5/(byte*) startProcessing::chargenData#0 startProcessing::@6/(byte*) startProcessing::chargenData#1 ) - [221] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) - [222] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 - [223] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 - [224] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 - [225] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 + [219] (byte) startProcessing::i1#2 ← phi( startProcessing::@5/(byte) 0 startProcessing::@6/(byte) startProcessing::i1#1 ) + [219] (byte*) startProcessing::spriteData#2 ← phi( startProcessing::@5/(byte*) startProcessing::spriteData#0 startProcessing::@6/(byte*) startProcessing::spriteData#1 ) + [219] (byte*) startProcessing::chargenData#2 ← phi( startProcessing::@5/(byte*) startProcessing::chargenData#0 startProcessing::@6/(byte*) startProcessing::chargenData#1 ) + [220] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) + [221] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 + [222] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 + [223] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 + [224] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 to:startProcessing::@7 startProcessing::@7: scope:[startProcessing] from startProcessing::@6 - [226] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO + [225] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO asm { cli } - [228] (word~) startProcessing::$26 ← (word)(byte) startProcessing::center_x#0 - [229] (word~) startProcessing::$8 ← (word~) startProcessing::$26 << (byte) 3 - [230] (word~) startProcessing::$9 ← (const nomodify byte) BORDER_XPOS_LEFT + (word~) startProcessing::$8 - [231] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$9 << (byte) 4 - [232] (word~) startProcessing::$27 ← (word)(byte) startProcessing::center_y#0 - [233] (word~) startProcessing::$11 ← (word~) startProcessing::$27 << (byte) 3 - [234] (word~) startProcessing::$12 ← (const nomodify byte) BORDER_YPOS_TOP + (word~) startProcessing::$11 - [235] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$12 << (byte) 4 - [236] (byte) startProcessing::spritePtr#0 ← (byte)(const nomodify byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 - [237] (byte~) startProcessing::$15 ← (byte) startProcessing::freeIdx#2 << (byte) 3 - [238] (byte~) startProcessing::$36 ← (byte) startProcessing::freeIdx#2 << (byte) 1 - [239] (byte~) startProcessing::$37 ← (byte~) startProcessing::$36 + (byte) startProcessing::freeIdx#2 - [240] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 << (byte) 1 - [241] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 + (byte) startProcessing::freeIdx#2 - [242] (byte~) startProcessing::$22 ← (byte~) startProcessing::$39 << (byte) 1 - [243] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$22) ← (word) startProcessing::spriteX#0 - [244] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$22) ← (word) startProcessing::spriteY#0 - [245] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$22) ← (word)(byte~) startProcessing::$15 - [246] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$22) ← (word) $3c - [247] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$22) ← (byte) startProcessing::freeIdx#2 - [248] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$22) ← (byte) startProcessing::spritePtr#0 - [249] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$22) ← (byte) startProcessing::spriteCol#0 - [250] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$22) ← (const byte) STATUS_NEW - [251] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$22) ← (byte*) startProcessing::screenPtr#0 + [227] (word~) startProcessing::$26 ← (word)(byte) startProcessing::center_x#0 + [228] (word~) startProcessing::$8 ← (word~) startProcessing::$26 << (byte) 3 + [229] (word~) startProcessing::$9 ← (const nomodify byte) BORDER_XPOS_LEFT + (word~) startProcessing::$8 + [230] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$9 << (byte) 4 + [231] (word~) startProcessing::$27 ← (word)(byte) startProcessing::center_y#0 + [232] (word~) startProcessing::$11 ← (word~) startProcessing::$27 << (byte) 3 + [233] (word~) startProcessing::$12 ← (const nomodify byte) BORDER_YPOS_TOP + (word~) startProcessing::$11 + [234] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$12 << (byte) 4 + [235] (byte) startProcessing::spritePtr#0 ← (byte)(const nomodify byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 + [236] (byte~) startProcessing::$15 ← (byte) startProcessing::freeIdx#2 << (byte) 3 + [237] (byte~) startProcessing::$36 ← (byte) startProcessing::freeIdx#2 << (byte) 1 + [238] (byte~) startProcessing::$37 ← (byte~) startProcessing::$36 + (byte) startProcessing::freeIdx#2 + [239] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 << (byte) 1 + [240] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 + (byte) startProcessing::freeIdx#2 + [241] (byte~) startProcessing::$22 ← (byte~) startProcessing::$39 << (byte) 1 + [242] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$22) ← (word) startProcessing::spriteX#0 + [243] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$22) ← (word) startProcessing::spriteY#0 + [244] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$22) ← (word)(byte~) startProcessing::$15 + [245] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$22) ← (word) $3c + [246] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$22) ← (byte) startProcessing::freeIdx#2 + [247] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$22) ← (byte) startProcessing::spritePtr#0 + [248] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$22) ← (byte) startProcessing::spriteCol#0 + [249] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$22) ← (const byte) STATUS_NEW + [250] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$22) ← (byte*) startProcessing::screenPtr#0 to:startProcessing::@return startProcessing::@return: scope:[startProcessing] from startProcessing::@7 - [252] return + [251] return to:@return startProcessing::@8: scope:[startProcessing] from startProcessing::@4 - [253] (byte) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 + [252] (byte) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 to:startProcessing::@1 startProcessing::@3: scope:[startProcessing] from startProcessing::@2 - [254] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 - [255] if((byte) startProcessing::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto startProcessing::@2 + [253] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 + [254] if((byte) startProcessing::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto startProcessing::@2 to:startProcessing::@9 startProcessing::@9: scope:[startProcessing] from startProcessing::@3 - [256] (byte) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 + [255] (byte) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 to:startProcessing::@4 (word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y) atan2_16: scope:[atan2_16] from init_angle_screen::@3 - [257] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 + [256] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 to:atan2_16::@2 atan2_16::@2: scope:[atan2_16] from atan2_16 - [258] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 + [257] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 to:atan2_16::@3 atan2_16::@3: scope:[atan2_16] from atan2_16::@1 atan2_16::@2 - [259] (signed word) atan2_16::yi#0 ← phi( atan2_16::@1/(signed word) atan2_16::yi#16 atan2_16::@2/(signed word~) atan2_16::$2 ) - [260] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 + [258] (signed word) atan2_16::yi#0 ← phi( atan2_16::@1/(signed word) atan2_16::yi#16 atan2_16::@2/(signed word~) atan2_16::$2 ) + [259] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 to:atan2_16::@5 atan2_16::@5: scope:[atan2_16] from atan2_16::@3 - [261] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 + [260] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 to:atan2_16::@6 atan2_16::@6: scope:[atan2_16] from atan2_16::@4 atan2_16::@5 - [262] (signed word) atan2_16::xi#0 ← phi( atan2_16::@4/(signed word) atan2_16::xi#13 atan2_16::@5/(signed word~) atan2_16::$7 ) + [261] (signed word) atan2_16::xi#0 ← phi( atan2_16::@4/(signed word) atan2_16::xi#13 atan2_16::@5/(signed word~) atan2_16::$7 ) to:atan2_16::@10 atan2_16::@10: scope:[atan2_16] from atan2_16::@19 atan2_16::@6 - [263] (word) atan2_16::angle#12 ← phi( atan2_16::@19/(word) atan2_16::angle#13 atan2_16::@6/(word) 0 ) - [263] (byte) atan2_16::i#2 ← phi( atan2_16::@19/(byte) atan2_16::i#1 atan2_16::@6/(byte) 0 ) - [263] (signed word) atan2_16::xi#3 ← phi( atan2_16::@19/(signed word) atan2_16::xi#8 atan2_16::@6/(signed word) atan2_16::xi#0 ) - [263] (signed word) atan2_16::yi#3 ← phi( atan2_16::@19/(signed word) atan2_16::yi#8 atan2_16::@6/(signed word) atan2_16::yi#0 ) - [264] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 + [262] (word) atan2_16::angle#12 ← phi( atan2_16::@19/(word) atan2_16::angle#13 atan2_16::@6/(word) 0 ) + [262] (byte) atan2_16::i#2 ← phi( atan2_16::@19/(byte) atan2_16::i#1 atan2_16::@6/(byte) 0 ) + [262] (signed word) atan2_16::xi#3 ← phi( atan2_16::@19/(signed word) atan2_16::xi#8 atan2_16::@6/(signed word) atan2_16::xi#0 ) + [262] (signed word) atan2_16::yi#3 ← phi( atan2_16::@19/(signed word) atan2_16::yi#8 atan2_16::@6/(signed word) atan2_16::yi#0 ) + [263] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 to:atan2_16::@12 atan2_16::@12: scope:[atan2_16] from atan2_16::@10 atan2_16::@19 - [265] (word) atan2_16::angle#6 ← phi( atan2_16::@10/(word) atan2_16::angle#12 atan2_16::@19/(word) atan2_16::angle#13 ) - [266] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 - [267] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 + [264] (word) atan2_16::angle#6 ← phi( atan2_16::@10/(word) atan2_16::angle#12 atan2_16::@19/(word) atan2_16::angle#13 ) + [265] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 + [266] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 to:atan2_16::@21 atan2_16::@21: scope:[atan2_16] from atan2_16::@12 - [268] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 + [267] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 to:atan2_16::@7 atan2_16::@7: scope:[atan2_16] from atan2_16::@12 atan2_16::@21 - [269] (word) atan2_16::angle#11 ← phi( atan2_16::@12/(word) atan2_16::angle#1 atan2_16::@21/(word) atan2_16::angle#4 ) - [270] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 + [268] (word) atan2_16::angle#11 ← phi( atan2_16::@12/(word) atan2_16::angle#1 atan2_16::@21/(word) atan2_16::angle#4 ) + [269] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 to:atan2_16::@9 atan2_16::@9: scope:[atan2_16] from atan2_16::@7 - [271] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 + [270] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 to:atan2_16::@8 atan2_16::@8: scope:[atan2_16] from atan2_16::@7 atan2_16::@9 - [272] (word) atan2_16::return#0 ← phi( atan2_16::@7/(word) atan2_16::angle#11 atan2_16::@9/(word) atan2_16::angle#5 ) + [271] (word) atan2_16::return#0 ← phi( atan2_16::@7/(word) atan2_16::angle#11 atan2_16::@9/(word) atan2_16::angle#5 ) to:atan2_16::@return atan2_16::@return: scope:[atan2_16] from atan2_16::@8 - [273] return + [272] return to:@return atan2_16::@11: scope:[atan2_16] from atan2_16::@10 - [274] (byte) atan2_16::shift#5 ← (byte) atan2_16::i#2 - [275] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 - [276] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 + [273] (byte) atan2_16::shift#5 ← (byte) atan2_16::i#2 + [274] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 + [275] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 to:atan2_16::@13 atan2_16::@13: scope:[atan2_16] from atan2_16::@11 atan2_16::@14 - [277] (signed word) atan2_16::yd#3 ← phi( atan2_16::@11/(signed word) atan2_16::yd#10 atan2_16::@14/(signed word) atan2_16::yd#1 ) - [277] (signed word) atan2_16::xd#3 ← phi( atan2_16::@11/(signed word) atan2_16::xd#10 atan2_16::@14/(signed word) atan2_16::xd#1 ) - [277] (byte) atan2_16::shift#2 ← phi( atan2_16::@11/(byte) atan2_16::shift#5 atan2_16::@14/(byte) atan2_16::shift#1 ) - [278] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 + [276] (signed word) atan2_16::yd#3 ← phi( atan2_16::@11/(signed word) atan2_16::yd#10 atan2_16::@14/(signed word) atan2_16::yd#1 ) + [276] (signed word) atan2_16::xd#3 ← phi( atan2_16::@11/(signed word) atan2_16::xd#10 atan2_16::@14/(signed word) atan2_16::xd#1 ) + [276] (byte) atan2_16::shift#2 ← phi( atan2_16::@11/(byte) atan2_16::shift#5 atan2_16::@14/(byte) atan2_16::shift#1 ) + [277] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 to:atan2_16::@15 atan2_16::@15: scope:[atan2_16] from atan2_16::@13 - [279] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 + [278] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 to:atan2_16::@16 atan2_16::@16: scope:[atan2_16] from atan2_16::@15 - [280] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 - [281] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 + [279] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 + [280] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 to:atan2_16::@17 atan2_16::@17: scope:[atan2_16] from atan2_16::@15 atan2_16::@16 - [282] (signed word) atan2_16::xd#5 ← phi( atan2_16::@15/(signed word) atan2_16::xd#3 atan2_16::@16/(signed word) atan2_16::xd#2 ) - [282] (signed word) atan2_16::yd#5 ← phi( atan2_16::@15/(signed word) atan2_16::yd#3 atan2_16::@16/(signed word) atan2_16::yd#2 ) - [283] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 + [281] (signed word) atan2_16::xd#5 ← phi( atan2_16::@15/(signed word) atan2_16::xd#3 atan2_16::@16/(signed word) atan2_16::xd#2 ) + [281] (signed word) atan2_16::yd#5 ← phi( atan2_16::@15/(signed word) atan2_16::yd#3 atan2_16::@16/(signed word) atan2_16::yd#2 ) + [282] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 to:atan2_16::@20 atan2_16::@20: scope:[atan2_16] from atan2_16::@17 - [284] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 - [285] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 - [286] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 - [287] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) + [283] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 + [284] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 + [285] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 + [286] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) to:atan2_16::@19 atan2_16::@19: scope:[atan2_16] from atan2_16::@18 atan2_16::@20 - [288] (signed word) atan2_16::xi#8 ← phi( atan2_16::@18/(signed word) atan2_16::xi#1 atan2_16::@20/(signed word) atan2_16::xi#2 ) - [288] (word) atan2_16::angle#13 ← phi( atan2_16::@18/(word) atan2_16::angle#2 atan2_16::@20/(word) atan2_16::angle#3 ) - [288] (signed word) atan2_16::yi#8 ← phi( atan2_16::@18/(signed word) atan2_16::yi#1 atan2_16::@20/(signed word) atan2_16::yi#2 ) - [289] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2 - [290] if((byte) atan2_16::i#1==(const nomodify byte) CORDIC_ITERATIONS_16-(byte) 1+(byte) 1) goto atan2_16::@12 + [287] (signed word) atan2_16::xi#8 ← phi( atan2_16::@18/(signed word) atan2_16::xi#1 atan2_16::@20/(signed word) atan2_16::xi#2 ) + [287] (word) atan2_16::angle#13 ← phi( atan2_16::@18/(word) atan2_16::angle#2 atan2_16::@20/(word) atan2_16::angle#3 ) + [287] (signed word) atan2_16::yi#8 ← phi( atan2_16::@18/(signed word) atan2_16::yi#1 atan2_16::@20/(signed word) atan2_16::yi#2 ) + [288] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2 + [289] if((byte) atan2_16::i#1==(const nomodify byte) CORDIC_ITERATIONS_16-(byte) 1+(byte) 1) goto atan2_16::@12 to:atan2_16::@10 atan2_16::@18: scope:[atan2_16] from atan2_16::@17 - [291] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 - [292] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 - [293] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 - [294] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) + [290] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 + [291] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 + [292] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 + [293] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) to:atan2_16::@19 atan2_16::@14: scope:[atan2_16] from atan2_16::@13 - [295] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 - [296] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 - [297] (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#2 - (byte) 2 + [294] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 + [295] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 + [296] (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#2 - (byte) 2 to:atan2_16::@13 atan2_16::@4: scope:[atan2_16] from atan2_16::@3 - [298] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 + [297] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 to:atan2_16::@6 atan2_16::@1: scope:[atan2_16] from atan2_16 - [299] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 + [298] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 to:atan2_16::@3 @@ -4098,7 +4101,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (void()) processChars() (byte~) processChars::$10 202.0 (word~) processChars::$12 101.0 -(byte~) processChars::$13 75.75 +(byte~) processChars::$13 17.565217391304348 (word~) processChars::$21 101.0 (byte~) processChars::$25 202.0 (byte~) processChars::$28 202.0 @@ -4106,26 +4109,25 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte~) processChars::$30 202.0 (byte~) processChars::$73 202.0 (byte~) processChars::$79 202.0 -(byte~) processChars::$86 202.0 (byte~) processChars::$87 202.0 (byte~) processChars::$88 202.0 (byte~) processChars::$89 202.0 (byte~) processChars::$9 202.0 (byte) processChars::bitmask -(byte) processChars::bitmask#0 21.041666666666664 +(byte) processChars::bitmask#0 21.956521739130434 (byte) processChars::i (byte) processChars::i#1 151.5 -(byte) processChars::i#10 13.17391304347826 +(byte) processChars::i#10 11.222222222222221 (byte) processChars::numActive (byte) processChars::numActive#1 202.0 -(byte) processChars::numActive#10 6.886363636363637 +(byte) processChars::numActive#10 7.046511627906977 (byte) processChars::numActive#3 101.0 (struct ProcessingSprite*) processChars::processing -(struct ProcessingSprite*) processChars::processing#0 2.9705882352941178 +(struct ProcessingSprite*) processChars::processing#0 3.0606060606060606 (byte) processChars::xchar (byte) processChars::xchar#0 202.0 (word) processChars::xpos -(word) processChars::xpos#0 20.2 +(word) processChars::xpos#0 21.642857142857142 (byte) processChars::ychar (byte) processChars::ychar#0 202.0 (byte) processChars::ypos @@ -4254,7 +4256,7 @@ Added variable main::center_y#0 to live range equivalence class [ main::center_y Added variable main::center_dist#0 to live range equivalence class [ main::center_dist#0 ] Added variable startProcessing::center_x#0 to live range equivalence class [ startProcessing::center_x#0 ] Added variable startProcessing::center_y#0 to live range equivalence class [ startProcessing::center_y#0 ] -Added variable processChars::$86 to live range equivalence class [ processChars::$86 ] +Added variable processChars::$13 to live range equivalence class [ processChars::$13 ] Added variable processChars::$87 to live range equivalence class [ processChars::$87 ] Added variable processChars::$88 to live range equivalence class [ processChars::$88 ] Added variable processChars::$89 to live range equivalence class [ processChars::$89 ] @@ -4264,7 +4266,6 @@ Added variable processChars::bitmask#0 to live range equivalence class [ process Added variable processChars::xpos#0 to live range equivalence class [ processChars::xpos#0 ] Added variable processChars::$9 to live range equivalence class [ processChars::$9 ] Added variable processChars::$10 to live range equivalence class [ processChars::$10 ] -Added variable processChars::$13 to live range equivalence class [ processChars::$13 ] Added variable processChars::$12 to live range equivalence class [ processChars::$12 ] Added variable processChars::ypos#0 to live range equivalence class [ processChars::ypos#0 ] Added variable processChars::$21 to live range equivalence class [ processChars::$21 ] @@ -4381,7 +4382,7 @@ Complete equivalence classes [ main::center_dist#0 ] [ startProcessing::center_x#0 ] [ startProcessing::center_y#0 ] -[ processChars::$86 ] +[ processChars::$13 ] [ processChars::$87 ] [ processChars::$88 ] [ processChars::$89 ] @@ -4391,7 +4392,6 @@ Complete equivalence classes [ processChars::xpos#0 ] [ processChars::$9 ] [ processChars::$10 ] -[ processChars::$13 ] [ processChars::$12 ] [ processChars::ypos#0 ] [ processChars::$21 ] @@ -4507,7 +4507,7 @@ Allocated zp[1]:69 [ main::center_y#0 ] Allocated zp[1]:70 [ main::center_dist#0 ] Allocated zp[1]:71 [ startProcessing::center_x#0 ] Allocated zp[1]:72 [ startProcessing::center_y#0 ] -Allocated zp[1]:73 [ processChars::$86 ] +Allocated zp[1]:73 [ processChars::$13 ] Allocated zp[1]:74 [ processChars::$87 ] Allocated zp[1]:75 [ processChars::$88 ] Allocated zp[1]:76 [ processChars::$89 ] @@ -4517,71 +4517,70 @@ Allocated zp[1]:80 [ processChars::bitmask#0 ] Allocated zp[2]:81 [ processChars::xpos#0 ] Allocated zp[1]:83 [ processChars::$9 ] Allocated zp[1]:84 [ processChars::$10 ] -Allocated zp[1]:85 [ processChars::$13 ] -Allocated zp[2]:86 [ processChars::$12 ] -Allocated zp[1]:88 [ processChars::ypos#0 ] -Allocated zp[2]:89 [ processChars::$21 ] -Allocated zp[1]:91 [ processChars::$73 ] -Allocated zp[1]:92 [ processChars::xchar#0 ] -Allocated zp[1]:93 [ processChars::$29 ] -Allocated zp[1]:94 [ processChars::$79 ] -Allocated zp[1]:95 [ processChars::ychar#0 ] -Allocated zp[1]:96 [ processChars::$30 ] -Allocated zp[1]:97 [ processChars::$25 ] -Allocated zp[1]:98 [ init_angle_screen::$3 ] -Allocated zp[1]:99 [ init_angle_screen::$4 ] -Allocated zp[2]:100 [ init_angle_screen::xw#0 ] -Allocated zp[1]:102 [ init_angle_screen::$5 ] -Allocated zp[2]:103 [ init_angle_screen::yw#0 ] -Allocated zp[2]:105 [ atan2_16::x#0 ] -Allocated zp[2]:107 [ atan2_16::y#0 ] -Allocated zp[2]:109 [ atan2_16::return#2 ] -Allocated zp[2]:111 [ init_angle_screen::angle_w#0 ] -Allocated zp[2]:113 [ init_angle_screen::$7 ] -Allocated zp[1]:115 [ init_angle_screen::ang_w#0 ] -Allocated zp[1]:116 [ init_angle_screen::$9 ] -Allocated zp[1]:117 [ init_angle_screen::$10 ] -Allocated zp[1]:118 [ init_angle_screen::$11 ] -Allocated zp[2]:119 [ getCharToProcess::$11 ] -Allocated zp[2]:121 [ getCharToProcess::$12 ] -Allocated zp[2]:123 [ getCharToProcess::$13 ] -Allocated zp[2]:125 [ getCharToProcess::$8 ] -Allocated zp[2]:127 [ getCharToProcess::$9 ] -Allocated zp[1]:129 [ startProcessing::$28 ] -Allocated zp[1]:130 [ startProcessing::$29 ] -Allocated zp[1]:131 [ startProcessing::$30 ] -Allocated zp[1]:132 [ startProcessing::$31 ] -Allocated zp[1]:133 [ startProcessing::$21 ] -Allocated zp[2]:134 [ startProcessing::$23 ] -Allocated zp[2]:136 [ startProcessing::$33 ] -Allocated zp[2]:138 [ startProcessing::$34 ] -Allocated zp[2]:140 [ startProcessing::$0 ] -Allocated zp[2]:142 [ startProcessing::offset#0 ] -Allocated zp[2]:144 [ startProcessing::colPtr#0 ] -Allocated zp[1]:146 [ startProcessing::spriteCol#0 ] -Allocated zp[2]:147 [ startProcessing::screenPtr#0 ] -Allocated zp[2]:149 [ startProcessing::$24 ] -Allocated zp[2]:151 [ startProcessing::$4 ] -Allocated zp[1]:153 [ startProcessing::ch#0 ] -Allocated zp[2]:154 [ startProcessing::$25 ] -Allocated zp[2]:156 [ startProcessing::$6 ] -Allocated zp[2]:158 [ startProcessing::$26 ] -Allocated zp[2]:160 [ startProcessing::$8 ] -Allocated zp[2]:162 [ startProcessing::$9 ] -Allocated zp[2]:164 [ startProcessing::spriteX#0 ] -Allocated zp[2]:166 [ startProcessing::$27 ] -Allocated zp[2]:168 [ startProcessing::$11 ] -Allocated zp[2]:170 [ startProcessing::$12 ] -Allocated zp[2]:172 [ startProcessing::spriteY#0 ] -Allocated zp[1]:174 [ startProcessing::spritePtr#0 ] -Allocated zp[1]:175 [ startProcessing::$15 ] -Allocated zp[1]:176 [ startProcessing::$36 ] -Allocated zp[1]:177 [ startProcessing::$37 ] -Allocated zp[1]:178 [ startProcessing::$38 ] -Allocated zp[1]:179 [ startProcessing::$39 ] -Allocated zp[1]:180 [ startProcessing::$22 ] -Allocated zp[1]:181 [ atan2_16::$23 ] -Allocated zp[1]:182 [ atan2_16::$22 ] +Allocated zp[2]:85 [ processChars::$12 ] +Allocated zp[1]:87 [ processChars::ypos#0 ] +Allocated zp[2]:88 [ processChars::$21 ] +Allocated zp[1]:90 [ processChars::$73 ] +Allocated zp[1]:91 [ processChars::xchar#0 ] +Allocated zp[1]:92 [ processChars::$29 ] +Allocated zp[1]:93 [ processChars::$79 ] +Allocated zp[1]:94 [ processChars::ychar#0 ] +Allocated zp[1]:95 [ processChars::$30 ] +Allocated zp[1]:96 [ processChars::$25 ] +Allocated zp[1]:97 [ init_angle_screen::$3 ] +Allocated zp[1]:98 [ init_angle_screen::$4 ] +Allocated zp[2]:99 [ init_angle_screen::xw#0 ] +Allocated zp[1]:101 [ init_angle_screen::$5 ] +Allocated zp[2]:102 [ init_angle_screen::yw#0 ] +Allocated zp[2]:104 [ atan2_16::x#0 ] +Allocated zp[2]:106 [ atan2_16::y#0 ] +Allocated zp[2]:108 [ atan2_16::return#2 ] +Allocated zp[2]:110 [ init_angle_screen::angle_w#0 ] +Allocated zp[2]:112 [ init_angle_screen::$7 ] +Allocated zp[1]:114 [ init_angle_screen::ang_w#0 ] +Allocated zp[1]:115 [ init_angle_screen::$9 ] +Allocated zp[1]:116 [ init_angle_screen::$10 ] +Allocated zp[1]:117 [ init_angle_screen::$11 ] +Allocated zp[2]:118 [ getCharToProcess::$11 ] +Allocated zp[2]:120 [ getCharToProcess::$12 ] +Allocated zp[2]:122 [ getCharToProcess::$13 ] +Allocated zp[2]:124 [ getCharToProcess::$8 ] +Allocated zp[2]:126 [ getCharToProcess::$9 ] +Allocated zp[1]:128 [ startProcessing::$28 ] +Allocated zp[1]:129 [ startProcessing::$29 ] +Allocated zp[1]:130 [ startProcessing::$30 ] +Allocated zp[1]:131 [ startProcessing::$31 ] +Allocated zp[1]:132 [ startProcessing::$21 ] +Allocated zp[2]:133 [ startProcessing::$23 ] +Allocated zp[2]:135 [ startProcessing::$33 ] +Allocated zp[2]:137 [ startProcessing::$34 ] +Allocated zp[2]:139 [ startProcessing::$0 ] +Allocated zp[2]:141 [ startProcessing::offset#0 ] +Allocated zp[2]:143 [ startProcessing::colPtr#0 ] +Allocated zp[1]:145 [ startProcessing::spriteCol#0 ] +Allocated zp[2]:146 [ startProcessing::screenPtr#0 ] +Allocated zp[2]:148 [ startProcessing::$24 ] +Allocated zp[2]:150 [ startProcessing::$4 ] +Allocated zp[1]:152 [ startProcessing::ch#0 ] +Allocated zp[2]:153 [ startProcessing::$25 ] +Allocated zp[2]:155 [ startProcessing::$6 ] +Allocated zp[2]:157 [ startProcessing::$26 ] +Allocated zp[2]:159 [ startProcessing::$8 ] +Allocated zp[2]:161 [ startProcessing::$9 ] +Allocated zp[2]:163 [ startProcessing::spriteX#0 ] +Allocated zp[2]:165 [ startProcessing::$27 ] +Allocated zp[2]:167 [ startProcessing::$11 ] +Allocated zp[2]:169 [ startProcessing::$12 ] +Allocated zp[2]:171 [ startProcessing::spriteY#0 ] +Allocated zp[1]:173 [ startProcessing::spritePtr#0 ] +Allocated zp[1]:174 [ startProcessing::$15 ] +Allocated zp[1]:175 [ startProcessing::$36 ] +Allocated zp[1]:176 [ startProcessing::$37 ] +Allocated zp[1]:177 [ startProcessing::$38 ] +Allocated zp[1]:178 [ startProcessing::$39 ] +Allocated zp[1]:179 [ startProcessing::$22 ] +Allocated zp[1]:180 [ atan2_16::$23 ] +Allocated zp[1]:181 [ atan2_16::$22 ] INITIAL ASM Target platform is c64basic / MOS6502X @@ -4936,7 +4935,7 @@ main: { __b4: // [40] call initSprites // Init sprites - // [141] phi from main::@4 to initSprites [phi:main::@4->initSprites] + // [140] phi from main::@4 to initSprites [phi:main::@4->initSprites] initSprites_from___b4: jsr initSprites // [41] phi from main::@4 to main::@10 [phi:main::@4->main::@10] @@ -5002,7 +5001,7 @@ main: { lda.z center_y sta.z startProcessing.center_y // [56] call startProcessing - // [192] phi from main::@6 to startProcessing [phi:main::@6->startProcessing] + // [191] phi from main::@6 to startProcessing [phi:main::@6->startProcessing] startProcessing_from___b6: jsr startProcessing jmp __b5_from___b6 @@ -5034,24 +5033,23 @@ main: { processChars: { .label __9 = $53 .label __10 = $54 - .label __12 = $56 - .label __13 = $55 - .label __21 = $59 - .label __25 = $61 + .label __12 = $55 + .label __13 = $49 + .label __21 = $58 + .label __25 = $60 .label __28 = $4d - .label __29 = $5d - .label __30 = $60 - .label __73 = $5b - .label __79 = $5e + .label __29 = $5c + .label __30 = $5f + .label __73 = $5a + .label __79 = $5d .label processing = $4e .label bitmask = $50 .label i = 9 .label xpos = $51 - .label ypos = $58 - .label xchar = $5c - .label ychar = $5f + .label ypos = $57 + .label xchar = $5b + .label ychar = $5e .label numActive = $a - .label __86 = $49 .label __87 = $4a .label __88 = $4b .label __89 = $4c @@ -5071,12 +5069,12 @@ processChars: { jmp __b1 // processChars::@1 __b1: - // [62] (byte~) processChars::$86 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [62] (byte~) processChars::$13 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i asl - sta.z __86 - // [63] (byte~) processChars::$87 ← (byte~) processChars::$86 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 - lda.z __86 + sta.z __13 + // [63] (byte~) processChars::$87 ← (byte~) processChars::$13 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3 + lda.z __13 clc adc.z i sta.z __87 @@ -5211,15 +5209,11 @@ processChars: { jmp __b5 // processChars::@5 __b5: - // [81] (byte~) processChars::$13 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 - lda.z i - asl - sta.z __13 - // [82] *((const nomodify byte*) SPRITES_XPOS + (byte~) processChars::$13) ← (byte)(word) processChars::xpos#0 -- pbuc1_derefidx_vbuz1=_byte_vwuz2 + // [81] *((const nomodify byte*) SPRITES_XPOS + (byte~) processChars::$13) ← (byte)(word) processChars::xpos#0 -- pbuc1_derefidx_vbuz1=_byte_vwuz2 ldy.z __13 lda.z xpos sta SPRITES_XPOS,y - // [83] (word~) processChars::$12 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 + // [82] (word~) processChars::$12 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y lda (processing),y sta.z __12 @@ -5234,14 +5228,14 @@ processChars: { ror.z __12 lsr.z __12+1 ror.z __12 - // [84] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$12 -- vbuz1=_byte_vwuz2 + // [83] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$12 -- vbuz1=_byte_vwuz2 lda.z __12 sta.z ypos - // [85] *((const nomodify byte*) SPRITES_YPOS + (byte~) processChars::$13) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2 + // [84] *((const nomodify byte*) SPRITES_YPOS + (byte~) processChars::$13) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda.z ypos ldy.z __13 sta SPRITES_YPOS,y - // [86] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const nomodify word) XPOS_LEFTMOST) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + // [85] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const nomodify word) XPOS_LEFTMOST) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 // Move sprite ldy #1 lda (processing),y @@ -5256,7 +5250,7 @@ processChars: { jmp __b14 // processChars::@14 __b14: - // [87] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const nomodify word) XPOS_RIGHTMOST) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 + // [86] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const nomodify word) XPOS_RIGHTMOST) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 ldy #1 lda #>XPOS_RIGHTMOST cmp (processing),y @@ -5270,7 +5264,7 @@ processChars: { jmp __b13 // processChars::@13 __b13: - // [88] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const nomodify word) YPOS_TOPMOST) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 + // [87] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const nomodify word) YPOS_TOPMOST) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda (processing),y @@ -5285,7 +5279,7 @@ processChars: { jmp __b12 // processChars::@12 __b12: - // [89] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const nomodify word) YPOS_BOTTOMMOST) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 + // [88] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const nomodify word) YPOS_BOTTOMMOST) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda #>YPOS_BOTTOMMOST @@ -5300,7 +5294,7 @@ processChars: { jmp __b9 // processChars::@9 __b9: - // [90] (word~) processChars::$21 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz2_ror_3 + // [89] (word~) processChars::$21 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz2_ror_3 lda.z xpos+1 lsr sta.z __21+1 @@ -5311,18 +5305,18 @@ processChars: { ror.z __21 lsr.z __21+1 ror.z __21 - // [91] (byte~) processChars::$73 ← (byte)(word~) processChars::$21 -- vbuz1=_byte_vwuz2 + // [90] (byte~) processChars::$73 ← (byte)(word~) processChars::$21 -- vbuz1=_byte_vwuz2 lda.z __21 sta.z __73 - // [92] (byte) processChars::xchar#0 ← (byte~) processChars::$73 - (const nomodify byte) BORDER_XPOS_LEFT/(byte) 8 -- vbuz1=vbuz2_minus_vbuc1 + // [91] (byte) processChars::xchar#0 ← (byte~) processChars::$73 - (const nomodify byte) BORDER_XPOS_LEFT/(byte) 8 -- vbuz1=vbuz2_minus_vbuc1 lax.z __73 axs #BORDER_XPOS_LEFT/8 stx.z xchar - // [93] (byte~) processChars::$29 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [92] (byte~) processChars::$29 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z xchar asl sta.z __29 - // [94] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const to_nomodify word*) VXSIN + (byte~) processChars::$29) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuz2 + // [93] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const to_nomodify word*) VXSIN + (byte~) processChars::$29) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuz2 ldx.z __29 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX clc @@ -5333,7 +5327,7 @@ processChars: { lda (processing),y adc VXSIN+1,x sta (processing),y - // [95] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1 + // [94] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX sty.z $ff clc @@ -5347,21 +5341,21 @@ processChars: { ldy #1 adc (processing),y sta (processing),y - // [96] (byte~) processChars::$79 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuz1=vbuz2_ror_3 + // [95] (byte~) processChars::$79 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuz1=vbuz2_ror_3 lda.z ypos lsr lsr lsr sta.z __79 - // [97] (byte) processChars::ychar#0 ← (byte~) processChars::$79 - (const nomodify byte) BORDER_YPOS_TOP/(byte) 8 -- vbuz1=vbuz2_minus_vbuc1 + // [96] (byte) processChars::ychar#0 ← (byte~) processChars::$79 - (const nomodify byte) BORDER_YPOS_TOP/(byte) 8 -- vbuz1=vbuz2_minus_vbuc1 lax.z __79 axs #BORDER_YPOS_TOP/8 stx.z ychar - // [98] (byte~) processChars::$30 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [97] (byte~) processChars::$30 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z ychar asl sta.z __30 - // [99] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const to_nomodify word*) VYSIN + (byte~) processChars::$30) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuz2 + // [98] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const to_nomodify word*) VYSIN + (byte~) processChars::$30) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuz2 ldx.z __30 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY clc @@ -5372,7 +5366,7 @@ processChars: { lda (processing),y adc VYSIN+1,x sta (processing),y - // [100] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 + // [99] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY clc lda (processing),y @@ -5387,38 +5381,38 @@ processChars: { jmp __b7 // processChars::@7 __b7: - // [101] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 + // [100] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 inc.z numActive - // [102] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] + // [101] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] __b2_from___b1: __b2_from___b7: - // [102] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy + // [101] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy jmp __b2 // processChars::@2 __b2: - // [103] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + // [102] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc.z i - // [104] if((byte) processChars::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + // [103] if((byte) processChars::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp.z i bne __b1_from___b2 jmp __breturn // processChars::@return __breturn: - // [105] return + // [104] return rts // processChars::@6 __b6: - // [106] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE -- pbuz1_derefidx_vbuc1=vbuc2 + // [105] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE -- pbuz1_derefidx_vbuc1=vbuc2 // Set status to FREE lda #STATUS_FREE ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS sta (processing),y - // [107] (byte~) processChars::$25 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 + // [106] (byte~) processChars::$25 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2 lda #$ff eor.z bitmask sta.z __25 - // [108] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) & (byte~) processChars::$25 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 + // [107] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) & (byte~) processChars::$25 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1 // Disable the sprite lda SPRITES_ENABLE and.z __25 @@ -5426,7 +5420,7 @@ processChars: { jmp __b7 // processChars::@4 __b4: - // [109] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + // [108] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora.z bitmask sta SPRITES_XMSB @@ -5437,24 +5431,24 @@ processChars: { // Utilizes symmetry around the center // init_angle_screen(byte* zp($3a) screen) init_angle_screen: { - .label __3 = $62 - .label __4 = $63 - .label __5 = $66 - .label __7 = $71 - .label __9 = $74 - .label __10 = $75 - .label __11 = $76 + .label __3 = $61 + .label __4 = $62 + .label __5 = $65 + .label __7 = $70 + .label __9 = $73 + .label __10 = $74 + .label __11 = $75 .label screen = $3a .label screen_topline = $c .label screen_bottomline = $e - .label xw = $64 - .label yw = $67 - .label angle_w = $6f - .label ang_w = $73 + .label xw = $63 + .label yw = $66 + .label angle_w = $6e + .label ang_w = $72 .label x = $10 .label xb = $11 .label y = $b - // [110] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz2_plus_vwuc1 + // [109] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz2_plus_vwuc1 lda.z screen clc adc #<$28*$c @@ -5462,7 +5456,7 @@ init_angle_screen: { lda.z screen+1 adc #>$28*$c sta.z screen_topline+1 - // [111] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz2_plus_vwuc1 + // [110] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz2_plus_vwuc1 lda.z screen clc adc #<$28*$c @@ -5470,41 +5464,41 @@ init_angle_screen: { lda.z screen+1 adc #>$28*$c sta.z screen_bottomline+1 - // [112] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1] + // [111] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1] __b1_from_init_angle_screen: - // [112] phi (byte*) init_angle_screen::screen_bottomline#6 = (byte*) init_angle_screen::screen_bottomline#0 [phi:init_angle_screen->init_angle_screen::@1#0] -- register_copy - // [112] phi (byte*) init_angle_screen::screen_topline#6 = (byte*) init_angle_screen::screen_topline#0 [phi:init_angle_screen->init_angle_screen::@1#1] -- register_copy - // [112] phi (byte) init_angle_screen::y#5 = (byte) 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1 + // [111] phi (byte*) init_angle_screen::screen_bottomline#6 = (byte*) init_angle_screen::screen_bottomline#0 [phi:init_angle_screen->init_angle_screen::@1#0] -- register_copy + // [111] phi (byte*) init_angle_screen::screen_topline#6 = (byte*) init_angle_screen::screen_topline#0 [phi:init_angle_screen->init_angle_screen::@1#1] -- register_copy + // [111] phi (byte) init_angle_screen::y#5 = (byte) 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1 lda #0 sta.z y jmp __b1 - // [112] phi from init_angle_screen::@4 to init_angle_screen::@1 [phi:init_angle_screen::@4->init_angle_screen::@1] + // [111] phi from init_angle_screen::@4 to init_angle_screen::@1 [phi:init_angle_screen::@4->init_angle_screen::@1] __b1_from___b4: - // [112] phi (byte*) init_angle_screen::screen_bottomline#6 = (byte*) init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#0] -- register_copy - // [112] phi (byte*) init_angle_screen::screen_topline#6 = (byte*) init_angle_screen::screen_topline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#1] -- register_copy - // [112] phi (byte) init_angle_screen::y#5 = (byte) init_angle_screen::y#1 [phi:init_angle_screen::@4->init_angle_screen::@1#2] -- register_copy + // [111] phi (byte*) init_angle_screen::screen_bottomline#6 = (byte*) init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#0] -- register_copy + // [111] phi (byte*) init_angle_screen::screen_topline#6 = (byte*) init_angle_screen::screen_topline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#1] -- register_copy + // [111] phi (byte) init_angle_screen::y#5 = (byte) init_angle_screen::y#1 [phi:init_angle_screen::@4->init_angle_screen::@1#2] -- register_copy jmp __b1 // init_angle_screen::@1 __b1: - // [113] phi from init_angle_screen::@1 to init_angle_screen::@2 [phi:init_angle_screen::@1->init_angle_screen::@2] + // [112] phi from init_angle_screen::@1 to init_angle_screen::@2 [phi:init_angle_screen::@1->init_angle_screen::@2] __b2_from___b1: - // [113] phi (byte) init_angle_screen::xb#2 = (byte) $27 [phi:init_angle_screen::@1->init_angle_screen::@2#0] -- vbuz1=vbuc1 + // [112] phi (byte) init_angle_screen::xb#2 = (byte) $27 [phi:init_angle_screen::@1->init_angle_screen::@2#0] -- vbuz1=vbuc1 lda #$27 sta.z xb - // [113] phi (byte) init_angle_screen::x#2 = (byte) 0 [phi:init_angle_screen::@1->init_angle_screen::@2#1] -- vbuz1=vbuc1 + // [112] phi (byte) init_angle_screen::x#2 = (byte) 0 [phi:init_angle_screen::@1->init_angle_screen::@2#1] -- vbuz1=vbuc1 lda #0 sta.z x jmp __b2 // init_angle_screen::@2 __b2: - // [114] if((byte) init_angle_screen::x#2<(byte) $13+(byte) 1) goto init_angle_screen::@3 -- vbuz1_lt_vbuc1_then_la1 + // [113] if((byte) init_angle_screen::x#2<(byte) $13+(byte) 1) goto init_angle_screen::@3 -- vbuz1_lt_vbuc1_then_la1 lda.z x cmp #$13+1 bcc __b3 jmp __b4 // init_angle_screen::@4 __b4: - // [115] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 -- pbuz1=pbuz1_minus_vbuc1 + // [114] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 -- pbuz1=pbuz1_minus_vbuc1 sec lda.z screen_topline sbc #$28 @@ -5512,7 +5506,7 @@ init_angle_screen: { lda.z screen_topline+1 sbc #0 sta.z screen_topline+1 - // [116] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [115] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc.z screen_bottomline @@ -5520,55 +5514,55 @@ init_angle_screen: { bcc !+ inc.z screen_bottomline+1 !: - // [117] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#5 -- vbuz1=_inc_vbuz1 + // [116] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#5 -- vbuz1=_inc_vbuz1 inc.z y - // [118] if((byte) init_angle_screen::y#1!=(byte) $d) goto init_angle_screen::@1 -- vbuz1_neq_vbuc1_then_la1 + // [117] if((byte) init_angle_screen::y#1!=(byte) $d) goto init_angle_screen::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$d cmp.z y bne __b1_from___b4 jmp __breturn // init_angle_screen::@return __breturn: - // [119] return + // [118] return rts // init_angle_screen::@3 __b3: - // [120] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [119] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z x asl sta.z __3 - // [121] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 -- vbuz1=vbuc1_minus_vbuz2 + // [120] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 -- vbuz1=vbuc1_minus_vbuz2 lda #$27 sec sbc.z __3 sta.z __4 - // [122] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 -- vwuz1=vbuz2_word_vbuc1 + // [121] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 -- vwuz1=vbuz2_word_vbuc1 lda.z __4 ldy #0 sta.z xw+1 sty.z xw - // [123] (byte~) init_angle_screen::$5 ← (byte) init_angle_screen::y#5 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [122] (byte~) init_angle_screen::$5 ← (byte) init_angle_screen::y#5 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z y asl sta.z __5 - // [124] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$5 w= (byte) 0 -- vwuz1=vbuz2_word_vbuc1 + // [123] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$5 w= (byte) 0 -- vwuz1=vbuz2_word_vbuc1 lda.z __5 ldy #0 sta.z yw+1 sty.z yw - // [125] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 -- vwsz1=vwsz2 + // [124] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 -- vwsz1=vwsz2 lda.z xw sta.z atan2_16.x lda.z xw+1 sta.z atan2_16.x+1 - // [126] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 -- vwsz1=vwsz2 + // [125] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 -- vwsz1=vwsz2 lda.z yw sta.z atan2_16.y lda.z yw+1 sta.z atan2_16.y+1 - // [127] call atan2_16 + // [126] call atan2_16 jsr atan2_16 - // [128] (word) atan2_16::return#2 ← (word) atan2_16::return#0 -- vwuz1=vwuz2 + // [127] (word) atan2_16::return#2 ← (word) atan2_16::return#0 -- vwuz1=vwuz2 lda.z atan2_16.return sta.z atan2_16.return_1 lda.z atan2_16.return+1 @@ -5576,12 +5570,12 @@ init_angle_screen: { jmp __b5 // init_angle_screen::@5 __b5: - // [129] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 -- vwuz1=vwuz2 + // [128] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 -- vwuz1=vwuz2 lda.z atan2_16.return_1 sta.z angle_w lda.z atan2_16.return_1+1 sta.z angle_w+1 - // [130] (word~) init_angle_screen::$7 ← (word) init_angle_screen::angle_w#0 + (byte) $80 -- vwuz1=vwuz2_plus_vbuc1 + // [129] (word~) init_angle_screen::$7 ← (word) init_angle_screen::angle_w#0 + (byte) $80 -- vwuz1=vwuz2_plus_vbuc1 lda #$80 clc adc.z angle_w @@ -5589,48 +5583,48 @@ init_angle_screen: { lda #0 adc.z angle_w+1 sta.z __7+1 - // [131] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$7 -- vbuz1=_hi_vwuz2 + // [130] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$7 -- vbuz1=_hi_vwuz2 lda.z __7+1 sta.z ang_w - // [132] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3 + // [131] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3 lda.z ang_w ldy.z xb sta (screen_bottomline),y - // [133] (byte~) init_angle_screen::$9 ← - (byte) init_angle_screen::ang_w#0 -- vbuz1=_neg_vbuz2 + // [132] (byte~) init_angle_screen::$9 ← - (byte) init_angle_screen::ang_w#0 -- vbuz1=_neg_vbuz2 lda.z ang_w eor #$ff clc adc #1 sta.z __9 - // [134] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$9 -- pbuz1_derefidx_vbuz2=vbuz3 + // [133] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$9 -- pbuz1_derefidx_vbuz2=vbuz3 lda.z __9 ldy.z xb sta (screen_topline),y - // [135] (byte~) init_angle_screen::$10 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 -- vbuz1=vbuc1_plus_vbuz2 + // [134] (byte~) init_angle_screen::$10 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 -- vbuz1=vbuc1_plus_vbuz2 lax.z ang_w axs #-[$80] stx.z __10 - // [136] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$10 -- pbuz1_derefidx_vbuz2=vbuz3 + // [135] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$10 -- pbuz1_derefidx_vbuz2=vbuz3 lda.z __10 ldy.z x sta (screen_topline),y - // [137] (byte~) init_angle_screen::$11 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -- vbuz1=vbuc1_minus_vbuz2 + // [136] (byte~) init_angle_screen::$11 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -- vbuz1=vbuc1_minus_vbuz2 lda #$80 sec sbc.z ang_w sta.z __11 - // [138] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuz3 + // [137] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuz3 lda.z __11 ldy.z x sta (screen_bottomline),y - // [139] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2 -- vbuz1=_inc_vbuz1 + // [138] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2 -- vbuz1=_inc_vbuz1 inc.z x - // [140] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2 -- vbuz1=_dec_vbuz1 + // [139] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2 -- vbuz1=_dec_vbuz1 dec.z xb - // [113] phi from init_angle_screen::@5 to init_angle_screen::@2 [phi:init_angle_screen::@5->init_angle_screen::@2] + // [112] phi from init_angle_screen::@5 to init_angle_screen::@2 [phi:init_angle_screen::@5->init_angle_screen::@2] __b2_from___b5: - // [113] phi (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#1 [phi:init_angle_screen::@5->init_angle_screen::@2#0] -- register_copy - // [113] phi (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#1 [phi:init_angle_screen::@5->init_angle_screen::@2#1] -- register_copy + // [112] phi (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#1 [phi:init_angle_screen::@5->init_angle_screen::@2#0] -- register_copy + // [112] phi (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#1 [phi:init_angle_screen::@5->init_angle_screen::@2#1] -- register_copy jmp __b2 } // initSprites @@ -5638,9 +5632,9 @@ init_angle_screen: { initSprites: { .label sp = $12 .label i = $14 - // [142] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] + // [141] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] __b1_from_initSprites: - // [142] phi (byte*) initSprites::sp#2 = (const nomodify byte*) SPRITE_DATA [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 + // [141] phi (byte*) initSprites::sp#2 = (const nomodify byte*) SPRITE_DATA [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 lda #SPRITE_DATA @@ -5649,7 +5643,7 @@ initSprites: { // Clear sprite data // initSprites::@1 __b1: - // [143] if((byte*) initSprites::sp#2<(const nomodify byte*) SPRITE_DATA+(const nomodify byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2 -- pbuz1_lt_pbuc1_then_la1 + // [142] if((byte*) initSprites::sp#2<(const nomodify byte*) SPRITE_DATA+(const nomodify byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2 -- pbuz1_lt_pbuc1_then_la1 lda.z sp+1 cmp #>SPRITE_DATA+NUM_PROCESSING*$40 bcc __b2 @@ -5658,60 +5652,60 @@ initSprites: { cmp #initSprites::@3] + // [143] phi from initSprites::@1 to initSprites::@3 [phi:initSprites::@1->initSprites::@3] __b3_from___b1: - // [144] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@3#0] -- vbuz1=vbuc1 + // [143] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@3#0] -- vbuz1=vbuc1 lda #0 sta.z i jmp __b3 // Initialize sprite registers - // [144] phi from initSprites::@3 to initSprites::@3 [phi:initSprites::@3->initSprites::@3] + // [143] phi from initSprites::@3 to initSprites::@3 [phi:initSprites::@3->initSprites::@3] __b3_from___b3: - // [144] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@3->initSprites::@3#0] -- register_copy + // [143] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@3->initSprites::@3#0] -- register_copy jmp __b3 // initSprites::@3 __b3: - // [145] *((const nomodify byte*) SPRITES_COLOR + (byte) initSprites::i#2) ← (const nomodify byte) LIGHT_BLUE -- pbuc1_derefidx_vbuz1=vbuc2 + // [144] *((const nomodify byte*) SPRITES_COLOR + (byte) initSprites::i#2) ← (const nomodify byte) LIGHT_BLUE -- pbuc1_derefidx_vbuz1=vbuc2 lda #LIGHT_BLUE ldy.z i sta SPRITES_COLOR,y - // [146] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuz1=_inc_vbuz1 + // [145] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [147] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@3 -- vbuz1_neq_vbuc1_then_la1 + // [146] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@3 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp.z i bne __b3_from___b3 jmp __b4 // initSprites::@4 __b4: - // [148] *((const nomodify byte*) SPRITES_MC) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [147] *((const nomodify byte*) SPRITES_MC) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - // [149] *((const nomodify byte*) SPRITES_EXPAND_X) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [148] *((const nomodify byte*) SPRITES_EXPAND_X) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_X - // [150] *((const nomodify byte*) SPRITES_EXPAND_Y) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [149] *((const nomodify byte*) SPRITES_EXPAND_Y) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_Y jmp __breturn // initSprites::@return __breturn: - // [151] return + // [150] return rts // initSprites::@2 __b2: - // [152] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + // [151] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (sp),y - // [153] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 + // [152] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 inc.z sp bne !+ inc.z sp+1 !: - // [142] phi from initSprites::@2 to initSprites::@1 [phi:initSprites::@2->initSprites::@1] + // [141] phi from initSprites::@2 to initSprites::@1 [phi:initSprites::@2->initSprites::@1] __b1_from___b2: - // [142] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@2->initSprites::@1#0] -- register_copy + // [141] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@2->initSprites::@1#0] -- register_copy jmp __b1 } // setupRasterIrq @@ -5720,35 +5714,35 @@ setupRasterIrq: { .label irqRoutine = irqTop // asm { sei } sei - // [155] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK -- _deref_pbuc1=vbuc2 + // [154] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - // [156] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2 + // [155] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - // [157] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2 + // [156] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT jmp __b1 // setupRasterIrq::@1 __b1: - // [158] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + // [157] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda #$7f and VIC_CONTROL sta VIC_CONTROL jmp __b2 // setupRasterIrq::@2 __b2: - // [159] *((const nomodify byte*) RASTER) ← <(const nomodify byte) RASTER_IRQ_TOP -- _deref_pbuc1=vbuc2 + // [158] *((const nomodify byte*) RASTER) ← <(const nomodify byte) RASTER_IRQ_TOP -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - // [160] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER -- _deref_pbuc1=vbuc2 + // [159] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - // [161] *((const nomodify void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_qprc1=pprc2 + // [160] *((const nomodify void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_qprc1=pprc2 // Set the IRQ routine lda #getCharToProcess::@1] + // [165] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] __b1_from_getCharToProcess: - // [166] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 + // [165] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta.z closest_y - // [166] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 + // [165] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 lda #0 sta.z closest_x - // [166] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vbuz1=vbuc1 + // [165] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vbuz1=vbuc1 lda #0 sta.z y - // [166] phi (byte) getCharToProcess::closest_dist#8 = (const nomodify byte) NOT_FOUND [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 + // [165] phi (byte) getCharToProcess::closest_dist#8 = (const nomodify byte) NOT_FOUND [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #NOT_FOUND sta.z closest_dist - // [166] phi (byte*) getCharToProcess::dist_line#6 = (byte*) getCharToProcess::dist_line#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- register_copy - // [166] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#0 [phi:getCharToProcess->getCharToProcess::@1#5] -- register_copy + // [165] phi (byte*) getCharToProcess::dist_line#6 = (byte*) getCharToProcess::dist_line#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- register_copy + // [165] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#0 [phi:getCharToProcess->getCharToProcess::@1#5] -- register_copy jmp __b1 // getCharToProcess::@1 __b1: - // [167] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] + // [166] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] __b2_from___b1: - // [167] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy - // [167] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy - // [167] phi (byte) getCharToProcess::closest_dist#2 = (byte) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy - // [167] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 + // [166] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy + // [166] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy + // [166] phi (byte) getCharToProcess::closest_dist#2 = (byte) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy + // [166] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1 lda #0 sta.z x jmp __b2 // getCharToProcess::@2 __b2: - // [168] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 + // [167] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 lda #' ' ldy.z x cmp (screen_line),y @@ -5833,43 +5827,43 @@ getCharToProcess: { jmp __b4 // getCharToProcess::@4 __b4: - // [169] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) -- vbuz1=pbuz2_derefidx_vbuz3 + // [168] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) -- vbuz1=pbuz2_derefidx_vbuz3 ldy.z x lda (dist_line),y sta.z dist - // [170] if((byte) getCharToProcess::dist#0>=(byte) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vbuz1_ge_vbuz2_then_la1 + // [169] if((byte) getCharToProcess::dist#0>=(byte) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vbuz1_ge_vbuz2_then_la1 lda.z dist cmp.z closest_dist bcs __b12 jmp __b5 // getCharToProcess::@5 __b5: - // [171] (byte) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 + // [170] (byte) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2 lda.z x sta.z return_x_1 - // [172] (byte) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 + // [171] (byte) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda.z y sta.z return_y_1 - // [173] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] + // [172] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] __b3_from___b11: __b3_from___b12: __b3_from___b5: - // [173] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy - // [173] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy - // [173] phi (byte) getCharToProcess::return_dist#1 = (byte) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy + // [172] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy + // [172] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy + // [172] phi (byte) getCharToProcess::return_dist#1 = (byte) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy jmp __b3 // getCharToProcess::@3 __b3: - // [174] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 + // [173] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1 inc.z x - // [175] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 + // [174] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp.z x bne __b10 jmp __b6 // getCharToProcess::@6 __b6: - // [176] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [175] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc.z screen_line @@ -5877,7 +5871,7 @@ getCharToProcess: { bcc !+ inc.z screen_line+1 !: - // [177] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [176] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc.z dist_line @@ -5885,28 +5879,28 @@ getCharToProcess: { bcc !+ inc.z dist_line+1 !: - // [178] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 + // [177] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc.z y - // [179] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 + // [178] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp.z y bne __b9 jmp __b7 // getCharToProcess::@7 __b7: - // [180] if((byte) getCharToProcess::return_dist#1==(const nomodify byte) NOT_FOUND) goto getCharToProcess::@return -- vbuz1_eq_vbuc1_then_la1 + // [179] if((byte) getCharToProcess::return_dist#1==(const nomodify byte) NOT_FOUND) goto getCharToProcess::@return -- vbuz1_eq_vbuc1_then_la1 lda #NOT_FOUND cmp.z return_dist_1 beq __breturn jmp __b8 // getCharToProcess::@8 __b8: - // [181] (word~) getCharToProcess::$11 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2 + // [180] (word~) getCharToProcess::$11 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2 lda.z return_y_1 sta.z __11 lda #0 sta.z __11+1 - // [182] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$11 << (byte) 2 -- vwuz1=vwuz2_rol_2 + // [181] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$11 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda.z __11 asl sta.z __12 @@ -5915,7 +5909,7 @@ getCharToProcess: { sta.z __12+1 asl.z __12 rol.z __12+1 - // [183] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$11 -- vwuz1=vwuz2_plus_vwuz3 + // [182] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$11 -- vwuz1=vwuz2_plus_vwuz3 lda.z __12 clc adc.z __11 @@ -5923,7 +5917,7 @@ getCharToProcess: { lda.z __12+1 adc.z __11+1 sta.z __13+1 - // [184] (word~) getCharToProcess::$8 ← (word~) getCharToProcess::$13 << (byte) 3 -- vwuz1=vwuz2_rol_3 + // [183] (word~) getCharToProcess::$8 ← (word~) getCharToProcess::$13 << (byte) 3 -- vwuz1=vwuz2_rol_3 lda.z __13 asl sta.z __8 @@ -5934,7 +5928,7 @@ getCharToProcess: { rol.z __8+1 asl.z __8 rol.z __8+1 - // [185] (byte*~) getCharToProcess::$9 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$8 -- pbuz1=pbuz2_plus_vwuz3 + // [184] (byte*~) getCharToProcess::$9 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$8 -- pbuz1=pbuz2_plus_vwuz3 lda.z SCREEN_COPY clc adc.z __8 @@ -5942,7 +5936,7 @@ getCharToProcess: { lda.z SCREEN_COPY+1 adc.z __8+1 sta.z __9+1 - // [186] *((byte*~) getCharToProcess::$9 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + // [185] *((byte*~) getCharToProcess::$9 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 // clear the found char on the screen copy lda #' ' ldy.z return_x_1 @@ -5950,43 +5944,43 @@ getCharToProcess: { jmp __breturn // getCharToProcess::@return __breturn: - // [187] return + // [186] return rts // getCharToProcess::@9 __b9: - // [188] (byte) getCharToProcess::closest_dist#10 ← (byte) getCharToProcess::return_dist#1 -- vbuz1=vbuz2 + // [187] (byte) getCharToProcess::closest_dist#10 ← (byte) getCharToProcess::return_dist#1 -- vbuz1=vbuz2 lda.z return_dist_1 sta.z closest_dist - // [166] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] + // [165] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] __b1_from___b9: - // [166] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy - // [166] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy - // [166] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy - // [166] phi (byte) getCharToProcess::closest_dist#8 = (byte) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy - // [166] phi (byte*) getCharToProcess::dist_line#6 = (byte*) getCharToProcess::dist_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy - // [166] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#5] -- register_copy + // [165] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy + // [165] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy + // [165] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy + // [165] phi (byte) getCharToProcess::closest_dist#8 = (byte) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy + // [165] phi (byte*) getCharToProcess::dist_line#6 = (byte*) getCharToProcess::dist_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy + // [165] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#5] -- register_copy jmp __b1 // getCharToProcess::@10 __b10: - // [189] (byte) getCharToProcess::closest_dist#12 ← (byte) getCharToProcess::return_dist#1 -- vbuz1=vbuz2 + // [188] (byte) getCharToProcess::closest_dist#12 ← (byte) getCharToProcess::return_dist#1 -- vbuz1=vbuz2 lda.z return_dist_1 sta.z closest_dist - // [167] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] + // [166] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] __b2_from___b10: - // [167] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy - // [167] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy - // [167] phi (byte) getCharToProcess::closest_dist#2 = (byte) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy - // [167] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy + // [166] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy + // [166] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy + // [166] phi (byte) getCharToProcess::closest_dist#2 = (byte) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy + // [166] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy jmp __b2 // getCharToProcess::@12 __b12: - // [190] (byte) getCharToProcess::return_dist#6 ← (byte) getCharToProcess::closest_dist#2 -- vbuz1=vbuz2 + // [189] (byte) getCharToProcess::return_dist#6 ← (byte) getCharToProcess::closest_dist#2 -- vbuz1=vbuz2 lda.z closest_dist sta.z return_dist_1 jmp __b3_from___b12 // getCharToProcess::@11 __b11: - // [191] (byte) getCharToProcess::return_dist#5 ← (byte) getCharToProcess::closest_dist#2 -- vbuz1=vbuz2 + // [190] (byte) getCharToProcess::return_dist#5 ← (byte) getCharToProcess::closest_dist#2 -- vbuz1=vbuz2 lda.z closest_dist sta.z return_dist_1 jmp __b3_from___b11 @@ -5995,116 +5989,116 @@ getCharToProcess: { // Start processing a char - by inserting it into the PROCESSING array // startProcessing(byte zp($47) center_x, byte zp($48) center_y) startProcessing: { - .label __0 = $8c - .label __4 = $97 - .label __6 = $9c - .label __8 = $a0 - .label __9 = $a2 - .label __11 = $a8 - .label __12 = $aa - .label __15 = $af - .label __21 = $85 - .label __22 = $b4 - .label __23 = $86 - .label __24 = $95 - .label __25 = $9a - .label __26 = $9e - .label __27 = $a6 + .label __0 = $8b + .label __4 = $96 + .label __6 = $9b + .label __8 = $9f + .label __9 = $a1 + .label __11 = $a7 + .label __12 = $a9 + .label __15 = $ae + .label __21 = $84 + .label __22 = $b3 + .label __23 = $85 + .label __24 = $94 + .label __25 = $99 + .label __26 = $9d + .label __27 = $a5 .label center_x = $47 .label center_y = $48 .label i = $20 - .label offset = $8e - .label colPtr = $90 - .label spriteCol = $92 - .label screenPtr = $93 + .label offset = $8d + .label colPtr = $8f + .label spriteCol = $91 + .label screenPtr = $92 .label spriteData = $23 - .label ch = $99 + .label ch = $98 .label chargenData = $21 .label i1 = $25 - .label spriteX = $a4 - .label spriteY = $ac - .label spritePtr = $ae + .label spriteX = $a3 + .label spriteY = $ab + .label spritePtr = $ad // Busy-wait while finding an empty slot in the PROCESSING array .label freeIdx = $20 // Busy-wait while finding an empty slot in the PROCESSING array .label freeIdx_1 = $1f - .label __28 = $81 - .label __29 = $82 - .label __30 = $83 - .label __31 = $84 - .label __33 = $88 - .label __34 = $8a - .label __36 = $b0 - .label __37 = $b1 - .label __38 = $b2 - .label __39 = $b3 - // [193] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] + .label __28 = $80 + .label __29 = $81 + .label __30 = $82 + .label __31 = $83 + .label __33 = $87 + .label __34 = $89 + .label __36 = $af + .label __37 = $b0 + .label __38 = $b1 + .label __39 = $b2 + // [192] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] __b1_from_startProcessing: - // [193] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuz1=vbuc1 + // [192] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuz1=vbuc1 lda #$ff sta.z freeIdx_1 jmp __b1 // startProcessing::@1 __b1: - // [194] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] + // [193] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] __b2_from___b1: - // [194] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 + // [193] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 lda #0 sta.z i jmp __b2 - // [194] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] + // [193] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] __b2_from___b3: - // [194] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy + // [193] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy jmp __b2 // startProcessing::@2 __b2: - // [195] (byte~) startProcessing::$28 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [194] (byte~) startProcessing::$28 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i asl sta.z __28 - // [196] (byte~) startProcessing::$29 ← (byte~) startProcessing::$28 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 + // [195] (byte~) startProcessing::$29 ← (byte~) startProcessing::$28 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 lda.z __28 clc adc.z i sta.z __29 - // [197] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [196] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z __29 asl sta.z __30 - // [198] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 + // [197] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3 lda.z __30 clc adc.z i sta.z __31 - // [199] (byte~) startProcessing::$21 ← (byte~) startProcessing::$31 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [198] (byte~) startProcessing::$21 ← (byte~) startProcessing::$31 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z __31 asl sta.z __21 - // [200] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$21)!=(const byte) STATUS_FREE) goto startProcessing::@3 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + // [199] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$21)!=(const byte) STATUS_FREE) goto startProcessing::@3 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 lda #STATUS_FREE ldy.z __21 cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y bne __b3 - // [201] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] + // [200] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] __b4_from___b2: __b4_from___b9: - // [201] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy + // [200] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy jmp __b4 // startProcessing::@4 __b4: - // [202] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 + // [201] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 lda #$ff cmp.z freeIdx beq __b8 jmp __b5 // startProcessing::@5 __b5: - // [203] (word~) startProcessing::$23 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + // [202] (word~) startProcessing::$23 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda.z center_y sta.z __23 lda #0 sta.z __23+1 - // [204] (word~) startProcessing::$33 ← (word~) startProcessing::$23 << (byte) 2 -- vwuz1=vwuz2_rol_2 + // [203] (word~) startProcessing::$33 ← (word~) startProcessing::$23 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda.z __23 asl sta.z __33 @@ -6113,7 +6107,7 @@ startProcessing: { sta.z __33+1 asl.z __33 rol.z __33+1 - // [205] (word~) startProcessing::$34 ← (word~) startProcessing::$33 + (word~) startProcessing::$23 -- vwuz1=vwuz2_plus_vwuz3 + // [204] (word~) startProcessing::$34 ← (word~) startProcessing::$33 + (word~) startProcessing::$23 -- vwuz1=vwuz2_plus_vwuz3 lda.z __33 clc adc.z __23 @@ -6121,7 +6115,7 @@ startProcessing: { lda.z __33+1 adc.z __23+1 sta.z __34+1 - // [206] (word~) startProcessing::$0 ← (word~) startProcessing::$34 << (byte) 3 -- vwuz1=vwuz2_rol_3 + // [205] (word~) startProcessing::$0 ← (word~) startProcessing::$34 << (byte) 3 -- vwuz1=vwuz2_rol_3 lda.z __34 asl sta.z __0 @@ -6132,7 +6126,7 @@ startProcessing: { rol.z __0+1 asl.z __0 rol.z __0+1 - // [207] (word) startProcessing::offset#0 ← (word~) startProcessing::$0 + (byte) startProcessing::center_x#0 -- vwuz1=vwuz2_plus_vbuz3 + // [206] (word) startProcessing::offset#0 ← (word~) startProcessing::$0 + (byte) startProcessing::center_x#0 -- vwuz1=vwuz2_plus_vbuz3 lda.z center_x clc adc.z __0 @@ -6140,7 +6134,7 @@ startProcessing: { lda #0 adc.z __0+1 sta.z offset+1 - // [208] (byte*) startProcessing::colPtr#0 ← (const nomodify byte*) COLS + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz2 + // [207] (byte*) startProcessing::colPtr#0 ← (const nomodify byte*) COLS + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz2 lda.z offset clc adc #COLS sta.z colPtr+1 - // [209] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) -- vbuz1=_deref_pbuz2 + // [208] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) -- vbuz1=_deref_pbuz2 ldy #0 lda (colPtr),y sta.z spriteCol - // [210] (byte*) startProcessing::screenPtr#0 ← (const nomodify byte*) SCREEN + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz2 + // [209] (byte*) startProcessing::screenPtr#0 ← (const nomodify byte*) SCREEN + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz2 lda.z offset clc adc #SCREEN sta.z screenPtr+1 - // [211] (word~) startProcessing::$24 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 + // [210] (word~) startProcessing::$24 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 lda.z freeIdx sta.z __24 lda #0 sta.z __24+1 - // [212] (word~) startProcessing::$4 ← (word~) startProcessing::$24 << (byte) 6 -- vwuz1=vwuz2_rol_6 + // [211] (word~) startProcessing::$4 ← (word~) startProcessing::$24 << (byte) 6 -- vwuz1=vwuz2_rol_6 lda.z __24+1 lsr sta.z $ff @@ -6178,7 +6172,7 @@ startProcessing: { lsr.z $ff ror.z __4+1 ror.z __4 - // [213] (byte*) startProcessing::spriteData#0 ← (const nomodify byte*) SPRITE_DATA + (word~) startProcessing::$4 -- pbuz1=pbuc1_plus_vwuz2 + // [212] (byte*) startProcessing::spriteData#0 ← (const nomodify byte*) SPRITE_DATA + (word~) startProcessing::$4 -- pbuz1=pbuc1_plus_vwuz2 lda.z __4 clc adc #SPRITE_DATA sta.z spriteData+1 - // [214] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- vbuz1=_deref_pbuz2 + // [213] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- vbuz1=_deref_pbuz2 ldy #0 lda (screenPtr),y sta.z ch - // [215] (word~) startProcessing::$25 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuz2 + // [214] (word~) startProcessing::$25 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuz2 lda.z ch sta.z __25 lda #0 sta.z __25+1 - // [216] (word~) startProcessing::$6 ← (word~) startProcessing::$25 << (byte) 3 -- vwuz1=vwuz2_rol_3 + // [215] (word~) startProcessing::$6 ← (word~) startProcessing::$25 << (byte) 3 -- vwuz1=vwuz2_rol_3 lda.z __25 asl sta.z __6 @@ -6206,7 +6200,7 @@ startProcessing: { rol.z __6+1 asl.z __6 rol.z __6+1 - // [217] (byte*) startProcessing::chargenData#0 ← (const nomodify byte*) CHARGEN + (word~) startProcessing::$6 -- pbuz1=pbuc1_plus_vwuz2 + // [216] (byte*) startProcessing::chargenData#0 ← (const nomodify byte*) CHARGEN + (word~) startProcessing::$6 -- pbuz1=pbuc1_plus_vwuz2 lda.z __6 clc adc #startProcessing::@6] + // [219] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] __b6_from___b5: - // [220] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuz1=vbuc1 + // [219] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuz1=vbuc1 lda #0 sta.z i1 - // [220] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy - // [220] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy + // [219] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy + // [219] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy jmp __b6 - // [220] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] + // [219] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] __b6_from___b6: - // [220] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy - // [220] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy - // [220] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy + // [219] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy + // [219] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy + // [219] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy jmp __b6 // startProcessing::@6 __b6: - // [221] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 + // [220] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (chargenData),y ldy #0 sta (spriteData),y - // [222] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 + // [221] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 lda #3 clc adc.z spriteData @@ -6248,31 +6242,31 @@ startProcessing: { bcc !+ inc.z spriteData+1 !: - // [223] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 + // [222] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 inc.z chargenData bne !+ inc.z chargenData+1 !: - // [224] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuz1=_inc_vbuz1 + // [223] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuz1=_inc_vbuz1 inc.z i1 - // [225] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuz1_neq_vbuc1_then_la1 + // [224] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp.z i1 bne __b6_from___b6 jmp __b7 // startProcessing::@7 __b7: - // [226] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2 + // [225] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT // asm { cli } cli - // [228] (word~) startProcessing::$26 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 + // [227] (word~) startProcessing::$26 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 lda.z center_x sta.z __26 lda #0 sta.z __26+1 - // [229] (word~) startProcessing::$8 ← (word~) startProcessing::$26 << (byte) 3 -- vwuz1=vwuz2_rol_3 + // [228] (word~) startProcessing::$8 ← (word~) startProcessing::$26 << (byte) 3 -- vwuz1=vwuz2_rol_3 lda.z __26 asl sta.z __8 @@ -6283,7 +6277,7 @@ startProcessing: { rol.z __8+1 asl.z __8 rol.z __8+1 - // [230] (word~) startProcessing::$9 ← (const nomodify byte) BORDER_XPOS_LEFT + (word~) startProcessing::$8 -- vwuz1=vbuc1_plus_vwuz2 + // [229] (word~) startProcessing::$9 ← (const nomodify byte) BORDER_XPOS_LEFT + (word~) startProcessing::$8 -- vwuz1=vbuc1_plus_vwuz2 lda #BORDER_XPOS_LEFT clc adc.z __8 @@ -6291,7 +6285,7 @@ startProcessing: { lda #0 adc.z __8+1 sta.z __9+1 - // [231] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$9 << (byte) 4 -- vwuz1=vwuz2_rol_4 + // [230] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$9 << (byte) 4 -- vwuz1=vwuz2_rol_4 lda.z __9 asl sta.z spriteX @@ -6304,12 +6298,12 @@ startProcessing: { rol.z spriteX+1 asl.z spriteX rol.z spriteX+1 - // [232] (word~) startProcessing::$27 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + // [231] (word~) startProcessing::$27 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda.z center_y sta.z __27 lda #0 sta.z __27+1 - // [233] (word~) startProcessing::$11 ← (word~) startProcessing::$27 << (byte) 3 -- vwuz1=vwuz2_rol_3 + // [232] (word~) startProcessing::$11 ← (word~) startProcessing::$27 << (byte) 3 -- vwuz1=vwuz2_rol_3 lda.z __27 asl sta.z __11 @@ -6320,7 +6314,7 @@ startProcessing: { rol.z __11+1 asl.z __11 rol.z __11+1 - // [234] (word~) startProcessing::$12 ← (const nomodify byte) BORDER_YPOS_TOP + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz2 + // [233] (word~) startProcessing::$12 ← (const nomodify byte) BORDER_YPOS_TOP + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz2 lda #BORDER_YPOS_TOP clc adc.z __11 @@ -6328,7 +6322,7 @@ startProcessing: { lda #0 adc.z __11+1 sta.z __12+1 - // [235] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz2_rol_4 + // [234] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz2_rol_4 lda.z __12 asl sta.z spriteY @@ -6341,79 +6335,79 @@ startProcessing: { rol.z spriteY+1 asl.z spriteY rol.z spriteY+1 - // [236] (byte) startProcessing::spritePtr#0 ← (byte)(const nomodify byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 + // [235] (byte) startProcessing::spritePtr#0 ← (byte)(const nomodify byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 lax.z freeIdx axs #-[SPRITE_DATA/$40] stx.z spritePtr - // [237] (byte~) startProcessing::$15 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuz1=vbuz2_rol_3 + // [236] (byte~) startProcessing::$15 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuz1=vbuz2_rol_3 lda.z freeIdx asl asl asl sta.z __15 - // [238] (byte~) startProcessing::$36 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [237] (byte~) startProcessing::$36 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z freeIdx asl sta.z __36 - // [239] (byte~) startProcessing::$37 ← (byte~) startProcessing::$36 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 + // [238] (byte~) startProcessing::$37 ← (byte~) startProcessing::$36 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 lda.z __36 clc adc.z freeIdx sta.z __37 - // [240] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [239] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z __37 asl sta.z __38 - // [241] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 + // [240] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3 lda.z __38 clc adc.z freeIdx sta.z __39 - // [242] (byte~) startProcessing::$22 ← (byte~) startProcessing::$39 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [241] (byte~) startProcessing::$22 ← (byte~) startProcessing::$39 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z __39 asl sta.z __22 - // [243] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$22) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuz1=vwuz2 + // [242] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$22) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuz1=vwuz2 ldy.z __22 lda.z spriteX sta PROCESSING,y lda.z spriteX+1 sta PROCESSING+1,y - // [244] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$22) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuz1=vwuz2 + // [243] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$22) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuz1=vwuz2 ldy.z __22 lda.z spriteY sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,y lda.z spriteY+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,y - // [245] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$22) ← (word)(byte~) startProcessing::$15 -- pwuc1_derefidx_vbuz1=_word_vbuz2 + // [244] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$22) ← (word)(byte~) startProcessing::$15 -- pwuc1_derefidx_vbuz1=_word_vbuz2 lda.z __15 ldy.z __22 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,y lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,y - // [246] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$22) ← (word) $3c -- pwuc1_derefidx_vbuz1=vwuc2 + // [245] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$22) ← (word) $3c -- pwuc1_derefidx_vbuz1=vwuc2 ldy.z __22 lda #<$3c sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,y lda #>$3c sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,y - // [247] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$22) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuz1=vbuz2 + // [246] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$22) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda.z freeIdx ldy.z __22 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,y - // [248] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$22) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuz1=vbuz2 + // [247] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$22) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda.z spritePtr ldy.z __22 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,y - // [249] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$22) ← (byte) startProcessing::spriteCol#0 -- pbuc1_derefidx_vbuz1=vbuz2 + // [248] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$22) ← (byte) startProcessing::spriteCol#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda.z spriteCol ldy.z __22 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_COL,y - // [250] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$22) ← (const byte) STATUS_NEW -- pbuc1_derefidx_vbuz1=vbuc2 + // [249] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$22) ← (const byte) STATUS_NEW -- pbuc1_derefidx_vbuz1=vbuc2 lda #STATUS_NEW ldy.z __22 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y - // [251] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$22) ← (byte*) startProcessing::screenPtr#0 -- qbuc1_derefidx_vbuz1=pbuz2 + // [250] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$22) ← (byte*) startProcessing::screenPtr#0 -- qbuc1_derefidx_vbuz1=pbuz2 ldy.z __22 lda.z screenPtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,y @@ -6422,29 +6416,29 @@ startProcessing: { jmp __breturn // startProcessing::@return __breturn: - // [252] return + // [251] return rts // startProcessing::@8 __b8: - // [253] (byte) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2 + // [252] (byte) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2 lda.z freeIdx sta.z freeIdx_1 - // [193] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] + // [192] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] __b1_from___b8: - // [193] phi (byte) startProcessing::freeIdx#6 = (byte) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy + // [192] phi (byte) startProcessing::freeIdx#6 = (byte) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy jmp __b1 // startProcessing::@3 __b3: - // [254] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 + // [253] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [255] if((byte) startProcessing::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 + // [254] if((byte) startProcessing::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp.z i bne __b2_from___b3 jmp __b9 // startProcessing::@9 __b9: - // [256] (byte) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuz2 + // [255] (byte) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuz2 lda.z freeIdx_1 sta.z freeIdx jmp __b4_from___b9 @@ -6453,12 +6447,12 @@ startProcessing: { // Find the atan2(x, y) - which is the angle of the line from (0,0) to (x,y) // Finding the angle requires a binary search using CORDIC_ITERATIONS_16 // Returns the angle in hex-degrees (0=0, 0x8000=PI, 0x10000=2*PI) -// atan2_16(signed word zp($69) x, signed word zp($6b) y) +// atan2_16(signed word zp($68) x, signed word zp($6a) y) atan2_16: { .label __2 = $26 .label __7 = $28 - .label __22 = $b6 - .label __23 = $b5 + .label __22 = $b5 + .label __23 = $b4 .label yi = $26 .label xi = $28 .label angle = $2d @@ -6468,16 +6462,16 @@ atan2_16: { .label angle_1 = $2b .label i = $2a .label return = $2d - .label x = $69 - .label y = $6b - .label return_1 = $6d - // [257] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 -- vwsz1_ge_0_then_la1 + .label x = $68 + .label y = $6a + .label return_1 = $6c + // [256] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 -- vwsz1_ge_0_then_la1 lda.z y+1 bpl __b1 jmp __b2 // atan2_16::@2 __b2: - // [258] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 -- vwsz1=_neg_vwsz2 + // [257] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 -- vwsz1=_neg_vwsz2 sec lda #0 sbc.z y @@ -6485,20 +6479,20 @@ atan2_16: { lda #0 sbc.z y+1 sta.z __2+1 - // [259] phi from atan2_16::@1 atan2_16::@2 to atan2_16::@3 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3] + // [258] phi from atan2_16::@1 atan2_16::@2 to atan2_16::@3 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3] __b3_from___b1: __b3_from___b2: - // [259] phi (signed word) atan2_16::yi#0 = (signed word) atan2_16::yi#16 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3#0] -- register_copy + // [258] phi (signed word) atan2_16::yi#0 = (signed word) atan2_16::yi#16 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3#0] -- register_copy jmp __b3 // atan2_16::@3 __b3: - // [260] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 -- vwsz1_ge_0_then_la1 + // [259] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 -- vwsz1_ge_0_then_la1 lda.z x+1 bpl __b4 jmp __b5 // atan2_16::@5 __b5: - // [261] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 -- vwsz1=_neg_vwsz2 + // [260] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 -- vwsz1=_neg_vwsz2 sec lda #0 sbc.z x @@ -6506,54 +6500,54 @@ atan2_16: { lda #0 sbc.z x+1 sta.z __7+1 - // [262] phi from atan2_16::@4 atan2_16::@5 to atan2_16::@6 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6] + // [261] phi from atan2_16::@4 atan2_16::@5 to atan2_16::@6 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6] __b6_from___b4: __b6_from___b5: - // [262] phi (signed word) atan2_16::xi#0 = (signed word) atan2_16::xi#13 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6#0] -- register_copy + // [261] phi (signed word) atan2_16::xi#0 = (signed word) atan2_16::xi#13 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6#0] -- register_copy jmp __b6 // atan2_16::@6 __b6: - // [263] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10] + // [262] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10] __b10_from___b6: - // [263] phi (word) atan2_16::angle#12 = (word) 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vwuc1 + // [262] phi (word) atan2_16::angle#12 = (word) 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vwuc1 lda #<0 sta.z angle_1 lda #>0 sta.z angle_1+1 - // [263] phi (byte) atan2_16::i#2 = (byte) 0 [phi:atan2_16::@6->atan2_16::@10#1] -- vbuz1=vbuc1 + // [262] phi (byte) atan2_16::i#2 = (byte) 0 [phi:atan2_16::@6->atan2_16::@10#1] -- vbuz1=vbuc1 lda #0 sta.z i - // [263] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#0 [phi:atan2_16::@6->atan2_16::@10#2] -- register_copy - // [263] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#0 [phi:atan2_16::@6->atan2_16::@10#3] -- register_copy + // [262] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#0 [phi:atan2_16::@6->atan2_16::@10#2] -- register_copy + // [262] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#0 [phi:atan2_16::@6->atan2_16::@10#3] -- register_copy jmp __b10 // atan2_16::@10 __b10: - // [264] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 -- vwsz1_neq_0_then_la1 + // [263] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 -- vwsz1_neq_0_then_la1 lda.z yi+1 bne __b11 lda.z yi bne __b11 - // [265] phi from atan2_16::@10 atan2_16::@19 to atan2_16::@12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12] + // [264] phi from atan2_16::@10 atan2_16::@19 to atan2_16::@12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12] __b12_from___b10: __b12_from___b19: - // [265] phi (word) atan2_16::angle#6 = (word) atan2_16::angle#12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12#0] -- register_copy + // [264] phi (word) atan2_16::angle#6 = (word) atan2_16::angle#12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12#0] -- register_copy jmp __b12 // atan2_16::@12 __b12: - // [266] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + // [265] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 -- vwuz1=vwuz2_ror_1 lda.z angle_1+1 lsr sta.z angle+1 lda.z angle_1 ror sta.z angle - // [267] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 -- vwsz1_ge_0_then_la1 + // [266] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 -- vwsz1_ge_0_then_la1 lda.z x+1 bpl __b7_from___b12 jmp __b21 // atan2_16::@21 __b21: - // [268] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 -- vwuz1=vwuc1_minus_vwuz1 + // [267] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 -- vwuz1=vwuc1_minus_vwuz1 sec lda #<$8000 sbc.z angle @@ -6561,20 +6555,20 @@ atan2_16: { lda #>$8000 sbc.z angle+1 sta.z angle+1 - // [269] phi from atan2_16::@12 atan2_16::@21 to atan2_16::@7 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7] + // [268] phi from atan2_16::@12 atan2_16::@21 to atan2_16::@7 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7] __b7_from___b12: __b7_from___b21: - // [269] phi (word) atan2_16::angle#11 = (word) atan2_16::angle#1 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7#0] -- register_copy + // [268] phi (word) atan2_16::angle#11 = (word) atan2_16::angle#1 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7#0] -- register_copy jmp __b7 // atan2_16::@7 __b7: - // [270] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 -- vwsz1_ge_0_then_la1 + // [269] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 -- vwsz1_ge_0_then_la1 lda.z y+1 bpl __b8_from___b7 jmp __b9 // atan2_16::@9 __b9: - // [271] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 -- vwuz1=_neg_vwuz1 + // [270] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 -- vwuz1=_neg_vwuz1 sec lda #0 sbc.z angle @@ -6582,81 +6576,81 @@ atan2_16: { lda #0 sbc.z angle+1 sta.z angle+1 - // [272] phi from atan2_16::@7 atan2_16::@9 to atan2_16::@8 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8] + // [271] phi from atan2_16::@7 atan2_16::@9 to atan2_16::@8 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8] __b8_from___b7: __b8_from___b9: - // [272] phi (word) atan2_16::return#0 = (word) atan2_16::angle#11 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8#0] -- register_copy + // [271] phi (word) atan2_16::return#0 = (word) atan2_16::angle#11 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8#0] -- register_copy jmp __b8 // atan2_16::@8 __b8: jmp __breturn // atan2_16::@return __breturn: - // [273] return + // [272] return rts // atan2_16::@11 __b11: - // [274] (byte) atan2_16::shift#5 ← (byte) atan2_16::i#2 -- vbuz1=vbuz2 + // [273] (byte) atan2_16::shift#5 ← (byte) atan2_16::i#2 -- vbuz1=vbuz2 lda.z i sta.z shift - // [275] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 -- vwsz1=vwsz2 + // [274] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 -- vwsz1=vwsz2 lda.z xi sta.z xd lda.z xi+1 sta.z xd+1 - // [276] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 -- vwsz1=vwsz2 + // [275] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 -- vwsz1=vwsz2 lda.z yi sta.z yd lda.z yi+1 sta.z yd+1 - // [277] phi from atan2_16::@11 atan2_16::@14 to atan2_16::@13 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13] + // [276] phi from atan2_16::@11 atan2_16::@14 to atan2_16::@13 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13] __b13_from___b11: __b13_from___b14: - // [277] phi (signed word) atan2_16::yd#3 = (signed word) atan2_16::yd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#0] -- register_copy - // [277] phi (signed word) atan2_16::xd#3 = (signed word) atan2_16::xd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#1] -- register_copy - // [277] phi (byte) atan2_16::shift#2 = (byte) atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy + // [276] phi (signed word) atan2_16::yd#3 = (signed word) atan2_16::yd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#0] -- register_copy + // [276] phi (signed word) atan2_16::xd#3 = (signed word) atan2_16::xd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#1] -- register_copy + // [276] phi (byte) atan2_16::shift#2 = (byte) atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy jmp __b13 // atan2_16::@13 __b13: - // [278] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuz1_ge_vbuc1_then_la1 + // [277] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuz1_ge_vbuc1_then_la1 lda.z shift cmp #2 bcs __b14 jmp __b15 // atan2_16::@15 __b15: - // [279] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 -- vbuc1_eq_vbuz1_then_la1 + // [278] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z shift beq __b17_from___b15 jmp __b16 // atan2_16::@16 __b16: - // [280] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 + // [279] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 lda.z xd+1 cmp #$80 ror.z xd+1 ror.z xd - // [281] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 + // [280] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 lda.z yd+1 cmp #$80 ror.z yd+1 ror.z yd - // [282] phi from atan2_16::@15 atan2_16::@16 to atan2_16::@17 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17] + // [281] phi from atan2_16::@15 atan2_16::@16 to atan2_16::@17 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17] __b17_from___b15: __b17_from___b16: - // [282] phi (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#0] -- register_copy - // [282] phi (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#1] -- register_copy + // [281] phi (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#0] -- register_copy + // [281] phi (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#1] -- register_copy jmp __b17 // atan2_16::@17 __b17: - // [283] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 -- vwsz1_ge_0_then_la1 + // [282] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 -- vwsz1_ge_0_then_la1 lda.z yi+1 bpl __b18 jmp __b20 // atan2_16::@20 __b20: - // [284] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_minus_vwsz2 + // [283] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_minus_vwsz2 lda.z xi sec sbc.z yd @@ -6664,7 +6658,7 @@ atan2_16: { lda.z xi+1 sbc.z yd+1 sta.z xi+1 - // [285] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_plus_vwsz2 + // [284] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_plus_vwsz2 lda.z yi clc adc.z xd @@ -6672,11 +6666,11 @@ atan2_16: { lda.z yi+1 adc.z xd+1 sta.z yi+1 - // [286] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [285] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i asl sta.z __23 - // [287] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuz2 + // [286] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuz2 ldy.z __23 sec lda.z angle_1 @@ -6685,31 +6679,31 @@ atan2_16: { lda.z angle_1+1 sbc CORDIC_ATAN2_ANGLES_16+1,y sta.z angle_1+1 - // [288] phi from atan2_16::@18 atan2_16::@20 to atan2_16::@19 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19] + // [287] phi from atan2_16::@18 atan2_16::@20 to atan2_16::@19 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19] __b19_from___b18: __b19_from___b20: - // [288] phi (signed word) atan2_16::xi#8 = (signed word) atan2_16::xi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#0] -- register_copy - // [288] phi (word) atan2_16::angle#13 = (word) atan2_16::angle#2 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#1] -- register_copy - // [288] phi (signed word) atan2_16::yi#8 = (signed word) atan2_16::yi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#2] -- register_copy + // [287] phi (signed word) atan2_16::xi#8 = (signed word) atan2_16::xi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#0] -- register_copy + // [287] phi (word) atan2_16::angle#13 = (word) atan2_16::angle#2 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#1] -- register_copy + // [287] phi (signed word) atan2_16::yi#8 = (signed word) atan2_16::yi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#2] -- register_copy jmp __b19 // atan2_16::@19 __b19: - // [289] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2 -- vbuz1=_inc_vbuz1 + // [288] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [290] if((byte) atan2_16::i#1==(const nomodify byte) CORDIC_ITERATIONS_16-(byte) 1+(byte) 1) goto atan2_16::@12 -- vbuz1_eq_vbuc1_then_la1 + // [289] if((byte) atan2_16::i#1==(const nomodify byte) CORDIC_ITERATIONS_16-(byte) 1+(byte) 1) goto atan2_16::@12 -- vbuz1_eq_vbuc1_then_la1 lda #CORDIC_ITERATIONS_16-1+1 cmp.z i beq __b12_from___b19 - // [263] phi from atan2_16::@19 to atan2_16::@10 [phi:atan2_16::@19->atan2_16::@10] + // [262] phi from atan2_16::@19 to atan2_16::@10 [phi:atan2_16::@19->atan2_16::@10] __b10_from___b19: - // [263] phi (word) atan2_16::angle#12 = (word) atan2_16::angle#13 [phi:atan2_16::@19->atan2_16::@10#0] -- register_copy - // [263] phi (byte) atan2_16::i#2 = (byte) atan2_16::i#1 [phi:atan2_16::@19->atan2_16::@10#1] -- register_copy - // [263] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#8 [phi:atan2_16::@19->atan2_16::@10#2] -- register_copy - // [263] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#8 [phi:atan2_16::@19->atan2_16::@10#3] -- register_copy + // [262] phi (word) atan2_16::angle#12 = (word) atan2_16::angle#13 [phi:atan2_16::@19->atan2_16::@10#0] -- register_copy + // [262] phi (byte) atan2_16::i#2 = (byte) atan2_16::i#1 [phi:atan2_16::@19->atan2_16::@10#1] -- register_copy + // [262] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#8 [phi:atan2_16::@19->atan2_16::@10#2] -- register_copy + // [262] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#8 [phi:atan2_16::@19->atan2_16::@10#3] -- register_copy jmp __b10 // atan2_16::@18 __b18: - // [291] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_plus_vwsz2 + // [290] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_plus_vwsz2 lda.z xi clc adc.z yd @@ -6717,7 +6711,7 @@ atan2_16: { lda.z xi+1 adc.z yd+1 sta.z xi+1 - // [292] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_minus_vwsz2 + // [291] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_minus_vwsz2 lda.z yi sec sbc.z xd @@ -6725,11 +6719,11 @@ atan2_16: { lda.z yi+1 sbc.z xd+1 sta.z yi+1 - // [293] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [292] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i asl sta.z __22 - // [294] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) -- vwuz1=vwuz1_plus_pwuc1_derefidx_vbuz2 + // [293] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) -- vwuz1=vwuz1_plus_pwuc1_derefidx_vbuz2 ldy.z __22 clc lda.z angle_1 @@ -6741,7 +6735,7 @@ atan2_16: { jmp __b19_from___b18 // atan2_16::@14 __b14: - // [295] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 + // [294] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 lda.z xd+1 cmp #$80 ror.z xd+1 @@ -6750,7 +6744,7 @@ atan2_16: { cmp #$80 ror.z xd+1 ror.z xd - // [296] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 + // [295] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 lda.z yd+1 cmp #$80 ror.z yd+1 @@ -6759,13 +6753,13 @@ atan2_16: { cmp #$80 ror.z yd+1 ror.z yd - // [297] (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#2 - (byte) 2 -- vbuz1=vbuz1_minus_2 + // [296] (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#2 - (byte) 2 -- vbuz1=vbuz1_minus_2 dec.z shift dec.z shift jmp __b13_from___b14 // atan2_16::@4 __b4: - // [298] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 -- vwsz1=vwsz2 + // [297] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 -- vwsz1=vwsz2 lda.z x sta.z xi lda.z x+1 @@ -6773,7 +6767,7 @@ atan2_16: { jmp __b6_from___b4 // atan2_16::@1 __b1: - // [299] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 -- vwsz1=vwsz2 + // [298] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 -- vwsz1=vwsz2 lda.z y sta.z yi lda.z y+1 @@ -6832,211 +6826,212 @@ Removing always clobbered register reg byte y as potential for zp[1]:8 [ main::i Statement [38] if((byte) main::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto main::@3 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#1 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#1 ] { } ) always clobbers reg byte a Statement [52] *((const nomodify byte*) SCREEN+(word) $3e7) ← (byte) '.' [ ] ( main:7 [ ] { } ) always clobbers reg byte a Statement [57] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] { } ) always clobbers reg byte a reg byte y -Statement [62] (byte~) processChars::$86 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$86 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$86 ] { } ) always clobbers reg byte a +Statement [62] (byte~) processChars::$13 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$13 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:9 [ processChars::i#10 processChars::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Statement [63] (byte~) processChars::$87 ← (byte~) processChars::$86 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$87 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$87 ] { } ) always clobbers reg byte a -Statement [64] (byte~) processChars::$88 ← (byte~) processChars::$87 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$88 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$88 ] { } ) always clobbers reg byte a -Statement [65] (byte~) processChars::$89 ← (byte~) processChars::$88 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$89 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$89 ] { } ) always clobbers reg byte a -Statement [66] (byte~) processChars::$28 ← (byte~) processChars::$89 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$28 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$28 ] { } ) always clobbers reg byte a -Statement [67] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite*) PROCESSING + (byte~) processChars::$28 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] { } ) always clobbers reg byte a -Statement [68] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [63] (byte~) processChars::$87 ← (byte~) processChars::$13 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::$87 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::$87 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:73 [ processChars::$13 ] +Statement [64] (byte~) processChars::$88 ← (byte~) processChars::$87 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::$88 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::$88 ] { } ) always clobbers reg byte a +Statement [65] (byte~) processChars::$89 ← (byte~) processChars::$88 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::$89 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::$89 ] { } ) always clobbers reg byte a +Statement [66] (byte~) processChars::$28 ← (byte~) processChars::$89 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::$28 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::$28 ] { } ) always clobbers reg byte a +Statement [67] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite*) PROCESSING + (byte~) processChars::$28 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 ] { } ) always clobbers reg byte a +Statement [68] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:9 [ processChars::i#10 processChars::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:10 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Statement [69] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:73 [ processChars::$13 ] +Statement [69] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:80 [ processChars::bitmask#0 ] Removing always clobbered register reg byte y as potential for zp[1]:80 [ processChars::bitmask#0 ] -Statement [70] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y -Statement [71] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [70] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [71] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp[1]:9 [ processChars::i#10 processChars::i#1 ] Removing always clobbered register reg byte x as potential for zp[1]:10 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Removing always clobbered register reg byte x as potential for zp[1]:73 [ processChars::$13 ] Removing always clobbered register reg byte x as potential for zp[1]:80 [ processChars::bitmask#0 ] -Statement [72] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a -Statement [73] *((const nomodify byte*) SPRITES_COLOR + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y -Statement [74] *((const nomodify byte*) SCREEN+(const nomodify word) SPRITE_PTRS + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y -Statement [75] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y -Statement [76] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a reg byte y -Statement [79] (byte~) processChars::$10 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] { } ) always clobbers reg byte a -Statement [80] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) & (byte~) processChars::$10 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a -Statement [81] (byte~) processChars::$13 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] { } ) always clobbers reg byte a -Statement [82] *((const nomodify byte*) SPRITES_XPOS + (byte~) processChars::$13) ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] { } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:85 [ processChars::$13 ] -Statement [83] (word~) processChars::$12 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 processChars::$12 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 processChars::$12 ] { } ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp[1]:85 [ processChars::$13 ] -Statement [84] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$12 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 processChars::ypos#0 ] { } ) always clobbers reg byte a -Statement [86] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const nomodify word) XPOS_LEFTMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte a as potential for zp[1]:88 [ processChars::ypos#0 ] -Removing always clobbered register reg byte y as potential for zp[1]:88 [ processChars::ypos#0 ] -Statement [87] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const nomodify word) XPOS_RIGHTMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y -Statement [88] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const nomodify word) YPOS_TOPMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y -Statement [89] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const nomodify word) YPOS_BOTTOMMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y -Statement [90] (word~) processChars::$21 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$21 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$21 ] { } ) always clobbers reg byte a -Statement [91] (byte~) processChars::$73 ← (byte)(word~) processChars::$21 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$73 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$73 ] { } ) always clobbers reg byte a -Statement [93] (byte~) processChars::$29 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$29 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$29 ] { } ) always clobbers reg byte a -Statement [94] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const to_nomodify word*) VXSIN + (byte~) processChars::$29) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y -Statement [95] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y -Statement [96] (byte~) processChars::$79 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$79 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$79 ] { } ) always clobbers reg byte a -Statement [98] (byte~) processChars::$30 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$30 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$30 ] { } ) always clobbers reg byte a -Statement [99] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const to_nomodify word*) VYSIN + (byte~) processChars::$30) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] { } ) always clobbers reg byte a reg byte y -Statement [100] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 ] { } ) always clobbers reg byte a reg byte y -Statement [104] if((byte) processChars::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:11 [ processChars::i#1 processChars::numActive#3 ] { } ) always clobbers reg byte a -Statement [106] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y -Statement [107] (byte~) processChars::$25 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$25 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$25 ] { } ) always clobbers reg byte a -Statement [108] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) & (byte~) processChars::$25 [ processChars::i#10 processChars::numActive#10 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 ] { } ) always clobbers reg byte a -Statement [109] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a -Statement [110] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] { } ) always clobbers reg byte a -Statement [111] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a -Statement [115] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a +Statement [72] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a +Statement [73] *((const nomodify byte*) SPRITES_COLOR + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [74] *((const nomodify byte*) SCREEN+(const nomodify word) SPRITE_PTRS + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [75] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [76] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [79] (byte~) processChars::$10 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] { } ) always clobbers reg byte a +Statement [80] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) & (byte~) processChars::$10 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a +Statement [81] *((const nomodify byte*) SPRITES_XPOS + (byte~) processChars::$13) ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [82] (word~) processChars::$12 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] { } ) always clobbers reg byte a reg byte y +Statement [83] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$12 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a +Statement [84] *((const nomodify byte*) SPRITES_YPOS + (byte~) processChars::$13) ← (byte) processChars::ypos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:87 [ processChars::ypos#0 ] +Statement [85] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const nomodify word) XPOS_LEFTMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp[1]:87 [ processChars::ypos#0 ] +Statement [86] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const nomodify word) XPOS_RIGHTMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [87] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const nomodify word) YPOS_TOPMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [88] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const nomodify word) YPOS_BOTTOMMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [89] (word~) processChars::$21 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$21 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$21 ] { } ) always clobbers reg byte a +Statement [90] (byte~) processChars::$73 ← (byte)(word~) processChars::$21 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$73 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$73 ] { } ) always clobbers reg byte a +Statement [92] (byte~) processChars::$29 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$29 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$29 ] { } ) always clobbers reg byte a +Statement [93] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const to_nomodify word*) VXSIN + (byte~) processChars::$29) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [94] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [95] (byte~) processChars::$79 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$79 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$79 ] { } ) always clobbers reg byte a +Statement [97] (byte~) processChars::$30 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$30 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$30 ] { } ) always clobbers reg byte a +Statement [98] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const to_nomodify word*) VYSIN + (byte~) processChars::$30) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] { } ) always clobbers reg byte a reg byte y +Statement [99] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 ] { } ) always clobbers reg byte a reg byte y +Statement [103] if((byte) processChars::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:11 [ processChars::i#1 processChars::numActive#3 ] { } ) always clobbers reg byte a +Statement [105] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [106] (byte~) processChars::$25 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$25 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$25 ] { } ) always clobbers reg byte a +Statement [107] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) & (byte~) processChars::$25 [ processChars::i#10 processChars::numActive#10 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 ] { } ) always clobbers reg byte a +Statement [108] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a +Statement [109] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] { } ) always clobbers reg byte a +Statement [110] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a +Statement [114] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:11 [ init_angle_screen::y#5 init_angle_screen::y#1 ] -Statement [116] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a -Statement [120] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [115] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [119] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:16 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:17 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Statement [121] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [122] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [120] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [121] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:11 [ init_angle_screen::y#5 init_angle_screen::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:16 [ init_angle_screen::x#2 init_angle_screen::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:17 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Statement [123] (byte~) init_angle_screen::$5 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [124] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$5 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y -Statement [125] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [126] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [128] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [129] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a -Statement [130] (word~) init_angle_screen::$7 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a -Statement [132] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y -Removing always clobbered register reg byte y as potential for zp[1]:115 [ init_angle_screen::ang_w#0 ] -Statement [133] (byte~) init_angle_screen::$9 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:115 [ init_angle_screen::ang_w#0 ] -Statement [134] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y -Statement [135] (byte~) init_angle_screen::$10 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a -Statement [136] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y -Statement [137] (byte~) init_angle_screen::$11 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a -Statement [138] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y -Statement [143] if((byte*) initSprites::sp#2<(const nomodify byte*) SPRITE_DATA+(const nomodify byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2 [ initSprites::sp#2 ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::sp#2 ] { } ) always clobbers reg byte a -Statement [145] *((const nomodify byte*) SPRITES_COLOR + (byte) initSprites::i#2) ← (const nomodify byte) LIGHT_BLUE [ initSprites::i#2 ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::i#2 ] { } ) always clobbers reg byte a +Statement [122] (byte~) init_angle_screen::$5 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [123] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$5 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [124] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [125] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [127] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [128] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [129] (word~) init_angle_screen::$7 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a +Statement [131] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:114 [ init_angle_screen::ang_w#0 ] +Statement [132] (byte~) init_angle_screen::$9 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:114 [ init_angle_screen::ang_w#0 ] +Statement [133] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [134] (byte~) init_angle_screen::$10 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a +Statement [135] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [136] (byte~) init_angle_screen::$11 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [137] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [142] if((byte*) initSprites::sp#2<(const nomodify byte*) SPRITE_DATA+(const nomodify byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2 [ initSprites::sp#2 ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::sp#2 ] { } ) always clobbers reg byte a +Statement [144] *((const nomodify byte*) SPRITES_COLOR + (byte) initSprites::i#2) ← (const nomodify byte) LIGHT_BLUE [ initSprites::i#2 ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:20 [ initSprites::i#2 initSprites::i#1 ] -Statement [148] *((const nomodify byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [149] *((const nomodify byte*) SPRITES_EXPAND_X) ← (byte) 0 [ ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [150] *((const nomodify byte*) SPRITES_EXPAND_Y) ← (byte) 0 [ ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [152] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::sp#2 ] { } ) always clobbers reg byte a reg byte y -Statement [155] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [156] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [157] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [158] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [159] *((const nomodify byte*) RASTER) ← <(const nomodify byte) RASTER_IRQ_TOP [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [160] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [161] *((const nomodify void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [164] (byte*) getCharToProcess::screen_line#0 ← (byte*)(void*) SCREEN_COPY#0 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [165] (byte*) getCharToProcess::dist_line#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 getCharToProcess::dist_line#0 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 getCharToProcess::dist_line#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [168] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [147] *((const nomodify byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [148] *((const nomodify byte*) SPRITES_EXPAND_X) ← (byte) 0 [ ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [149] *((const nomodify byte*) SPRITES_EXPAND_Y) ← (byte) 0 [ ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [151] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::sp#2 ] { } ) always clobbers reg byte a reg byte y +Statement [154] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [155] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [156] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [157] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [158] *((const nomodify byte*) RASTER) ← <(const nomodify byte) RASTER_IRQ_TOP [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [159] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [160] *((const nomodify void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [163] (byte*) getCharToProcess::screen_line#0 ← (byte*)(void*) SCREEN_COPY#0 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [164] (byte*) getCharToProcess::dist_line#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 getCharToProcess::dist_line#0 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 getCharToProcess::dist_line#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [167] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:25 [ getCharToProcess::y#7 getCharToProcess::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:26 [ getCharToProcess::x#2 getCharToProcess::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:27 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] Removing always clobbered register reg byte a as potential for zp[1]:28 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] Removing always clobbered register reg byte a as potential for zp[1]:29 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] -Statement [169] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [176] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [168] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [175] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:30 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] -Statement [177] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 getCharToProcess::dist_line#1 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 getCharToProcess::dist_line#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [181] (word~) getCharToProcess::$11 ← (word)(byte) getCharToProcess::return_y#1 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [182] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$11 << (byte) 2 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 getCharToProcess::$12 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 getCharToProcess::$12 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [183] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$11 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$13 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$13 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [184] (word~) getCharToProcess::$8 ← (word~) getCharToProcess::$13 << (byte) 3 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [185] (byte*~) getCharToProcess::$9 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$8 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [186] *((byte*~) getCharToProcess::$9 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [195] (byte~) startProcessing::$28 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$28 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [176] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 getCharToProcess::dist_line#1 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 getCharToProcess::dist_line#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [180] (word~) getCharToProcess::$11 ← (word)(byte) getCharToProcess::return_y#1 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [181] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$11 << (byte) 2 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 getCharToProcess::$12 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 getCharToProcess::$12 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [182] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$11 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$13 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$13 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [183] (word~) getCharToProcess::$8 ← (word~) getCharToProcess::$13 << (byte) 3 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [184] (byte*~) getCharToProcess::$9 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$8 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [185] *((byte*~) getCharToProcess::$9 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [194] (byte~) startProcessing::$28 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$28 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:71 [ startProcessing::center_x#0 ] Removing always clobbered register reg byte a as potential for zp[1]:72 [ startProcessing::center_y#0 ] Removing always clobbered register reg byte a as potential for zp[1]:31 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] Removing always clobbered register reg byte a as potential for zp[1]:32 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -Statement [196] (byte~) startProcessing::$29 ← (byte~) startProcessing::$28 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [197] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [198] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$31 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$31 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [199] (byte~) startProcessing::$21 ← (byte~) startProcessing::$31 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$21 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$21 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [200] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$21)!=(const byte) STATUS_FREE) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [203] (word~) startProcessing::$23 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$23 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$23 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [204] (word~) startProcessing::$33 ← (word~) startProcessing::$23 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$23 startProcessing::$33 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$23 startProcessing::$33 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [205] (word~) startProcessing::$34 ← (word~) startProcessing::$33 + (word~) startProcessing::$23 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$34 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$34 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [206] (word~) startProcessing::$0 ← (word~) startProcessing::$34 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [207] (word) startProcessing::offset#0 ← (word~) startProcessing::$0 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [208] (byte*) startProcessing::colPtr#0 ← (const nomodify byte*) COLS + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [209] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y +Statement [195] (byte~) startProcessing::$29 ← (byte~) startProcessing::$28 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [196] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [197] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$31 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$31 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [198] (byte~) startProcessing::$21 ← (byte~) startProcessing::$31 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$21 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$21 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [199] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$21)!=(const byte) STATUS_FREE) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [202] (word~) startProcessing::$23 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$23 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$23 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [203] (word~) startProcessing::$33 ← (word~) startProcessing::$23 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$23 startProcessing::$33 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$23 startProcessing::$33 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [204] (word~) startProcessing::$34 ← (word~) startProcessing::$33 + (word~) startProcessing::$23 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$34 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$34 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [205] (word~) startProcessing::$0 ← (word~) startProcessing::$34 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [206] (word) startProcessing::offset#0 ← (word~) startProcessing::$0 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [207] (byte*) startProcessing::colPtr#0 ← (const nomodify byte*) COLS + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [208] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:71 [ startProcessing::center_x#0 ] Removing always clobbered register reg byte y as potential for zp[1]:72 [ startProcessing::center_y#0 ] Removing always clobbered register reg byte y as potential for zp[1]:32 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -Statement [210] (byte*) startProcessing::screenPtr#0 ← (const nomodify byte*) SCREEN + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:146 [ startProcessing::spriteCol#0 ] -Statement [211] (word~) startProcessing::$24 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$24 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$24 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [212] (word~) startProcessing::$4 ← (word~) startProcessing::$24 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$4 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$4 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [213] (byte*) startProcessing::spriteData#0 ← (const nomodify byte*) SPRITE_DATA + (word~) startProcessing::$4 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [214] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp[1]:146 [ startProcessing::spriteCol#0 ] -Statement [215] (word~) startProcessing::$25 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$25 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$25 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [216] (word~) startProcessing::$6 ← (word~) startProcessing::$25 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$6 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$6 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [217] (byte*) startProcessing::chargenData#0 ← (const nomodify byte*) CHARGEN + (word~) startProcessing::$6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [219] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_CHARROM [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [221] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y +Statement [209] (byte*) startProcessing::screenPtr#0 ← (const nomodify byte*) SCREEN + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:145 [ startProcessing::spriteCol#0 ] +Statement [210] (word~) startProcessing::$24 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$24 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$24 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [211] (word~) startProcessing::$4 ← (word~) startProcessing::$24 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$4 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$4 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [212] (byte*) startProcessing::spriteData#0 ← (const nomodify byte*) SPRITE_DATA + (word~) startProcessing::$4 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [213] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:145 [ startProcessing::spriteCol#0 ] +Statement [214] (word~) startProcessing::$25 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$25 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$25 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [215] (word~) startProcessing::$6 ← (word~) startProcessing::$25 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$6 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$6 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [216] (byte*) startProcessing::chargenData#0 ← (const nomodify byte*) CHARGEN + (word~) startProcessing::$6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [218] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_CHARROM [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [220] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:37 [ startProcessing::i1#2 startProcessing::i1#1 ] Removing always clobbered register reg byte y as potential for zp[1]:37 [ startProcessing::i1#2 startProcessing::i1#1 ] -Statement [222] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [226] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [228] (word~) startProcessing::$26 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$26 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$26 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [229] (word~) startProcessing::$8 ← (word~) startProcessing::$26 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$8 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$8 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [230] (word~) startProcessing::$9 ← (const nomodify byte) BORDER_XPOS_LEFT + (word~) startProcessing::$8 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$9 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$9 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [231] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$9 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [232] (word~) startProcessing::$27 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$27 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$27 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [233] (word~) startProcessing::$11 ← (word~) startProcessing::$27 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$11 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$11 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [234] (word~) startProcessing::$12 ← (const nomodify byte) BORDER_YPOS_TOP + (word~) startProcessing::$11 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$12 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$12 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [235] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$12 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [236] (byte) startProcessing::spritePtr#0 ← (byte)(const nomodify byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [237] (byte~) startProcessing::$15 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:174 [ startProcessing::spritePtr#0 ] -Statement [238] (byte~) startProcessing::$36 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$36 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$36 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:175 [ startProcessing::$15 ] -Statement [239] (byte~) startProcessing::$37 ← (byte~) startProcessing::$36 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$37 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$37 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [240] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$38 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$38 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [241] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$39 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$39 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [242] (byte~) startProcessing::$22 ← (byte~) startProcessing::$39 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [243] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$22) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:180 [ startProcessing::$22 ] -Statement [244] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$22) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [245] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$22) ← (word)(byte~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [246] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$22) ← (word) $3c [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [247] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$22) ← (byte) startProcessing::freeIdx#2 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [248] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$22) ← (byte) startProcessing::spritePtr#0 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [249] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$22) ← (byte) startProcessing::spriteCol#0 [ startProcessing::screenPtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::screenPtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [250] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$22) ← (const byte) STATUS_NEW [ startProcessing::screenPtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::screenPtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [251] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$22) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [257] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [258] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [260] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [261] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [264] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [221] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [225] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [227] (word~) startProcessing::$26 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$26 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$26 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [228] (word~) startProcessing::$8 ← (word~) startProcessing::$26 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$8 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$8 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [229] (word~) startProcessing::$9 ← (const nomodify byte) BORDER_XPOS_LEFT + (word~) startProcessing::$8 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$9 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$9 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [230] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$9 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [231] (word~) startProcessing::$27 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$27 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$27 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [232] (word~) startProcessing::$11 ← (word~) startProcessing::$27 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$11 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$11 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [233] (word~) startProcessing::$12 ← (const nomodify byte) BORDER_YPOS_TOP + (word~) startProcessing::$11 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$12 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$12 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [234] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$12 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [235] (byte) startProcessing::spritePtr#0 ← (byte)(const nomodify byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [236] (byte~) startProcessing::$15 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:173 [ startProcessing::spritePtr#0 ] +Statement [237] (byte~) startProcessing::$36 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$36 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$36 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:174 [ startProcessing::$15 ] +Statement [238] (byte~) startProcessing::$37 ← (byte~) startProcessing::$36 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$37 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$37 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [239] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$38 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$38 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [240] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$39 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$39 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [241] (byte~) startProcessing::$22 ← (byte~) startProcessing::$39 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [242] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$22) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:179 [ startProcessing::$22 ] +Statement [243] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$22) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [244] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$22) ← (word)(byte~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [245] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$22) ← (word) $3c [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [246] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$22) ← (byte) startProcessing::freeIdx#2 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [247] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$22) ← (byte) startProcessing::spritePtr#0 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [248] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$22) ← (byte) startProcessing::spriteCol#0 [ startProcessing::screenPtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::screenPtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [249] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$22) ← (const byte) STATUS_NEW [ startProcessing::screenPtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::screenPtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [250] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$22) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [256] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [257] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [259] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [260] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [263] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:42 [ atan2_16::i#2 atan2_16::i#1 ] -Statement [266] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [267] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [268] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [270] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [271] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [275] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [265] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [266] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [267] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [269] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [270] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [274] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:47 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] -Statement [276] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [280] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [281] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [283] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [284] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [285] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [286] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [287] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [291] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [292] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [293] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [294] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [295] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [296] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [298] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [299] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [275] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [279] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [280] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [282] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [283] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [284] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [285] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [286] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [290] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [291] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [292] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [293] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [294] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [295] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [297] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [298] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Statement [3] (void*) SCREEN_COPY#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_COPY#0 heap_head#0 ] ( [ SCREEN_COPY#0 heap_head#0 ] { { heap_head#0 = heap_head#6 } } ) always clobbers reg byte a Statement [5] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_COPY#0 SCREEN_DIST#0 ] ( [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a Statement [12] *((const nomodify byte*) RASTER) ← (const nomodify byte) RASTER_IRQ_TOP [ ] ( [ ] { } ) always clobbers reg byte a @@ -7061,168 +7056,167 @@ Statement [36] *((const struct ProcessingSprite*) PROCESSING + (byte~) main::$10 Statement [38] if((byte) main::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto main::@3 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#1 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::i#1 ] { } ) always clobbers reg byte a Statement [52] *((const nomodify byte*) SCREEN+(word) $3e7) ← (byte) '.' [ ] ( main:7 [ ] { } ) always clobbers reg byte a Statement [57] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] ( main:7 [ SCREEN_COPY#0 SCREEN_DIST#0 main::src#2 main::dst#2 ] { } ) always clobbers reg byte a reg byte y -Statement [62] (byte~) processChars::$86 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$86 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$86 ] { } ) always clobbers reg byte a -Statement [63] (byte~) processChars::$87 ← (byte~) processChars::$86 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$87 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$87 ] { } ) always clobbers reg byte a -Statement [64] (byte~) processChars::$88 ← (byte~) processChars::$87 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$88 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$88 ] { } ) always clobbers reg byte a -Statement [65] (byte~) processChars::$89 ← (byte~) processChars::$88 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$89 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$89 ] { } ) always clobbers reg byte a -Statement [66] (byte~) processChars::$28 ← (byte~) processChars::$89 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$28 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$28 ] { } ) always clobbers reg byte a -Statement [67] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite*) PROCESSING + (byte~) processChars::$28 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] { } ) always clobbers reg byte a -Statement [68] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y -Statement [69] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y -Statement [70] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y -Statement [71] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte x reg byte y -Statement [72] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a -Statement [73] *((const nomodify byte*) SPRITES_COLOR + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y -Statement [74] *((const nomodify byte*) SCREEN+(const nomodify word) SPRITE_PTRS + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y -Statement [75] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y -Statement [76] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a reg byte y -Statement [79] (byte~) processChars::$10 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] { } ) always clobbers reg byte a -Statement [80] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) & (byte~) processChars::$10 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a -Statement [81] (byte~) processChars::$13 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] { } ) always clobbers reg byte a -Statement [82] *((const nomodify byte*) SPRITES_XPOS + (byte~) processChars::$13) ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] { } ) always clobbers reg byte a -Statement [83] (word~) processChars::$12 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 processChars::$12 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 processChars::$12 ] { } ) always clobbers reg byte a reg byte y -Statement [84] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$12 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 processChars::ypos#0 ] { } ) always clobbers reg byte a -Statement [85] *((const nomodify byte*) SPRITES_YPOS + (byte~) processChars::$13) ← (byte) processChars::ypos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a -Statement [86] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const nomodify word) XPOS_LEFTMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y -Statement [87] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const nomodify word) XPOS_RIGHTMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y -Statement [88] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const nomodify word) YPOS_TOPMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y -Statement [89] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const nomodify word) YPOS_BOTTOMMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y -Statement [90] (word~) processChars::$21 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$21 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$21 ] { } ) always clobbers reg byte a -Statement [91] (byte~) processChars::$73 ← (byte)(word~) processChars::$21 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$73 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$73 ] { } ) always clobbers reg byte a -Statement [93] (byte~) processChars::$29 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$29 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$29 ] { } ) always clobbers reg byte a -Statement [94] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const to_nomodify word*) VXSIN + (byte~) processChars::$29) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y -Statement [95] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y -Statement [96] (byte~) processChars::$79 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$79 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$79 ] { } ) always clobbers reg byte a -Statement [98] (byte~) processChars::$30 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$30 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$30 ] { } ) always clobbers reg byte a -Statement [99] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const to_nomodify word*) VYSIN + (byte~) processChars::$30) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] { } ) always clobbers reg byte a reg byte y -Statement [100] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 ] { } ) always clobbers reg byte a reg byte y -Statement [104] if((byte) processChars::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:11 [ processChars::i#1 processChars::numActive#3 ] { } ) always clobbers reg byte a -Statement [106] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y -Statement [107] (byte~) processChars::$25 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$25 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$25 ] { } ) always clobbers reg byte a -Statement [108] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) & (byte~) processChars::$25 [ processChars::i#10 processChars::numActive#10 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 ] { } ) always clobbers reg byte a -Statement [109] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a -Statement [110] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] { } ) always clobbers reg byte a -Statement [111] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a -Statement [115] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a -Statement [116] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a -Statement [120] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [121] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [122] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y -Statement [123] (byte~) init_angle_screen::$5 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [124] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$5 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y -Statement [125] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [126] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [128] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [129] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a -Statement [130] (word~) init_angle_screen::$7 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a -Statement [132] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y -Statement [133] (byte~) init_angle_screen::$9 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a -Statement [134] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y -Statement [135] (byte~) init_angle_screen::$10 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a -Statement [136] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y -Statement [137] (byte~) init_angle_screen::$11 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a -Statement [138] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y -Statement [143] if((byte*) initSprites::sp#2<(const nomodify byte*) SPRITE_DATA+(const nomodify byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2 [ initSprites::sp#2 ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::sp#2 ] { } ) always clobbers reg byte a -Statement [145] *((const nomodify byte*) SPRITES_COLOR + (byte) initSprites::i#2) ← (const nomodify byte) LIGHT_BLUE [ initSprites::i#2 ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::i#2 ] { } ) always clobbers reg byte a -Statement [148] *((const nomodify byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [149] *((const nomodify byte*) SPRITES_EXPAND_X) ← (byte) 0 [ ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [150] *((const nomodify byte*) SPRITES_EXPAND_Y) ← (byte) 0 [ ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [152] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::sp#2 ] { } ) always clobbers reg byte a reg byte y -Statement [155] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [156] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [157] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [158] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [159] *((const nomodify byte*) RASTER) ← <(const nomodify byte) RASTER_IRQ_TOP [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [160] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [161] *((const nomodify void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a -Statement [164] (byte*) getCharToProcess::screen_line#0 ← (byte*)(void*) SCREEN_COPY#0 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [165] (byte*) getCharToProcess::dist_line#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 getCharToProcess::dist_line#0 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 getCharToProcess::dist_line#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [168] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [169] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [176] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [177] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 getCharToProcess::dist_line#1 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 getCharToProcess::dist_line#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [181] (word~) getCharToProcess::$11 ← (word)(byte) getCharToProcess::return_y#1 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [182] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$11 << (byte) 2 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 getCharToProcess::$12 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 getCharToProcess::$12 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [183] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$11 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$13 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$13 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [184] (word~) getCharToProcess::$8 ← (word~) getCharToProcess::$13 << (byte) 3 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [185] (byte*~) getCharToProcess::$9 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$8 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [186] *((byte*~) getCharToProcess::$9 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a -Statement [195] (byte~) startProcessing::$28 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$28 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [196] (byte~) startProcessing::$29 ← (byte~) startProcessing::$28 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [197] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [198] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$31 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$31 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [199] (byte~) startProcessing::$21 ← (byte~) startProcessing::$31 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$21 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$21 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [200] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$21)!=(const byte) STATUS_FREE) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [203] (word~) startProcessing::$23 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$23 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$23 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [204] (word~) startProcessing::$33 ← (word~) startProcessing::$23 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$23 startProcessing::$33 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$23 startProcessing::$33 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [205] (word~) startProcessing::$34 ← (word~) startProcessing::$33 + (word~) startProcessing::$23 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$34 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$34 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [206] (word~) startProcessing::$0 ← (word~) startProcessing::$34 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [207] (word) startProcessing::offset#0 ← (word~) startProcessing::$0 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [208] (byte*) startProcessing::colPtr#0 ← (const nomodify byte*) COLS + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [209] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y -Statement [210] (byte*) startProcessing::screenPtr#0 ← (const nomodify byte*) SCREEN + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [211] (word~) startProcessing::$24 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$24 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$24 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [212] (word~) startProcessing::$4 ← (word~) startProcessing::$24 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$4 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$4 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [213] (byte*) startProcessing::spriteData#0 ← (const nomodify byte*) SPRITE_DATA + (word~) startProcessing::$4 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [214] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y -Statement [215] (word~) startProcessing::$25 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$25 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$25 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [216] (word~) startProcessing::$6 ← (word~) startProcessing::$25 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$6 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$6 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [217] (byte*) startProcessing::chargenData#0 ← (const nomodify byte*) CHARGEN + (word~) startProcessing::$6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [219] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_CHARROM [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [221] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y -Statement [222] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [226] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [228] (word~) startProcessing::$26 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$26 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$26 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [229] (word~) startProcessing::$8 ← (word~) startProcessing::$26 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$8 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$8 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [230] (word~) startProcessing::$9 ← (const nomodify byte) BORDER_XPOS_LEFT + (word~) startProcessing::$8 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$9 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$9 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [231] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$9 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [232] (word~) startProcessing::$27 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$27 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$27 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [233] (word~) startProcessing::$11 ← (word~) startProcessing::$27 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$11 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$11 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [234] (word~) startProcessing::$12 ← (const nomodify byte) BORDER_YPOS_TOP + (word~) startProcessing::$11 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$12 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$12 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [235] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$12 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [236] (byte) startProcessing::spritePtr#0 ← (byte)(const nomodify byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [237] (byte~) startProcessing::$15 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [238] (byte~) startProcessing::$36 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$36 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$36 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [239] (byte~) startProcessing::$37 ← (byte~) startProcessing::$36 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$37 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$37 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [240] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$38 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$38 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [241] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$39 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$39 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [242] (byte~) startProcessing::$22 ← (byte~) startProcessing::$39 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [243] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$22) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [244] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$22) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [245] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$22) ← (word)(byte~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [246] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$22) ← (word) $3c [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [247] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$22) ← (byte) startProcessing::freeIdx#2 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [248] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$22) ← (byte) startProcessing::spritePtr#0 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [249] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$22) ← (byte) startProcessing::spriteCol#0 [ startProcessing::screenPtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::screenPtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [250] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$22) ← (const byte) STATUS_NEW [ startProcessing::screenPtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::screenPtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [251] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$22) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a -Statement [257] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [258] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [260] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [261] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [264] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [266] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [267] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [268] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [270] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [271] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [275] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [276] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [280] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [281] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [283] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [284] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [285] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [286] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [287] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [291] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [292] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [293] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [294] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [295] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [296] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [298] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a -Statement [299] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:26::atan2_16:127 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [62] (byte~) processChars::$13 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$13 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 ] { } ) always clobbers reg byte a +Statement [63] (byte~) processChars::$87 ← (byte~) processChars::$13 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::$87 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::$87 ] { } ) always clobbers reg byte a +Statement [64] (byte~) processChars::$88 ← (byte~) processChars::$87 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::$88 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::$88 ] { } ) always clobbers reg byte a +Statement [65] (byte~) processChars::$89 ← (byte~) processChars::$88 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::$89 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::$89 ] { } ) always clobbers reg byte a +Statement [66] (byte~) processChars::$28 ← (byte~) processChars::$89 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::$28 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::$28 ] { } ) always clobbers reg byte a +Statement [67] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite*) PROCESSING + (byte~) processChars::$28 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 ] { } ) always clobbers reg byte a +Statement [68] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [69] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [70] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [71] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte x reg byte y +Statement [72] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a +Statement [73] *((const nomodify byte*) SPRITES_COLOR + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [74] *((const nomodify byte*) SCREEN+(const nomodify word) SPRITE_PTRS + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [75] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [76] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [79] (byte~) processChars::$10 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$10 ] { } ) always clobbers reg byte a +Statement [80] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) & (byte~) processChars::$10 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a +Statement [81] *((const nomodify byte*) SPRITES_XPOS + (byte~) processChars::$13) ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [82] (word~) processChars::$12 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] { } ) always clobbers reg byte a reg byte y +Statement [83] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$12 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a +Statement [84] *((const nomodify byte*) SPRITES_YPOS + (byte~) processChars::$13) ← (byte) processChars::ypos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [85] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const nomodify word) XPOS_LEFTMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [86] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const nomodify word) XPOS_RIGHTMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [87] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const nomodify word) YPOS_TOPMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [88] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const nomodify word) YPOS_BOTTOMMOST) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [89] (word~) processChars::$21 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$21 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$21 ] { } ) always clobbers reg byte a +Statement [90] (byte~) processChars::$73 ← (byte)(word~) processChars::$21 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$73 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$73 ] { } ) always clobbers reg byte a +Statement [92] (byte~) processChars::$29 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$29 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$29 ] { } ) always clobbers reg byte a +Statement [93] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const to_nomodify word*) VXSIN + (byte~) processChars::$29) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [94] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] { } ) always clobbers reg byte a reg byte y +Statement [95] (byte~) processChars::$79 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$79 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$79 ] { } ) always clobbers reg byte a +Statement [97] (byte~) processChars::$30 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$30 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$30 ] { } ) always clobbers reg byte a +Statement [98] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const to_nomodify word*) VYSIN + (byte~) processChars::$30) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] { } ) always clobbers reg byte a reg byte y +Statement [99] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 ] { } ) always clobbers reg byte a reg byte y +Statement [103] if((byte) processChars::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:11 [ processChars::i#1 processChars::numActive#3 ] { } ) always clobbers reg byte a +Statement [105] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] { } ) always clobbers reg byte a reg byte y +Statement [106] (byte~) processChars::$25 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$25 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$25 ] { } ) always clobbers reg byte a +Statement [107] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) & (byte~) processChars::$25 [ processChars::i#10 processChars::numActive#10 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 ] { } ) always clobbers reg byte a +Statement [108] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:11 [ processChars::i#10 processChars::numActive#10 processChars::$13 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] { } ) always clobbers reg byte a +Statement [109] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] { } ) always clobbers reg byte a +Statement [110] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a +Statement [114] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a +Statement [115] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a +Statement [119] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [120] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [121] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [122] (byte~) init_angle_screen::$5 ← (byte) init_angle_screen::y#5 << (byte) 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [123] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$5 w= (byte) 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y +Statement [124] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [125] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [127] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [128] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a +Statement [129] (word~) init_angle_screen::$7 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a +Statement [131] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y +Statement [132] (byte~) init_angle_screen::$9 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a +Statement [133] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [134] (byte~) init_angle_screen::$10 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a +Statement [135] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y +Statement [136] (byte~) init_angle_screen::$11 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a +Statement [137] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:26 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y +Statement [142] if((byte*) initSprites::sp#2<(const nomodify byte*) SPRITE_DATA+(const nomodify byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2 [ initSprites::sp#2 ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::sp#2 ] { } ) always clobbers reg byte a +Statement [144] *((const nomodify byte*) SPRITES_COLOR + (byte) initSprites::i#2) ← (const nomodify byte) LIGHT_BLUE [ initSprites::i#2 ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::i#2 ] { } ) always clobbers reg byte a +Statement [147] *((const nomodify byte*) SPRITES_MC) ← (byte) 0 [ ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [148] *((const nomodify byte*) SPRITES_EXPAND_X) ← (byte) 0 [ ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [149] *((const nomodify byte*) SPRITES_EXPAND_Y) ← (byte) 0 [ ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [151] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:7::initSprites:40 [ SCREEN_COPY#0 SCREEN_DIST#0 initSprites::sp#2 ] { } ) always clobbers reg byte a reg byte y +Statement [154] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [155] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [156] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [157] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) & (byte) $7f [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [158] *((const nomodify byte*) RASTER) ← <(const nomodify byte) RASTER_IRQ_TOP [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [159] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [160] *((const nomodify void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a +Statement [163] (byte*) getCharToProcess::screen_line#0 ← (byte*)(void*) SCREEN_COPY#0 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [164] (byte*) getCharToProcess::dist_line#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 getCharToProcess::dist_line#0 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#0 getCharToProcess::dist_line#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [167] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [168] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::screen_line#4 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [175] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::dist_line#6 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [176] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 getCharToProcess::dist_line#1 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 getCharToProcess::dist_line#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [180] (word~) getCharToProcess::$11 ← (word)(byte) getCharToProcess::return_y#1 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [181] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$11 << (byte) 2 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 getCharToProcess::$12 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 getCharToProcess::$12 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [182] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$11 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$13 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$13 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [183] (word~) getCharToProcess::$8 ← (word~) getCharToProcess::$13 << (byte) 3 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$8 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [184] (byte*~) getCharToProcess::$9 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$8 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [185] *((byte*~) getCharToProcess::$9 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:7::getCharToProcess:44 [ SCREEN_COPY#0 SCREEN_DIST#0 getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] { { getCharToProcess::return_x#0 = getCharToProcess::return_x#1 } { getCharToProcess::return_y#0 = getCharToProcess::return_y#1 } { getCharToProcess::return_dist#0 = getCharToProcess::return_dist#1 } } ) always clobbers reg byte a +Statement [194] (byte~) startProcessing::$28 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$28 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$28 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [195] (byte~) startProcessing::$29 ← (byte~) startProcessing::$28 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [196] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$30 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [197] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$31 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$31 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [198] (byte~) startProcessing::$21 ← (byte~) startProcessing::$31 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$21 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$21 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [199] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$21)!=(const byte) STATUS_FREE) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [202] (word~) startProcessing::$23 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$23 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$23 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [203] (word~) startProcessing::$33 ← (word~) startProcessing::$23 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$23 startProcessing::$33 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$23 startProcessing::$33 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [204] (word~) startProcessing::$34 ← (word~) startProcessing::$33 + (word~) startProcessing::$23 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$34 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$34 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [205] (word~) startProcessing::$0 ← (word~) startProcessing::$34 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [206] (word) startProcessing::offset#0 ← (word~) startProcessing::$0 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [207] (byte*) startProcessing::colPtr#0 ← (const nomodify byte*) COLS + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::colPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [208] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::offset#0 startProcessing::spriteCol#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y +Statement [209] (byte*) startProcessing::screenPtr#0 ← (const nomodify byte*) SCREEN + (word) startProcessing::offset#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [210] (word~) startProcessing::$24 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$24 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$24 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [211] (word~) startProcessing::$4 ← (word~) startProcessing::$24 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$4 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$4 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [212] (byte*) startProcessing::spriteData#0 ← (const nomodify byte*) SPRITE_DATA + (word~) startProcessing::$4 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [213] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y +Statement [214] (word~) startProcessing::$25 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$25 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$25 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [215] (word~) startProcessing::$6 ← (word~) startProcessing::$25 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$6 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$6 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [216] (byte*) startProcessing::chargenData#0 ← (const nomodify byte*) CHARGEN + (word~) startProcessing::$6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [218] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_CHARROM [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [220] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a reg byte y +Statement [221] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [225] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [227] (word~) startProcessing::$26 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$26 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$26 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [228] (word~) startProcessing::$8 ← (word~) startProcessing::$26 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$8 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$8 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [229] (word~) startProcessing::$9 ← (const nomodify byte) BORDER_XPOS_LEFT + (word~) startProcessing::$8 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$9 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$9 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [230] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$9 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [231] (word~) startProcessing::$27 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$27 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$27 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [232] (word~) startProcessing::$11 ← (word~) startProcessing::$27 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$11 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$11 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [233] (word~) startProcessing::$12 ← (const nomodify byte) BORDER_YPOS_TOP + (word~) startProcessing::$11 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$12 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$12 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [234] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$12 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [235] (byte) startProcessing::spritePtr#0 ← (byte)(const nomodify byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [236] (byte~) startProcessing::$15 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [237] (byte~) startProcessing::$36 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$36 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$36 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [238] (byte~) startProcessing::$37 ← (byte~) startProcessing::$36 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$37 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$37 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [239] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$38 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$38 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [240] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$39 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$39 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [241] (byte~) startProcessing::$22 ← (byte~) startProcessing::$39 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [242] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$22) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [243] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$22) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$15 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [244] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$22) ← (word)(byte~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [245] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$22) ← (word) $3c [ startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::freeIdx#2 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [246] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$22) ← (byte) startProcessing::freeIdx#2 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [247] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$22) ← (byte) startProcessing::spritePtr#0 [ startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::spriteCol#0 startProcessing::screenPtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [248] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$22) ← (byte) startProcessing::spriteCol#0 [ startProcessing::screenPtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::screenPtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [249] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$22) ← (const byte) STATUS_NEW [ startProcessing::screenPtr#0 startProcessing::$22 ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 startProcessing::screenPtr#0 startProcessing::$22 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [250] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$22) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:7::startProcessing:56 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { { startProcessing::center_x#0 = main::center_x#0 } { startProcessing::center_y#0 = main::center_y#0 } } ) always clobbers reg byte a +Statement [256] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [257] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [259] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [260] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [263] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [265] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [266] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [267] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [269] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [270] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [274] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [275] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [279] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [280] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [282] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [283] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [284] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [285] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [286] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [290] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [291] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [292] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [293] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [294] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [295] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [297] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a +Statement [298] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:26::atan2_16:126 [ SCREEN_COPY#0 SCREEN_DIST#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a Potential registers zp[2]:2 [ heap_head#6 heap_head#0 ] : zp[2]:2 , Potential registers zp[2]:4 [ main::src#2 main::src#1 ] : zp[2]:4 , Potential registers zp[2]:6 [ main::dst#2 main::dst#0 main::dst#1 ] : zp[2]:6 , @@ -7274,7 +7268,7 @@ Potential registers zp[1]:69 [ main::center_y#0 ] : zp[1]:69 , reg byte a , reg Potential registers zp[1]:70 [ main::center_dist#0 ] : zp[1]:70 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:71 [ startProcessing::center_x#0 ] : zp[1]:71 , reg byte x , Potential registers zp[1]:72 [ startProcessing::center_y#0 ] : zp[1]:72 , reg byte x , -Potential registers zp[1]:73 [ processChars::$86 ] : zp[1]:73 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:73 [ processChars::$13 ] : zp[1]:73 , Potential registers zp[1]:74 [ processChars::$87 ] : zp[1]:74 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:75 [ processChars::$88 ] : zp[1]:75 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:76 [ processChars::$89 ] : zp[1]:76 , reg byte a , reg byte x , reg byte y , @@ -7284,79 +7278,78 @@ Potential registers zp[1]:80 [ processChars::bitmask#0 ] : zp[1]:80 , Potential registers zp[2]:81 [ processChars::xpos#0 ] : zp[2]:81 , Potential registers zp[1]:83 [ processChars::$9 ] : zp[1]:83 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:84 [ processChars::$10 ] : zp[1]:84 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:85 [ processChars::$13 ] : zp[1]:85 , reg byte x , -Potential registers zp[2]:86 [ processChars::$12 ] : zp[2]:86 , -Potential registers zp[1]:88 [ processChars::ypos#0 ] : zp[1]:88 , reg byte x , -Potential registers zp[2]:89 [ processChars::$21 ] : zp[2]:89 , -Potential registers zp[1]:91 [ processChars::$73 ] : zp[1]:91 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:92 [ processChars::xchar#0 ] : zp[1]:92 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:93 [ processChars::$29 ] : zp[1]:93 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:94 [ processChars::$79 ] : zp[1]:94 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:95 [ processChars::ychar#0 ] : zp[1]:95 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:96 [ processChars::$30 ] : zp[1]:96 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:97 [ processChars::$25 ] : zp[1]:97 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:98 [ init_angle_screen::$3 ] : zp[1]:98 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:99 [ init_angle_screen::$4 ] : zp[1]:99 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:100 [ init_angle_screen::xw#0 ] : zp[2]:100 , -Potential registers zp[1]:102 [ init_angle_screen::$5 ] : zp[1]:102 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:103 [ init_angle_screen::yw#0 ] : zp[2]:103 , -Potential registers zp[2]:105 [ atan2_16::x#0 ] : zp[2]:105 , -Potential registers zp[2]:107 [ atan2_16::y#0 ] : zp[2]:107 , -Potential registers zp[2]:109 [ atan2_16::return#2 ] : zp[2]:109 , -Potential registers zp[2]:111 [ init_angle_screen::angle_w#0 ] : zp[2]:111 , -Potential registers zp[2]:113 [ init_angle_screen::$7 ] : zp[2]:113 , -Potential registers zp[1]:115 [ init_angle_screen::ang_w#0 ] : zp[1]:115 , reg byte x , -Potential registers zp[1]:116 [ init_angle_screen::$9 ] : zp[1]:116 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:117 [ init_angle_screen::$10 ] : zp[1]:117 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:118 [ init_angle_screen::$11 ] : zp[1]:118 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:119 [ getCharToProcess::$11 ] : zp[2]:119 , -Potential registers zp[2]:121 [ getCharToProcess::$12 ] : zp[2]:121 , -Potential registers zp[2]:123 [ getCharToProcess::$13 ] : zp[2]:123 , -Potential registers zp[2]:125 [ getCharToProcess::$8 ] : zp[2]:125 , -Potential registers zp[2]:127 [ getCharToProcess::$9 ] : zp[2]:127 , -Potential registers zp[1]:129 [ startProcessing::$28 ] : zp[1]:129 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:130 [ startProcessing::$29 ] : zp[1]:130 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:131 [ startProcessing::$30 ] : zp[1]:131 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:132 [ startProcessing::$31 ] : zp[1]:132 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:133 [ startProcessing::$21 ] : zp[1]:133 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:134 [ startProcessing::$23 ] : zp[2]:134 , -Potential registers zp[2]:136 [ startProcessing::$33 ] : zp[2]:136 , -Potential registers zp[2]:138 [ startProcessing::$34 ] : zp[2]:138 , -Potential registers zp[2]:140 [ startProcessing::$0 ] : zp[2]:140 , -Potential registers zp[2]:142 [ startProcessing::offset#0 ] : zp[2]:142 , -Potential registers zp[2]:144 [ startProcessing::colPtr#0 ] : zp[2]:144 , -Potential registers zp[1]:146 [ startProcessing::spriteCol#0 ] : zp[1]:146 , reg byte x , -Potential registers zp[2]:147 [ startProcessing::screenPtr#0 ] : zp[2]:147 , -Potential registers zp[2]:149 [ startProcessing::$24 ] : zp[2]:149 , -Potential registers zp[2]:151 [ startProcessing::$4 ] : zp[2]:151 , -Potential registers zp[1]:153 [ startProcessing::ch#0 ] : zp[1]:153 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:154 [ startProcessing::$25 ] : zp[2]:154 , -Potential registers zp[2]:156 [ startProcessing::$6 ] : zp[2]:156 , -Potential registers zp[2]:158 [ startProcessing::$26 ] : zp[2]:158 , -Potential registers zp[2]:160 [ startProcessing::$8 ] : zp[2]:160 , -Potential registers zp[2]:162 [ startProcessing::$9 ] : zp[2]:162 , -Potential registers zp[2]:164 [ startProcessing::spriteX#0 ] : zp[2]:164 , -Potential registers zp[2]:166 [ startProcessing::$27 ] : zp[2]:166 , -Potential registers zp[2]:168 [ startProcessing::$11 ] : zp[2]:168 , -Potential registers zp[2]:170 [ startProcessing::$12 ] : zp[2]:170 , -Potential registers zp[2]:172 [ startProcessing::spriteY#0 ] : zp[2]:172 , -Potential registers zp[1]:174 [ startProcessing::spritePtr#0 ] : zp[1]:174 , reg byte x , reg byte y , -Potential registers zp[1]:175 [ startProcessing::$15 ] : zp[1]:175 , reg byte x , reg byte y , -Potential registers zp[1]:176 [ startProcessing::$36 ] : zp[1]:176 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:177 [ startProcessing::$37 ] : zp[1]:177 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:178 [ startProcessing::$38 ] : zp[1]:178 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:179 [ startProcessing::$39 ] : zp[1]:179 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:180 [ startProcessing::$22 ] : zp[1]:180 , reg byte x , reg byte y , -Potential registers zp[1]:181 [ atan2_16::$23 ] : zp[1]:181 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:182 [ atan2_16::$22 ] : zp[1]:182 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:85 [ processChars::$12 ] : zp[2]:85 , +Potential registers zp[1]:87 [ processChars::ypos#0 ] : zp[1]:87 , reg byte x , +Potential registers zp[2]:88 [ processChars::$21 ] : zp[2]:88 , +Potential registers zp[1]:90 [ processChars::$73 ] : zp[1]:90 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:91 [ processChars::xchar#0 ] : zp[1]:91 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:92 [ processChars::$29 ] : zp[1]:92 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:93 [ processChars::$79 ] : zp[1]:93 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:94 [ processChars::ychar#0 ] : zp[1]:94 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:95 [ processChars::$30 ] : zp[1]:95 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:96 [ processChars::$25 ] : zp[1]:96 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:97 [ init_angle_screen::$3 ] : zp[1]:97 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:98 [ init_angle_screen::$4 ] : zp[1]:98 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:99 [ init_angle_screen::xw#0 ] : zp[2]:99 , +Potential registers zp[1]:101 [ init_angle_screen::$5 ] : zp[1]:101 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:102 [ init_angle_screen::yw#0 ] : zp[2]:102 , +Potential registers zp[2]:104 [ atan2_16::x#0 ] : zp[2]:104 , +Potential registers zp[2]:106 [ atan2_16::y#0 ] : zp[2]:106 , +Potential registers zp[2]:108 [ atan2_16::return#2 ] : zp[2]:108 , +Potential registers zp[2]:110 [ init_angle_screen::angle_w#0 ] : zp[2]:110 , +Potential registers zp[2]:112 [ init_angle_screen::$7 ] : zp[2]:112 , +Potential registers zp[1]:114 [ init_angle_screen::ang_w#0 ] : zp[1]:114 , reg byte x , +Potential registers zp[1]:115 [ init_angle_screen::$9 ] : zp[1]:115 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:116 [ init_angle_screen::$10 ] : zp[1]:116 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:117 [ init_angle_screen::$11 ] : zp[1]:117 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:118 [ getCharToProcess::$11 ] : zp[2]:118 , +Potential registers zp[2]:120 [ getCharToProcess::$12 ] : zp[2]:120 , +Potential registers zp[2]:122 [ getCharToProcess::$13 ] : zp[2]:122 , +Potential registers zp[2]:124 [ getCharToProcess::$8 ] : zp[2]:124 , +Potential registers zp[2]:126 [ getCharToProcess::$9 ] : zp[2]:126 , +Potential registers zp[1]:128 [ startProcessing::$28 ] : zp[1]:128 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:129 [ startProcessing::$29 ] : zp[1]:129 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:130 [ startProcessing::$30 ] : zp[1]:130 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:131 [ startProcessing::$31 ] : zp[1]:131 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:132 [ startProcessing::$21 ] : zp[1]:132 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:133 [ startProcessing::$23 ] : zp[2]:133 , +Potential registers zp[2]:135 [ startProcessing::$33 ] : zp[2]:135 , +Potential registers zp[2]:137 [ startProcessing::$34 ] : zp[2]:137 , +Potential registers zp[2]:139 [ startProcessing::$0 ] : zp[2]:139 , +Potential registers zp[2]:141 [ startProcessing::offset#0 ] : zp[2]:141 , +Potential registers zp[2]:143 [ startProcessing::colPtr#0 ] : zp[2]:143 , +Potential registers zp[1]:145 [ startProcessing::spriteCol#0 ] : zp[1]:145 , reg byte x , +Potential registers zp[2]:146 [ startProcessing::screenPtr#0 ] : zp[2]:146 , +Potential registers zp[2]:148 [ startProcessing::$24 ] : zp[2]:148 , +Potential registers zp[2]:150 [ startProcessing::$4 ] : zp[2]:150 , +Potential registers zp[1]:152 [ startProcessing::ch#0 ] : zp[1]:152 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:153 [ startProcessing::$25 ] : zp[2]:153 , +Potential registers zp[2]:155 [ startProcessing::$6 ] : zp[2]:155 , +Potential registers zp[2]:157 [ startProcessing::$26 ] : zp[2]:157 , +Potential registers zp[2]:159 [ startProcessing::$8 ] : zp[2]:159 , +Potential registers zp[2]:161 [ startProcessing::$9 ] : zp[2]:161 , +Potential registers zp[2]:163 [ startProcessing::spriteX#0 ] : zp[2]:163 , +Potential registers zp[2]:165 [ startProcessing::$27 ] : zp[2]:165 , +Potential registers zp[2]:167 [ startProcessing::$11 ] : zp[2]:167 , +Potential registers zp[2]:169 [ startProcessing::$12 ] : zp[2]:169 , +Potential registers zp[2]:171 [ startProcessing::spriteY#0 ] : zp[2]:171 , +Potential registers zp[1]:173 [ startProcessing::spritePtr#0 ] : zp[1]:173 , reg byte x , reg byte y , +Potential registers zp[1]:174 [ startProcessing::$15 ] : zp[1]:174 , reg byte x , reg byte y , +Potential registers zp[1]:175 [ startProcessing::$36 ] : zp[1]:175 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:176 [ startProcessing::$37 ] : zp[1]:176 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:177 [ startProcessing::$38 ] : zp[1]:177 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:178 [ startProcessing::$39 ] : zp[1]:178 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:179 [ startProcessing::$22 ] : zp[1]:179 , reg byte x , reg byte y , +Potential registers zp[1]:180 [ atan2_16::$23 ] : zp[1]:180 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:181 [ atan2_16::$22 ] : zp[1]:181 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [atan2_16] 2,866,666,670.58: zp[1]:47 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 2,060,000,008: zp[2]:48 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 1,733,333,338.67: zp[2]:50 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 752,480,960.9: zp[2]:43 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 269,093,340.68: zp[2]:38 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 227,373,342.67: zp[2]:40 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 200,000,002: zp[1]:181 [ atan2_16::$23 ] 200,000,002: zp[1]:182 [ atan2_16::$22 ] 170,833,335.04: zp[1]:42 [ atan2_16::i#2 atan2_16::i#1 ] 820,008.5: zp[2]:45 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] 20,002: zp[2]:109 [ atan2_16::return#2 ] 10,789.61: zp[2]:105 [ atan2_16::x#0 ] 10,250.12: zp[2]:107 [ atan2_16::y#0 ] -Uplift Scope [getCharToProcess] 4,977,844.03: zp[1]:30 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] 3,425,007.25: zp[1]:27 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] 2,932,466.39: zp[1]:29 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] 1,944,509.61: zp[1]:28 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] 1,555,557.11: zp[1]:26 [ getCharToProcess::x#2 getCharToProcess::x#1 ] 180,001.2: zp[1]:25 [ getCharToProcess::y#7 getCharToProcess::y#1 ] 137,788.5: zp[2]:23 [ getCharToProcess::dist_line#6 getCharToProcess::dist_line#0 getCharToProcess::dist_line#1 ] 133,386.32: zp[2]:21 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#0 getCharToProcess::screen_line#1 ] 2,002: zp[2]:121 [ getCharToProcess::$12 ] 2,002: zp[2]:123 [ getCharToProcess::$13 ] 2,002: zp[2]:125 [ getCharToProcess::$8 ] 2,002: zp[2]:127 [ getCharToProcess::$9 ] 1,501.5: zp[2]:119 [ getCharToProcess::$11 ] 67.33: zp[1]:65 [ getCharToProcess::return_x#0 ] 67.33: zp[1]:66 [ getCharToProcess::return_y#0 ] 67.33: zp[1]:67 [ getCharToProcess::return_dist#0 ] -Uplift Scope [startProcessing] 2,585,538.74: zp[1]:32 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] 2,000,002: zp[1]:129 [ startProcessing::$28 ] 2,000,002: zp[1]:130 [ startProcessing::$29 ] 2,000,002: zp[1]:131 [ startProcessing::$30 ] 2,000,002: zp[1]:132 [ startProcessing::$31 ] 2,000,002: zp[1]:133 [ startProcessing::$21 ] 220,002.2: zp[1]:31 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] 200,788.5: zp[2]:35 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] 200,002: zp[1]:37 [ startProcessing::i1#2 startProcessing::i1#1 ] 167,669.33: zp[2]:33 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] 2,002: zp[2]:136 [ startProcessing::$33 ] 2,002: zp[2]:138 [ startProcessing::$34 ] 2,002: zp[2]:140 [ startProcessing::$0 ] 2,002: zp[2]:144 [ startProcessing::colPtr#0 ] 2,002: zp[2]:149 [ startProcessing::$24 ] 2,002: zp[2]:151 [ startProcessing::$4 ] 2,002: zp[2]:154 [ startProcessing::$25 ] 2,002: zp[2]:156 [ startProcessing::$6 ] 2,002: zp[2]:158 [ startProcessing::$26 ] 2,002: zp[2]:160 [ startProcessing::$8 ] 2,002: zp[2]:162 [ startProcessing::$9 ] 2,002: zp[2]:166 [ startProcessing::$27 ] 2,002: zp[2]:168 [ startProcessing::$11 ] 2,002: zp[2]:170 [ startProcessing::$12 ] 2,002: zp[1]:176 [ startProcessing::$36 ] 2,002: zp[1]:177 [ startProcessing::$37 ] 2,002: zp[1]:178 [ startProcessing::$38 ] 2,002: zp[1]:179 [ startProcessing::$39 ] 1,501.5: zp[2]:134 [ startProcessing::$23 ] 1,112.22: zp[1]:180 [ startProcessing::$22 ] 1,001: zp[2]:142 [ startProcessing::offset#0 ] 1,001: zp[1]:153 [ startProcessing::ch#0 ] 222.44: zp[2]:172 [ startProcessing::spriteY#0 ] 166.83: zp[2]:164 [ startProcessing::spriteX#0 ] 166.83: zp[1]:174 [ startProcessing::spritePtr#0 ] 125.12: zp[1]:175 [ startProcessing::$15 ] 73.24: zp[2]:147 [ startProcessing::screenPtr#0 ] 50.05: zp[1]:146 [ startProcessing::spriteCol#0 ] 26.24: zp[1]:71 [ startProcessing::center_x#0 ] 2.24: zp[1]:72 [ startProcessing::center_y#0 ] -Uplift Scope [init_angle_screen] 21,820.36: zp[1]:17 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:98 [ init_angle_screen::$3 ] 20,002: zp[1]:99 [ init_angle_screen::$4 ] 20,002: zp[1]:102 [ init_angle_screen::$5 ] 20,002: zp[2]:111 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:113 [ init_angle_screen::$7 ] 20,002: zp[1]:116 [ init_angle_screen::$9 ] 20,002: zp[1]:117 [ init_angle_screen::$10 ] 20,002: zp[1]:118 [ init_angle_screen::$11 ] 12,858.43: zp[1]:16 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 8,334.17: zp[1]:115 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:103 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:100 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:11 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,753.53: zp[2]:14 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 1,522.54: zp[2]:12 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] 106.5: zp[2]:58 [ init_angle_screen::screen#0 ] +Uplift Scope [atan2_16] 2,866,666,670.58: zp[1]:47 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 2,060,000,008: zp[2]:48 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 1,733,333,338.67: zp[2]:50 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 752,480,960.9: zp[2]:43 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 269,093,340.68: zp[2]:38 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 227,373,342.67: zp[2]:40 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 200,000,002: zp[1]:180 [ atan2_16::$23 ] 200,000,002: zp[1]:181 [ atan2_16::$22 ] 170,833,335.04: zp[1]:42 [ atan2_16::i#2 atan2_16::i#1 ] 820,008.5: zp[2]:45 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] 20,002: zp[2]:108 [ atan2_16::return#2 ] 10,789.61: zp[2]:104 [ atan2_16::x#0 ] 10,250.12: zp[2]:106 [ atan2_16::y#0 ] +Uplift Scope [getCharToProcess] 4,977,844.03: zp[1]:30 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] 3,425,007.25: zp[1]:27 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] 2,932,466.39: zp[1]:29 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] 1,944,509.61: zp[1]:28 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] 1,555,557.11: zp[1]:26 [ getCharToProcess::x#2 getCharToProcess::x#1 ] 180,001.2: zp[1]:25 [ getCharToProcess::y#7 getCharToProcess::y#1 ] 137,788.5: zp[2]:23 [ getCharToProcess::dist_line#6 getCharToProcess::dist_line#0 getCharToProcess::dist_line#1 ] 133,386.32: zp[2]:21 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#0 getCharToProcess::screen_line#1 ] 2,002: zp[2]:120 [ getCharToProcess::$12 ] 2,002: zp[2]:122 [ getCharToProcess::$13 ] 2,002: zp[2]:124 [ getCharToProcess::$8 ] 2,002: zp[2]:126 [ getCharToProcess::$9 ] 1,501.5: zp[2]:118 [ getCharToProcess::$11 ] 67.33: zp[1]:65 [ getCharToProcess::return_x#0 ] 67.33: zp[1]:66 [ getCharToProcess::return_y#0 ] 67.33: zp[1]:67 [ getCharToProcess::return_dist#0 ] +Uplift Scope [startProcessing] 2,585,538.74: zp[1]:32 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] 2,000,002: zp[1]:128 [ startProcessing::$28 ] 2,000,002: zp[1]:129 [ startProcessing::$29 ] 2,000,002: zp[1]:130 [ startProcessing::$30 ] 2,000,002: zp[1]:131 [ startProcessing::$31 ] 2,000,002: zp[1]:132 [ startProcessing::$21 ] 220,002.2: zp[1]:31 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] 200,788.5: zp[2]:35 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] 200,002: zp[1]:37 [ startProcessing::i1#2 startProcessing::i1#1 ] 167,669.33: zp[2]:33 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] 2,002: zp[2]:135 [ startProcessing::$33 ] 2,002: zp[2]:137 [ startProcessing::$34 ] 2,002: zp[2]:139 [ startProcessing::$0 ] 2,002: zp[2]:143 [ startProcessing::colPtr#0 ] 2,002: zp[2]:148 [ startProcessing::$24 ] 2,002: zp[2]:150 [ startProcessing::$4 ] 2,002: zp[2]:153 [ startProcessing::$25 ] 2,002: zp[2]:155 [ startProcessing::$6 ] 2,002: zp[2]:157 [ startProcessing::$26 ] 2,002: zp[2]:159 [ startProcessing::$8 ] 2,002: zp[2]:161 [ startProcessing::$9 ] 2,002: zp[2]:165 [ startProcessing::$27 ] 2,002: zp[2]:167 [ startProcessing::$11 ] 2,002: zp[2]:169 [ startProcessing::$12 ] 2,002: zp[1]:175 [ startProcessing::$36 ] 2,002: zp[1]:176 [ startProcessing::$37 ] 2,002: zp[1]:177 [ startProcessing::$38 ] 2,002: zp[1]:178 [ startProcessing::$39 ] 1,501.5: zp[2]:133 [ startProcessing::$23 ] 1,112.22: zp[1]:179 [ startProcessing::$22 ] 1,001: zp[2]:141 [ startProcessing::offset#0 ] 1,001: zp[1]:152 [ startProcessing::ch#0 ] 222.44: zp[2]:171 [ startProcessing::spriteY#0 ] 166.83: zp[2]:163 [ startProcessing::spriteX#0 ] 166.83: zp[1]:173 [ startProcessing::spritePtr#0 ] 125.12: zp[1]:174 [ startProcessing::$15 ] 73.24: zp[2]:146 [ startProcessing::screenPtr#0 ] 50.05: zp[1]:145 [ startProcessing::spriteCol#0 ] 26.24: zp[1]:71 [ startProcessing::center_x#0 ] 2.24: zp[1]:72 [ startProcessing::center_y#0 ] +Uplift Scope [init_angle_screen] 21,820.36: zp[1]:17 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:97 [ init_angle_screen::$3 ] 20,002: zp[1]:98 [ init_angle_screen::$4 ] 20,002: zp[1]:101 [ init_angle_screen::$5 ] 20,002: zp[2]:110 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:112 [ init_angle_screen::$7 ] 20,002: zp[1]:115 [ init_angle_screen::$9 ] 20,002: zp[1]:116 [ init_angle_screen::$10 ] 20,002: zp[1]:117 [ init_angle_screen::$11 ] 12,858.43: zp[1]:16 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 8,334.17: zp[1]:114 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:102 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:99 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:11 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,753.53: zp[2]:14 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 1,522.54: zp[2]:12 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] 106.5: zp[2]:58 [ init_angle_screen::screen#0 ] Uplift Scope [initSprites] 3,336.67: zp[2]:18 [ initSprites::sp#2 initSprites::sp#1 ] 3,003: zp[1]:20 [ initSprites::i#2 initSprites::i#1 ] -Uplift Scope [processChars] 309.89: zp[1]:10 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] 202: zp[1]:73 [ processChars::$86 ] 202: zp[1]:74 [ processChars::$87 ] 202: zp[1]:75 [ processChars::$88 ] 202: zp[1]:76 [ processChars::$89 ] 202: zp[1]:77 [ processChars::$28 ] 202: zp[1]:83 [ processChars::$9 ] 202: zp[1]:84 [ processChars::$10 ] 202: zp[1]:91 [ processChars::$73 ] 202: zp[1]:92 [ processChars::xchar#0 ] 202: zp[1]:93 [ processChars::$29 ] 202: zp[1]:94 [ processChars::$79 ] 202: zp[1]:95 [ processChars::ychar#0 ] 202: zp[1]:96 [ processChars::$30 ] 202: zp[1]:97 [ processChars::$25 ] 164.67: zp[1]:9 [ processChars::i#10 processChars::i#1 ] 101: zp[2]:86 [ processChars::$12 ] 101: zp[2]:89 [ processChars::$21 ] 75.75: zp[1]:85 [ processChars::$13 ] 25.25: zp[1]:88 [ processChars::ypos#0 ] 21.04: zp[1]:80 [ processChars::bitmask#0 ] 20.2: zp[2]:81 [ processChars::xpos#0 ] 2.97: zp[2]:78 [ processChars::processing#0 ] +Uplift Scope [processChars] 310.05: zp[1]:10 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] 202: zp[1]:74 [ processChars::$87 ] 202: zp[1]:75 [ processChars::$88 ] 202: zp[1]:76 [ processChars::$89 ] 202: zp[1]:77 [ processChars::$28 ] 202: zp[1]:83 [ processChars::$9 ] 202: zp[1]:84 [ processChars::$10 ] 202: zp[1]:90 [ processChars::$73 ] 202: zp[1]:91 [ processChars::xchar#0 ] 202: zp[1]:92 [ processChars::$29 ] 202: zp[1]:93 [ processChars::$79 ] 202: zp[1]:94 [ processChars::ychar#0 ] 202: zp[1]:95 [ processChars::$30 ] 202: zp[1]:96 [ processChars::$25 ] 162.72: zp[1]:9 [ processChars::i#10 processChars::i#1 ] 101: zp[2]:85 [ processChars::$12 ] 101: zp[2]:88 [ processChars::$21 ] 25.25: zp[1]:87 [ processChars::ypos#0 ] 21.96: zp[1]:80 [ processChars::bitmask#0 ] 21.64: zp[2]:81 [ processChars::xpos#0 ] 17.57: zp[1]:73 [ processChars::$13 ] 3.06: zp[2]:78 [ processChars::processing#0 ] Uplift Scope [main] 302.5: zp[2]:6 [ main::dst#2 main::dst#0 main::dst#1 ] 235.67: zp[2]:4 [ main::src#2 main::src#1 ] 223.64: zp[1]:8 [ main::i#2 main::i#1 ] 202: zp[1]:60 [ main::$11 ] 202: zp[1]:61 [ main::$12 ] 202: zp[1]:62 [ main::$13 ] 202: zp[1]:63 [ main::$14 ] 202: zp[1]:64 [ main::$10 ] 202: zp[1]:70 [ main::center_dist#0 ] 50.5: zp[1]:68 [ main::center_x#0 ] 50.5: zp[1]:69 [ main::center_y#0 ] Uplift Scope [] 16.25: zp[2]:2 [ heap_head#6 heap_head#0 ] 0.03: zp[2]:54 [ SCREEN_DIST#0 ] 0.03: zp[2]:52 [ SCREEN_COPY#0 ] Uplift Scope [malloc] 4.4: zp[2]:56 [ malloc::mem#0 ] @@ -7372,164 +7365,162 @@ Uplift Scope [irqTop] Uplift Scope [irqBottom] Uplift Scope [__start] -Uplifting [atan2_16] best 1279018 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:48 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:50 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:43 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:38 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:40 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:45 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] zp[2]:109 [ atan2_16::return#2 ] zp[2]:105 [ atan2_16::x#0 ] zp[2]:107 [ atan2_16::y#0 ] +Uplifting [atan2_16] best 1278938 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:48 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:50 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:43 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:38 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:40 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:45 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] zp[2]:108 [ atan2_16::return#2 ] zp[2]:104 [ atan2_16::x#0 ] zp[2]:106 [ atan2_16::y#0 ] Limited combination testing to 100 combinations of 144 possible. -Uplifting [getCharToProcess] best 1265685 combination reg byte x [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] zp[1]:27 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] zp[1]:29 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] zp[1]:28 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] zp[1]:26 [ getCharToProcess::x#2 getCharToProcess::x#1 ] zp[1]:25 [ getCharToProcess::y#7 getCharToProcess::y#1 ] zp[2]:23 [ getCharToProcess::dist_line#6 getCharToProcess::dist_line#0 getCharToProcess::dist_line#1 ] zp[2]:21 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#0 getCharToProcess::screen_line#1 ] zp[2]:121 [ getCharToProcess::$12 ] zp[2]:123 [ getCharToProcess::$13 ] zp[2]:125 [ getCharToProcess::$8 ] zp[2]:127 [ getCharToProcess::$9 ] zp[2]:119 [ getCharToProcess::$11 ] zp[1]:65 [ getCharToProcess::return_x#0 ] zp[1]:66 [ getCharToProcess::return_y#0 ] zp[1]:67 [ getCharToProcess::return_dist#0 ] +Uplifting [getCharToProcess] best 1265605 combination reg byte x [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] zp[1]:27 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] zp[1]:29 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] zp[1]:28 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] zp[1]:26 [ getCharToProcess::x#2 getCharToProcess::x#1 ] zp[1]:25 [ getCharToProcess::y#7 getCharToProcess::y#1 ] zp[2]:23 [ getCharToProcess::dist_line#6 getCharToProcess::dist_line#0 getCharToProcess::dist_line#1 ] zp[2]:21 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#0 getCharToProcess::screen_line#1 ] zp[2]:120 [ getCharToProcess::$12 ] zp[2]:122 [ getCharToProcess::$13 ] zp[2]:124 [ getCharToProcess::$8 ] zp[2]:126 [ getCharToProcess::$9 ] zp[2]:118 [ getCharToProcess::$11 ] zp[1]:65 [ getCharToProcess::return_x#0 ] zp[1]:66 [ getCharToProcess::return_y#0 ] zp[1]:67 [ getCharToProcess::return_dist#0 ] Limited combination testing to 100 combinations of 46656 possible. -Uplifting [init_angle_screen] best 1264085 combination zp[1]:17 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$5 ] zp[2]:111 [ init_angle_screen::angle_w#0 ] zp[2]:113 [ init_angle_screen::$7 ] zp[1]:116 [ init_angle_screen::$9 ] zp[1]:117 [ init_angle_screen::$10 ] zp[1]:118 [ init_angle_screen::$11 ] zp[1]:16 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:115 [ init_angle_screen::ang_w#0 ] zp[2]:103 [ init_angle_screen::yw#0 ] zp[2]:100 [ init_angle_screen::xw#0 ] zp[1]:11 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:14 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:12 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] zp[2]:58 [ init_angle_screen::screen#0 ] +Uplifting [init_angle_screen] best 1264005 combination zp[1]:17 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$5 ] zp[2]:110 [ init_angle_screen::angle_w#0 ] zp[2]:112 [ init_angle_screen::$7 ] zp[1]:115 [ init_angle_screen::$9 ] zp[1]:116 [ init_angle_screen::$10 ] zp[1]:117 [ init_angle_screen::$11 ] zp[1]:16 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:114 [ init_angle_screen::ang_w#0 ] zp[2]:102 [ init_angle_screen::yw#0 ] zp[2]:99 [ init_angle_screen::xw#0 ] zp[1]:11 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:14 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:12 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] zp[2]:58 [ init_angle_screen::screen#0 ] Limited combination testing to 100 combinations of 65536 possible. -Uplifting [initSprites] best 1263965 combination zp[2]:18 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ] -Uplifting [processChars] best 1263725 combination zp[1]:10 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] reg byte a [ processChars::$86 ] reg byte a [ processChars::$87 ] reg byte a [ processChars::$88 ] reg byte a [ processChars::$89 ] zp[1]:77 [ processChars::$28 ] zp[1]:83 [ processChars::$9 ] zp[1]:84 [ processChars::$10 ] zp[1]:91 [ processChars::$73 ] zp[1]:92 [ processChars::xchar#0 ] zp[1]:93 [ processChars::$29 ] zp[1]:94 [ processChars::$79 ] zp[1]:95 [ processChars::ychar#0 ] zp[1]:96 [ processChars::$30 ] zp[1]:97 [ processChars::$25 ] zp[1]:9 [ processChars::i#10 processChars::i#1 ] zp[2]:86 [ processChars::$12 ] zp[2]:89 [ processChars::$21 ] zp[1]:85 [ processChars::$13 ] zp[1]:88 [ processChars::ypos#0 ] zp[1]:80 [ processChars::bitmask#0 ] zp[2]:81 [ processChars::xpos#0 ] zp[2]:78 [ processChars::processing#0 ] -Limited combination testing to 100 combinations of 1073741824 possible. -Uplifting [main] best 1263485 combination zp[2]:6 [ main::dst#2 main::dst#0 main::dst#1 ] zp[2]:4 [ main::src#2 main::src#1 ] zp[1]:8 [ main::i#2 main::i#1 ] reg byte a [ main::$11 ] reg byte a [ main::$12 ] reg byte a [ main::$13 ] reg byte a [ main::$14 ] zp[1]:64 [ main::$10 ] zp[1]:70 [ main::center_dist#0 ] zp[1]:68 [ main::center_x#0 ] zp[1]:69 [ main::center_y#0 ] +Uplifting [initSprites] best 1263885 combination zp[2]:18 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ] +Uplifting [processChars] best 1263645 combination zp[1]:10 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] reg byte a [ processChars::$87 ] reg byte a [ processChars::$88 ] reg byte a [ processChars::$89 ] reg byte a [ processChars::$28 ] zp[1]:83 [ processChars::$9 ] zp[1]:84 [ processChars::$10 ] zp[1]:90 [ processChars::$73 ] zp[1]:91 [ processChars::xchar#0 ] zp[1]:92 [ processChars::$29 ] zp[1]:93 [ processChars::$79 ] zp[1]:94 [ processChars::ychar#0 ] zp[1]:95 [ processChars::$30 ] zp[1]:96 [ processChars::$25 ] zp[1]:9 [ processChars::i#10 processChars::i#1 ] zp[2]:85 [ processChars::$12 ] zp[2]:88 [ processChars::$21 ] zp[1]:87 [ processChars::ypos#0 ] zp[1]:80 [ processChars::bitmask#0 ] zp[2]:81 [ processChars::xpos#0 ] zp[1]:73 [ processChars::$13 ] zp[2]:78 [ processChars::processing#0 ] +Limited combination testing to 100 combinations of 134217728 possible. +Uplifting [main] best 1263405 combination zp[2]:6 [ main::dst#2 main::dst#0 main::dst#1 ] zp[2]:4 [ main::src#2 main::src#1 ] zp[1]:8 [ main::i#2 main::i#1 ] reg byte a [ main::$11 ] reg byte a [ main::$12 ] reg byte a [ main::$13 ] reg byte a [ main::$14 ] zp[1]:64 [ main::$10 ] zp[1]:70 [ main::center_dist#0 ] zp[1]:68 [ main::center_x#0 ] zp[1]:69 [ main::center_y#0 ] Limited combination testing to 100 combinations of 65536 possible. -Uplifting [] best 1263485 combination zp[2]:2 [ heap_head#6 heap_head#0 ] zp[2]:54 [ SCREEN_DIST#0 ] zp[2]:52 [ SCREEN_COPY#0 ] -Uplifting [malloc] best 1263485 combination zp[2]:56 [ malloc::mem#0 ] -Uplifting [RADIX] best 1263485 combination -Uplifting [MOS6526_CIA] best 1263485 combination -Uplifting [MOS6569_VICII] best 1263485 combination -Uplifting [MOS6581_SID] best 1263485 combination -Uplifting [ProcessingChar] best 1263485 combination -Uplifting [ProcessingSprite] best 1263485 combination -Uplifting [ProcessingSprite::$0] best 1263485 combination -Uplifting [setupRasterIrq] best 1263485 combination -Uplifting [irqTop] best 1263485 combination -Uplifting [irqBottom] best 1263485 combination -Uplifting [__start] best 1263485 combination +Uplifting [] best 1263405 combination zp[2]:2 [ heap_head#6 heap_head#0 ] zp[2]:54 [ SCREEN_DIST#0 ] zp[2]:52 [ SCREEN_COPY#0 ] +Uplifting [malloc] best 1263405 combination zp[2]:56 [ malloc::mem#0 ] +Uplifting [RADIX] best 1263405 combination +Uplifting [MOS6526_CIA] best 1263405 combination +Uplifting [MOS6569_VICII] best 1263405 combination +Uplifting [MOS6581_SID] best 1263405 combination +Uplifting [ProcessingChar] best 1263405 combination +Uplifting [ProcessingSprite] best 1263405 combination +Uplifting [ProcessingSprite::$0] best 1263405 combination +Uplifting [setupRasterIrq] best 1263405 combination +Uplifting [irqTop] best 1263405 combination +Uplifting [irqBottom] best 1263405 combination +Uplifting [__start] best 1263405 combination Attempting to uplift remaining variables inzp[1]:27 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] -Uplifting [getCharToProcess] best 1263485 combination zp[1]:27 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] +Uplifting [getCharToProcess] best 1263405 combination zp[1]:27 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] Attempting to uplift remaining variables inzp[1]:29 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] -Uplifting [getCharToProcess] best 1263485 combination zp[1]:29 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] +Uplifting [getCharToProcess] best 1263405 combination zp[1]:29 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] Attempting to uplift remaining variables inzp[1]:32 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -Uplifting [startProcessing] best 1263485 combination zp[1]:32 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] -Attempting to uplift remaining variables inzp[1]:129 [ startProcessing::$28 ] -Uplifting [startProcessing] best 1257485 combination reg byte a [ startProcessing::$28 ] -Attempting to uplift remaining variables inzp[1]:130 [ startProcessing::$29 ] -Uplifting [startProcessing] best 1251485 combination reg byte a [ startProcessing::$29 ] -Attempting to uplift remaining variables inzp[1]:131 [ startProcessing::$30 ] -Uplifting [startProcessing] best 1245485 combination reg byte a [ startProcessing::$30 ] -Attempting to uplift remaining variables inzp[1]:132 [ startProcessing::$31 ] -Uplifting [startProcessing] best 1239485 combination reg byte a [ startProcessing::$31 ] -Attempting to uplift remaining variables inzp[1]:133 [ startProcessing::$21 ] -Uplifting [startProcessing] best 1235485 combination reg byte a [ startProcessing::$21 ] +Uplifting [startProcessing] best 1263405 combination zp[1]:32 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] +Attempting to uplift remaining variables inzp[1]:128 [ startProcessing::$28 ] +Uplifting [startProcessing] best 1257405 combination reg byte a [ startProcessing::$28 ] +Attempting to uplift remaining variables inzp[1]:129 [ startProcessing::$29 ] +Uplifting [startProcessing] best 1251405 combination reg byte a [ startProcessing::$29 ] +Attempting to uplift remaining variables inzp[1]:130 [ startProcessing::$30 ] +Uplifting [startProcessing] best 1245405 combination reg byte a [ startProcessing::$30 ] +Attempting to uplift remaining variables inzp[1]:131 [ startProcessing::$31 ] +Uplifting [startProcessing] best 1239405 combination reg byte a [ startProcessing::$31 ] +Attempting to uplift remaining variables inzp[1]:132 [ startProcessing::$21 ] +Uplifting [startProcessing] best 1235405 combination reg byte a [ startProcessing::$21 ] Attempting to uplift remaining variables inzp[1]:28 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] -Uplifting [getCharToProcess] best 1235485 combination zp[1]:28 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] +Uplifting [getCharToProcess] best 1235405 combination zp[1]:28 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] Attempting to uplift remaining variables inzp[1]:26 [ getCharToProcess::x#2 getCharToProcess::x#1 ] -Uplifting [getCharToProcess] best 1217485 combination reg byte y [ getCharToProcess::x#2 getCharToProcess::x#1 ] +Uplifting [getCharToProcess] best 1217405 combination reg byte y [ getCharToProcess::x#2 getCharToProcess::x#1 ] Attempting to uplift remaining variables inzp[1]:31 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] -Uplifting [startProcessing] best 1216585 combination reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] +Uplifting [startProcessing] best 1216505 combination reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] Attempting to uplift remaining variables inzp[1]:37 [ startProcessing::i1#2 startProcessing::i1#1 ] -Uplifting [startProcessing] best 1215685 combination reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ] +Uplifting [startProcessing] best 1215605 combination reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ] Attempting to uplift remaining variables inzp[1]:25 [ getCharToProcess::y#7 getCharToProcess::y#1 ] -Uplifting [getCharToProcess] best 1215685 combination zp[1]:25 [ getCharToProcess::y#7 getCharToProcess::y#1 ] +Uplifting [getCharToProcess] best 1215605 combination zp[1]:25 [ getCharToProcess::y#7 getCharToProcess::y#1 ] Attempting to uplift remaining variables inzp[1]:17 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Uplifting [init_angle_screen] best 1215685 combination zp[1]:17 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] -Attempting to uplift remaining variables inzp[1]:116 [ init_angle_screen::$9 ] -Uplifting [init_angle_screen] best 1215085 combination reg byte a [ init_angle_screen::$9 ] -Attempting to uplift remaining variables inzp[1]:117 [ init_angle_screen::$10 ] -Uplifting [init_angle_screen] best 1214685 combination reg byte a [ init_angle_screen::$10 ] -Attempting to uplift remaining variables inzp[1]:118 [ init_angle_screen::$11 ] -Uplifting [init_angle_screen] best 1214085 combination reg byte a [ init_angle_screen::$11 ] +Uplifting [init_angle_screen] best 1215605 combination zp[1]:17 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] +Attempting to uplift remaining variables inzp[1]:115 [ init_angle_screen::$9 ] +Uplifting [init_angle_screen] best 1215005 combination reg byte a [ init_angle_screen::$9 ] +Attempting to uplift remaining variables inzp[1]:116 [ init_angle_screen::$10 ] +Uplifting [init_angle_screen] best 1214605 combination reg byte a [ init_angle_screen::$10 ] +Attempting to uplift remaining variables inzp[1]:117 [ init_angle_screen::$11 ] +Uplifting [init_angle_screen] best 1214005 combination reg byte a [ init_angle_screen::$11 ] Attempting to uplift remaining variables inzp[1]:16 [ init_angle_screen::x#2 init_angle_screen::x#1 ] -Uplifting [init_angle_screen] best 1214085 combination zp[1]:16 [ init_angle_screen::x#2 init_angle_screen::x#1 ] -Attempting to uplift remaining variables inzp[1]:115 [ init_angle_screen::ang_w#0 ] -Uplifting [init_angle_screen] best 1214085 combination zp[1]:115 [ init_angle_screen::ang_w#0 ] -Attempting to uplift remaining variables inzp[1]:176 [ startProcessing::$36 ] -Uplifting [startProcessing] best 1214079 combination reg byte a [ startProcessing::$36 ] -Attempting to uplift remaining variables inzp[1]:177 [ startProcessing::$37 ] -Uplifting [startProcessing] best 1214073 combination reg byte a [ startProcessing::$37 ] -Attempting to uplift remaining variables inzp[1]:178 [ startProcessing::$38 ] -Uplifting [startProcessing] best 1214067 combination reg byte a [ startProcessing::$38 ] -Attempting to uplift remaining variables inzp[1]:179 [ startProcessing::$39 ] -Uplifting [startProcessing] best 1214061 combination reg byte a [ startProcessing::$39 ] +Uplifting [init_angle_screen] best 1214005 combination zp[1]:16 [ init_angle_screen::x#2 init_angle_screen::x#1 ] +Attempting to uplift remaining variables inzp[1]:114 [ init_angle_screen::ang_w#0 ] +Uplifting [init_angle_screen] best 1214005 combination zp[1]:114 [ init_angle_screen::ang_w#0 ] +Attempting to uplift remaining variables inzp[1]:175 [ startProcessing::$36 ] +Uplifting [startProcessing] best 1213999 combination reg byte a [ startProcessing::$36 ] +Attempting to uplift remaining variables inzp[1]:176 [ startProcessing::$37 ] +Uplifting [startProcessing] best 1213993 combination reg byte a [ startProcessing::$37 ] +Attempting to uplift remaining variables inzp[1]:177 [ startProcessing::$38 ] +Uplifting [startProcessing] best 1213987 combination reg byte a [ startProcessing::$38 ] +Attempting to uplift remaining variables inzp[1]:178 [ startProcessing::$39 ] +Uplifting [startProcessing] best 1213981 combination reg byte a [ startProcessing::$39 ] Attempting to uplift remaining variables inzp[1]:11 [ init_angle_screen::y#5 init_angle_screen::y#1 ] -Uplifting [init_angle_screen] best 1214061 combination zp[1]:11 [ init_angle_screen::y#5 init_angle_screen::y#1 ] -Attempting to uplift remaining variables inzp[1]:180 [ startProcessing::$22 ] -Uplifting [startProcessing] best 1214033 combination reg byte x [ startProcessing::$22 ] -Attempting to uplift remaining variables inzp[1]:153 [ startProcessing::ch#0 ] -Uplifting [startProcessing] best 1214027 combination reg byte a [ startProcessing::ch#0 ] +Uplifting [init_angle_screen] best 1213981 combination zp[1]:11 [ init_angle_screen::y#5 init_angle_screen::y#1 ] +Attempting to uplift remaining variables inzp[1]:179 [ startProcessing::$22 ] +Uplifting [startProcessing] best 1213953 combination reg byte x [ startProcessing::$22 ] +Attempting to uplift remaining variables inzp[1]:152 [ startProcessing::ch#0 ] +Uplifting [startProcessing] best 1213947 combination reg byte a [ startProcessing::ch#0 ] Attempting to uplift remaining variables inzp[1]:10 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] -Uplifting [processChars] best 1214027 combination zp[1]:10 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] +Uplifting [processChars] best 1213947 combination zp[1]:10 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] Attempting to uplift remaining variables inzp[1]:8 [ main::i#2 main::i#1 ] -Uplifting [main] best 1214027 combination zp[1]:8 [ main::i#2 main::i#1 ] +Uplifting [main] best 1213947 combination zp[1]:8 [ main::i#2 main::i#1 ] Attempting to uplift remaining variables inzp[1]:64 [ main::$10 ] -Uplifting [main] best 1213987 combination reg byte a [ main::$10 ] +Uplifting [main] best 1213907 combination reg byte a [ main::$10 ] Attempting to uplift remaining variables inzp[1]:70 [ main::center_dist#0 ] -Uplifting [main] best 1213927 combination reg byte a [ main::center_dist#0 ] -Attempting to uplift remaining variables inzp[1]:77 [ processChars::$28 ] -Uplifting [processChars] best 1213867 combination reg byte a [ processChars::$28 ] +Uplifting [main] best 1213847 combination reg byte a [ main::center_dist#0 ] Attempting to uplift remaining variables inzp[1]:83 [ processChars::$9 ] -Uplifting [processChars] best 1213807 combination reg byte a [ processChars::$9 ] +Uplifting [processChars] best 1213787 combination reg byte a [ processChars::$9 ] Attempting to uplift remaining variables inzp[1]:84 [ processChars::$10 ] -Uplifting [processChars] best 1213747 combination reg byte a [ processChars::$10 ] -Attempting to uplift remaining variables inzp[1]:91 [ processChars::$73 ] -Uplifting [processChars] best 1213707 combination reg byte a [ processChars::$73 ] -Attempting to uplift remaining variables inzp[1]:92 [ processChars::xchar#0 ] -Uplifting [processChars] best 1213647 combination reg byte a [ processChars::xchar#0 ] -Attempting to uplift remaining variables inzp[1]:93 [ processChars::$29 ] -Uplifting [processChars] best 1213607 combination reg byte a [ processChars::$29 ] -Attempting to uplift remaining variables inzp[1]:94 [ processChars::$79 ] -Uplifting [processChars] best 1213567 combination reg byte a [ processChars::$79 ] -Attempting to uplift remaining variables inzp[1]:95 [ processChars::ychar#0 ] -Uplifting [processChars] best 1213507 combination reg byte a [ processChars::ychar#0 ] -Attempting to uplift remaining variables inzp[1]:96 [ processChars::$30 ] -Uplifting [processChars] best 1213467 combination reg byte a [ processChars::$30 ] -Attempting to uplift remaining variables inzp[1]:97 [ processChars::$25 ] -Uplifting [processChars] best 1213407 combination reg byte a [ processChars::$25 ] -Attempting to uplift remaining variables inzp[1]:174 [ startProcessing::spritePtr#0 ] -Uplifting [startProcessing] best 1213407 combination zp[1]:174 [ startProcessing::spritePtr#0 ] +Uplifting [processChars] best 1213727 combination reg byte a [ processChars::$10 ] +Attempting to uplift remaining variables inzp[1]:90 [ processChars::$73 ] +Uplifting [processChars] best 1213687 combination reg byte a [ processChars::$73 ] +Attempting to uplift remaining variables inzp[1]:91 [ processChars::xchar#0 ] +Uplifting [processChars] best 1213627 combination reg byte a [ processChars::xchar#0 ] +Attempting to uplift remaining variables inzp[1]:92 [ processChars::$29 ] +Uplifting [processChars] best 1213587 combination reg byte a [ processChars::$29 ] +Attempting to uplift remaining variables inzp[1]:93 [ processChars::$79 ] +Uplifting [processChars] best 1213547 combination reg byte a [ processChars::$79 ] +Attempting to uplift remaining variables inzp[1]:94 [ processChars::ychar#0 ] +Uplifting [processChars] best 1213487 combination reg byte a [ processChars::ychar#0 ] +Attempting to uplift remaining variables inzp[1]:95 [ processChars::$30 ] +Uplifting [processChars] best 1213447 combination reg byte a [ processChars::$30 ] +Attempting to uplift remaining variables inzp[1]:96 [ processChars::$25 ] +Uplifting [processChars] best 1213387 combination reg byte a [ processChars::$25 ] +Attempting to uplift remaining variables inzp[1]:173 [ startProcessing::spritePtr#0 ] +Uplifting [startProcessing] best 1213387 combination zp[1]:173 [ startProcessing::spritePtr#0 ] Attempting to uplift remaining variables inzp[1]:9 [ processChars::i#10 processChars::i#1 ] -Uplifting [processChars] best 1213407 combination zp[1]:9 [ processChars::i#10 processChars::i#1 ] -Attempting to uplift remaining variables inzp[1]:175 [ startProcessing::$15 ] -Uplifting [startProcessing] best 1213405 combination reg byte y [ startProcessing::$15 ] -Attempting to uplift remaining variables inzp[1]:85 [ processChars::$13 ] -Uplifting [processChars] best 1213335 combination reg byte x [ processChars::$13 ] +Uplifting [processChars] best 1213387 combination zp[1]:9 [ processChars::i#10 processChars::i#1 ] +Attempting to uplift remaining variables inzp[1]:174 [ startProcessing::$15 ] +Uplifting [startProcessing] best 1213385 combination reg byte y [ startProcessing::$15 ] Attempting to uplift remaining variables inzp[1]:65 [ getCharToProcess::return_x#0 ] -Uplifting [getCharToProcess] best 1213275 combination reg byte y [ getCharToProcess::return_x#0 ] +Uplifting [getCharToProcess] best 1213325 combination reg byte y [ getCharToProcess::return_x#0 ] Attempting to uplift remaining variables inzp[1]:66 [ getCharToProcess::return_y#0 ] -Uplifting [getCharToProcess] best 1213215 combination reg byte a [ getCharToProcess::return_y#0 ] +Uplifting [getCharToProcess] best 1213265 combination reg byte a [ getCharToProcess::return_y#0 ] Attempting to uplift remaining variables inzp[1]:67 [ getCharToProcess::return_dist#0 ] -Uplifting [getCharToProcess] best 1213175 combination reg byte x [ getCharToProcess::return_dist#0 ] +Uplifting [getCharToProcess] best 1213225 combination reg byte x [ getCharToProcess::return_dist#0 ] Attempting to uplift remaining variables inzp[1]:68 [ main::center_x#0 ] -Uplifting [main] best 1213115 combination reg byte y [ main::center_x#0 ] +Uplifting [main] best 1213165 combination reg byte y [ main::center_x#0 ] Attempting to uplift remaining variables inzp[1]:69 [ main::center_y#0 ] -Uplifting [main] best 1213115 combination zp[1]:69 [ main::center_y#0 ] -Attempting to uplift remaining variables inzp[1]:146 [ startProcessing::spriteCol#0 ] -Uplifting [startProcessing] best 1213115 combination zp[1]:146 [ startProcessing::spriteCol#0 ] +Uplifting [main] best 1213165 combination zp[1]:69 [ main::center_y#0 ] +Attempting to uplift remaining variables inzp[1]:145 [ startProcessing::spriteCol#0 ] +Uplifting [startProcessing] best 1213165 combination zp[1]:145 [ startProcessing::spriteCol#0 ] Attempting to uplift remaining variables inzp[1]:71 [ startProcessing::center_x#0 ] -Uplifting [startProcessing] best 1213115 combination zp[1]:71 [ startProcessing::center_x#0 ] -Attempting to uplift remaining variables inzp[1]:88 [ processChars::ypos#0 ] -Uplifting [processChars] best 1213115 combination zp[1]:88 [ processChars::ypos#0 ] +Uplifting [startProcessing] best 1213165 combination zp[1]:71 [ startProcessing::center_x#0 ] +Attempting to uplift remaining variables inzp[1]:87 [ processChars::ypos#0 ] +Uplifting [processChars] best 1213165 combination zp[1]:87 [ processChars::ypos#0 ] Attempting to uplift remaining variables inzp[1]:80 [ processChars::bitmask#0 ] -Uplifting [processChars] best 1213115 combination zp[1]:80 [ processChars::bitmask#0 ] +Uplifting [processChars] best 1213165 combination zp[1]:80 [ processChars::bitmask#0 ] +Attempting to uplift remaining variables inzp[1]:73 [ processChars::$13 ] +Uplifting [processChars] best 1213165 combination zp[1]:73 [ processChars::$13 ] Attempting to uplift remaining variables inzp[1]:72 [ startProcessing::center_y#0 ] -Uplifting [startProcessing] best 1213115 combination zp[1]:72 [ startProcessing::center_y#0 ] +Uplifting [startProcessing] best 1213165 combination zp[1]:72 [ startProcessing::center_y#0 ] Coalescing zero page register [ zp[2]:14 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] ] with [ zp[2]:58 [ init_angle_screen::screen#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:33 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] ] with [ zp[2]:156 [ startProcessing::$6 ] ] - score: 1 -Coalescing zero page register [ zp[2]:35 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] ] with [ zp[2]:151 [ startProcessing::$4 ] ] - score: 1 +Coalescing zero page register [ zp[2]:33 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] ] with [ zp[2]:155 [ startProcessing::$6 ] ] - score: 1 +Coalescing zero page register [ zp[2]:35 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] ] with [ zp[2]:150 [ startProcessing::$4 ] ] - score: 1 Coalescing zero page register [ zp[2]:43 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] ] with [ zp[2]:45 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] ] - score: 1 Coalescing zero page register [ zp[1]:69 [ main::center_y#0 ] ] with [ zp[1]:72 [ startProcessing::center_y#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:81 [ processChars::xpos#0 ] ] with [ zp[2]:89 [ processChars::$21 ] ] - score: 1 -Coalescing zero page register [ zp[2]:100 [ init_angle_screen::xw#0 ] ] with [ zp[2]:105 [ atan2_16::x#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:103 [ init_angle_screen::yw#0 ] ] with [ zp[2]:107 [ atan2_16::y#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:109 [ atan2_16::return#2 ] ] with [ zp[2]:111 [ init_angle_screen::angle_w#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:119 [ getCharToProcess::$11 ] ] with [ zp[2]:123 [ getCharToProcess::$13 ] ] - score: 1 -Coalescing zero page register [ zp[2]:125 [ getCharToProcess::$8 ] ] with [ zp[2]:127 [ getCharToProcess::$9 ] ] - score: 1 -Coalescing zero page register [ zp[2]:134 [ startProcessing::$23 ] ] with [ zp[2]:138 [ startProcessing::$34 ] ] - score: 1 -Coalescing zero page register [ zp[2]:140 [ startProcessing::$0 ] ] with [ zp[2]:142 [ startProcessing::offset#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:158 [ startProcessing::$26 ] ] with [ zp[2]:160 [ startProcessing::$8 ] ] - score: 1 -Coalescing zero page register [ zp[2]:162 [ startProcessing::$9 ] ] with [ zp[2]:164 [ startProcessing::spriteX#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:166 [ startProcessing::$27 ] ] with [ zp[2]:168 [ startProcessing::$11 ] ] - score: 1 -Coalescing zero page register [ zp[2]:170 [ startProcessing::$12 ] ] with [ zp[2]:172 [ startProcessing::spriteY#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:33 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$6 ] ] with [ zp[2]:154 [ startProcessing::$25 ] ] - score: 1 -Coalescing zero page register [ zp[2]:35 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$4 ] ] with [ zp[2]:149 [ startProcessing::$24 ] ] - score: 1 -Coalescing zero page register [ zp[2]:43 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] ] with [ zp[2]:109 [ atan2_16::return#2 init_angle_screen::angle_w#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:119 [ getCharToProcess::$11 getCharToProcess::$13 ] ] with [ zp[2]:125 [ getCharToProcess::$8 getCharToProcess::$9 ] ] - score: 1 -Coalescing zero page register [ zp[2]:134 [ startProcessing::$23 startProcessing::$34 ] ] with [ zp[2]:140 [ startProcessing::$0 startProcessing::offset#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:158 [ startProcessing::$26 startProcessing::$8 ] ] with [ zp[2]:162 [ startProcessing::$9 startProcessing::spriteX#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:166 [ startProcessing::$27 startProcessing::$11 ] ] with [ zp[2]:170 [ startProcessing::$12 startProcessing::spriteY#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:43 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 ] ] with [ zp[2]:113 [ init_angle_screen::$7 ] ] - score: 1 -Coalescing zero page register [ zp[2]:134 [ startProcessing::$23 startProcessing::$34 startProcessing::$0 startProcessing::offset#0 ] ] with [ zp[2]:147 [ startProcessing::screenPtr#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:81 [ processChars::xpos#0 ] ] with [ zp[2]:88 [ processChars::$21 ] ] - score: 1 +Coalescing zero page register [ zp[2]:99 [ init_angle_screen::xw#0 ] ] with [ zp[2]:104 [ atan2_16::x#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:102 [ init_angle_screen::yw#0 ] ] with [ zp[2]:106 [ atan2_16::y#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:108 [ atan2_16::return#2 ] ] with [ zp[2]:110 [ init_angle_screen::angle_w#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:118 [ getCharToProcess::$11 ] ] with [ zp[2]:122 [ getCharToProcess::$13 ] ] - score: 1 +Coalescing zero page register [ zp[2]:124 [ getCharToProcess::$8 ] ] with [ zp[2]:126 [ getCharToProcess::$9 ] ] - score: 1 +Coalescing zero page register [ zp[2]:133 [ startProcessing::$23 ] ] with [ zp[2]:137 [ startProcessing::$34 ] ] - score: 1 +Coalescing zero page register [ zp[2]:139 [ startProcessing::$0 ] ] with [ zp[2]:141 [ startProcessing::offset#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:157 [ startProcessing::$26 ] ] with [ zp[2]:159 [ startProcessing::$8 ] ] - score: 1 +Coalescing zero page register [ zp[2]:161 [ startProcessing::$9 ] ] with [ zp[2]:163 [ startProcessing::spriteX#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:165 [ startProcessing::$27 ] ] with [ zp[2]:167 [ startProcessing::$11 ] ] - score: 1 +Coalescing zero page register [ zp[2]:169 [ startProcessing::$12 ] ] with [ zp[2]:171 [ startProcessing::spriteY#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:33 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$6 ] ] with [ zp[2]:153 [ startProcessing::$25 ] ] - score: 1 +Coalescing zero page register [ zp[2]:35 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$4 ] ] with [ zp[2]:148 [ startProcessing::$24 ] ] - score: 1 +Coalescing zero page register [ zp[2]:43 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] ] with [ zp[2]:108 [ atan2_16::return#2 init_angle_screen::angle_w#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:118 [ getCharToProcess::$11 getCharToProcess::$13 ] ] with [ zp[2]:124 [ getCharToProcess::$8 getCharToProcess::$9 ] ] - score: 1 +Coalescing zero page register [ zp[2]:133 [ startProcessing::$23 startProcessing::$34 ] ] with [ zp[2]:139 [ startProcessing::$0 startProcessing::offset#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:157 [ startProcessing::$26 startProcessing::$8 ] ] with [ zp[2]:161 [ startProcessing::$9 startProcessing::spriteX#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:165 [ startProcessing::$27 startProcessing::$11 ] ] with [ zp[2]:169 [ startProcessing::$12 startProcessing::spriteY#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:43 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 ] ] with [ zp[2]:112 [ init_angle_screen::$7 ] ] - score: 1 +Coalescing zero page register [ zp[2]:133 [ startProcessing::$23 startProcessing::$34 startProcessing::$0 startProcessing::offset#0 ] ] with [ zp[2]:146 [ startProcessing::screenPtr#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:18 [ initSprites::sp#2 initSprites::sp#1 ] ] with [ zp[2]:12 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] ] Coalescing zero page register [ zp[2]:21 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#0 getCharToProcess::screen_line#1 ] ] with [ zp[2]:14 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 init_angle_screen::screen#0 ] ] Coalescing zero page register [ zp[1]:25 [ getCharToProcess::y#7 getCharToProcess::y#1 ] ] with [ zp[1]:11 [ init_angle_screen::y#5 init_angle_screen::y#1 ] ] @@ -7539,19 +7530,19 @@ Coalescing zero page register [ zp[1]:32 [ startProcessing::freeIdx#2 startProce Coalescing zero page register [ zp[2]:33 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$6 startProcessing::$25 ] ] with [ zp[2]:23 [ getCharToProcess::dist_line#6 getCharToProcess::dist_line#0 getCharToProcess::dist_line#1 ] ] Coalescing zero page register [ zp[2]:38 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] ] with [ zp[2]:35 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$4 startProcessing::$24 ] ] Coalescing zero page register [ zp[2]:56 [ malloc::mem#0 ] ] with [ zp[2]:4 [ main::src#2 main::src#1 ] ] -Coalescing zero page register [ zp[1]:115 [ init_angle_screen::ang_w#0 ] ] with [ zp[1]:71 [ startProcessing::center_x#0 ] ] -Coalescing zero page register [ zp[2]:119 [ getCharToProcess::$11 getCharToProcess::$13 getCharToProcess::$8 getCharToProcess::$9 ] ] with [ zp[2]:40 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] ] -Coalescing zero page register [ zp[2]:121 [ getCharToProcess::$12 ] ] with [ zp[2]:43 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ] ] -Coalescing zero page register [ zp[2]:134 [ startProcessing::$23 startProcessing::$34 startProcessing::$0 startProcessing::offset#0 startProcessing::screenPtr#0 ] ] with [ zp[2]:48 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] ] -Coalescing zero page register [ zp[2]:136 [ startProcessing::$33 ] ] with [ zp[2]:50 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] ] -Coalescing zero page register [ zp[2]:144 [ startProcessing::colPtr#0 ] ] with [ zp[2]:100 [ init_angle_screen::xw#0 atan2_16::x#0 ] ] -Coalescing zero page register [ zp[2]:158 [ startProcessing::$26 startProcessing::$8 startProcessing::$9 startProcessing::spriteX#0 ] ] with [ zp[2]:103 [ init_angle_screen::yw#0 atan2_16::y#0 ] ] +Coalescing zero page register [ zp[1]:114 [ init_angle_screen::ang_w#0 ] ] with [ zp[1]:71 [ startProcessing::center_x#0 ] ] +Coalescing zero page register [ zp[2]:118 [ getCharToProcess::$11 getCharToProcess::$13 getCharToProcess::$8 getCharToProcess::$9 ] ] with [ zp[2]:40 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] ] +Coalescing zero page register [ zp[2]:120 [ getCharToProcess::$12 ] ] with [ zp[2]:43 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ] ] +Coalescing zero page register [ zp[2]:133 [ startProcessing::$23 startProcessing::$34 startProcessing::$0 startProcessing::offset#0 startProcessing::screenPtr#0 ] ] with [ zp[2]:48 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] ] +Coalescing zero page register [ zp[2]:135 [ startProcessing::$33 ] ] with [ zp[2]:50 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] ] +Coalescing zero page register [ zp[2]:143 [ startProcessing::colPtr#0 ] ] with [ zp[2]:99 [ init_angle_screen::xw#0 atan2_16::x#0 ] ] +Coalescing zero page register [ zp[2]:157 [ startProcessing::$26 startProcessing::$8 startProcessing::$9 startProcessing::spriteX#0 ] ] with [ zp[2]:102 [ init_angle_screen::yw#0 atan2_16::y#0 ] ] Coalescing zero page register [ zp[2]:33 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$6 startProcessing::$25 getCharToProcess::dist_line#6 getCharToProcess::dist_line#0 getCharToProcess::dist_line#1 ] ] with [ zp[2]:18 [ initSprites::sp#2 initSprites::sp#1 init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] ] Coalescing zero page register [ zp[2]:56 [ malloc::mem#0 main::src#2 main::src#1 ] ] with [ zp[2]:21 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#0 getCharToProcess::screen_line#1 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 init_angle_screen::screen#0 ] ] Coalescing zero page register [ zp[1]:69 [ main::center_y#0 startProcessing::center_y#0 ] ] with [ zp[1]:25 [ getCharToProcess::y#7 getCharToProcess::y#1 init_angle_screen::y#5 init_angle_screen::y#1 ] ] -Coalescing zero page register [ zp[1]:146 [ startProcessing::spriteCol#0 ] ] with [ zp[1]:27 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 init_angle_screen::x#2 init_angle_screen::x#1 ] ] -Coalescing zero page register [ zp[2]:166 [ startProcessing::$27 startProcessing::$11 startProcessing::$12 startProcessing::spriteY#0 ] ] with [ zp[2]:119 [ getCharToProcess::$11 getCharToProcess::$13 getCharToProcess::$8 getCharToProcess::$9 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] ] -Coalescing zero page register [ zp[1]:174 [ startProcessing::spritePtr#0 ] ] with [ zp[1]:28 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 init_angle_screen::xb#2 init_angle_screen::xb#1 ] ] +Coalescing zero page register [ zp[1]:145 [ startProcessing::spriteCol#0 ] ] with [ zp[1]:27 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 init_angle_screen::x#2 init_angle_screen::x#1 ] ] +Coalescing zero page register [ zp[2]:165 [ startProcessing::$27 startProcessing::$11 startProcessing::$12 startProcessing::spriteY#0 ] ] with [ zp[2]:118 [ getCharToProcess::$11 getCharToProcess::$13 getCharToProcess::$8 getCharToProcess::$9 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] ] +Coalescing zero page register [ zp[1]:173 [ startProcessing::spritePtr#0 ] ] with [ zp[1]:28 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 init_angle_screen::xb#2 init_angle_screen::xb#1 ] ] Allocated (was zp[2]:6) zp[2]:4 [ main::dst#2 main::dst#0 main::dst#1 ] Allocated (was zp[1]:8) zp[1]:6 [ main::i#2 main::i#1 ] Allocated (was zp[1]:9) zp[1]:7 [ processChars::i#10 processChars::i#1 ] @@ -7563,20 +7554,21 @@ Allocated (was zp[2]:52) zp[2]:14 [ SCREEN_COPY#0 ] Allocated (was zp[2]:54) zp[2]:16 [ SCREEN_DIST#0 ] Allocated (was zp[2]:56) zp[2]:18 [ malloc::mem#0 main::src#2 main::src#1 getCharToProcess::screen_line#4 getCharToProcess::screen_line#0 getCharToProcess::screen_line#1 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 init_angle_screen::screen#0 ] Allocated (was zp[1]:69) zp[1]:20 [ main::center_y#0 startProcessing::center_y#0 getCharToProcess::y#7 getCharToProcess::y#1 init_angle_screen::y#5 init_angle_screen::y#1 ] -Allocated (was zp[2]:78) zp[2]:21 [ processChars::processing#0 ] -Allocated (was zp[1]:80) zp[1]:23 [ processChars::bitmask#0 ] -Allocated (was zp[2]:81) zp[2]:24 [ processChars::xpos#0 processChars::$21 ] -Allocated (was zp[2]:86) zp[2]:26 [ processChars::$12 ] -Allocated (was zp[1]:88) zp[1]:28 [ processChars::ypos#0 ] -Allocated (was zp[1]:115) zp[1]:29 [ init_angle_screen::ang_w#0 startProcessing::center_x#0 ] -Allocated (was zp[2]:121) zp[2]:30 [ getCharToProcess::$12 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ] -Allocated (was zp[2]:134) zp[2]:32 [ startProcessing::$23 startProcessing::$34 startProcessing::$0 startProcessing::offset#0 startProcessing::screenPtr#0 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] -Allocated (was zp[2]:136) zp[2]:34 [ startProcessing::$33 atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] -Allocated (was zp[2]:144) zp[2]:36 [ startProcessing::colPtr#0 init_angle_screen::xw#0 atan2_16::x#0 ] -Allocated (was zp[1]:146) zp[1]:38 [ startProcessing::spriteCol#0 getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 init_angle_screen::x#2 init_angle_screen::x#1 ] -Allocated (was zp[2]:158) zp[2]:39 [ startProcessing::$26 startProcessing::$8 startProcessing::$9 startProcessing::spriteX#0 init_angle_screen::yw#0 atan2_16::y#0 ] -Allocated (was zp[2]:166) zp[2]:41 [ startProcessing::$27 startProcessing::$11 startProcessing::$12 startProcessing::spriteY#0 getCharToProcess::$11 getCharToProcess::$13 getCharToProcess::$8 getCharToProcess::$9 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] -Allocated (was zp[1]:174) zp[1]:43 [ startProcessing::spritePtr#0 getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 init_angle_screen::xb#2 init_angle_screen::xb#1 ] +Allocated (was zp[1]:73) zp[1]:21 [ processChars::$13 ] +Allocated (was zp[2]:78) zp[2]:22 [ processChars::processing#0 ] +Allocated (was zp[1]:80) zp[1]:24 [ processChars::bitmask#0 ] +Allocated (was zp[2]:81) zp[2]:25 [ processChars::xpos#0 processChars::$21 ] +Allocated (was zp[2]:85) zp[2]:27 [ processChars::$12 ] +Allocated (was zp[1]:87) zp[1]:29 [ processChars::ypos#0 ] +Allocated (was zp[1]:114) zp[1]:30 [ init_angle_screen::ang_w#0 startProcessing::center_x#0 ] +Allocated (was zp[2]:120) zp[2]:31 [ getCharToProcess::$12 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ] +Allocated (was zp[2]:133) zp[2]:33 [ startProcessing::$23 startProcessing::$34 startProcessing::$0 startProcessing::offset#0 startProcessing::screenPtr#0 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] +Allocated (was zp[2]:135) zp[2]:35 [ startProcessing::$33 atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] +Allocated (was zp[2]:143) zp[2]:37 [ startProcessing::colPtr#0 init_angle_screen::xw#0 atan2_16::x#0 ] +Allocated (was zp[1]:145) zp[1]:39 [ startProcessing::spriteCol#0 getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 init_angle_screen::x#2 init_angle_screen::x#1 ] +Allocated (was zp[2]:157) zp[2]:40 [ startProcessing::$26 startProcessing::$8 startProcessing::$9 startProcessing::spriteX#0 init_angle_screen::yw#0 atan2_16::y#0 ] +Allocated (was zp[2]:165) zp[2]:42 [ startProcessing::$27 startProcessing::$11 startProcessing::$12 startProcessing::spriteY#0 getCharToProcess::$11 getCharToProcess::$13 getCharToProcess::$8 getCharToProcess::$9 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] +Allocated (was zp[1]:173) zp[1]:44 [ startProcessing::spritePtr#0 getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 init_angle_screen::xb#2 init_angle_screen::xb#1 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -7914,7 +7906,7 @@ main: { __b4: // [40] call initSprites // Init sprites - // [141] phi from main::@4 to initSprites [phi:main::@4->initSprites] + // [140] phi from main::@4 to initSprites [phi:main::@4->initSprites] initSprites_from___b4: jsr initSprites // [41] phi from main::@4 to main::@10 [phi:main::@4->main::@10] @@ -7968,7 +7960,7 @@ main: { sty.z startProcessing.center_x // [55] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0 // [56] call startProcessing - // [192] phi from main::@6 to startProcessing [phi:main::@6->startProcessing] + // [191] phi from main::@6 to startProcessing [phi:main::@6->startProcessing] startProcessing_from___b6: jsr startProcessing jmp __b5_from___b6 @@ -7998,13 +7990,14 @@ main: { // processChars // Process any chars in the PROCESSING array processChars: { - .label __12 = $1a - .label __21 = $18 - .label processing = $15 - .label bitmask = $17 + .label __12 = $1b + .label __13 = $15 + .label __21 = $19 + .label processing = $16 + .label bitmask = $18 .label i = 7 - .label xpos = $18 - .label ypos = $1c + .label xpos = $19 + .label ypos = $1d .label numActive = 8 // [61] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] __b1_from_processChars: @@ -8022,10 +8015,12 @@ processChars: { jmp __b1 // processChars::@1 __b1: - // [62] (byte~) processChars::$86 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + // [62] (byte~) processChars::$13 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i asl - // [63] (byte~) processChars::$87 ← (byte~) processChars::$86 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + sta.z __13 + // [63] (byte~) processChars::$87 ← (byte~) processChars::$13 + (byte) processChars::i#10 -- vbuaa=vbuz1_plus_vbuz2 + lda.z __13 clc adc.z i // [64] (byte~) processChars::$88 ← (byte~) processChars::$87 << (byte) 1 -- vbuaa=vbuaa_rol_1 @@ -8148,14 +8143,11 @@ processChars: { jmp __b5 // processChars::@5 __b5: - // [81] (byte~) processChars::$13 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 - lda.z i - asl - tax - // [82] *((const nomodify byte*) SPRITES_XPOS + (byte~) processChars::$13) ← (byte)(word) processChars::xpos#0 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 + // [81] *((const nomodify byte*) SPRITES_XPOS + (byte~) processChars::$13) ← (byte)(word) processChars::xpos#0 -- pbuc1_derefidx_vbuz1=_byte_vwuz2 + ldy.z __13 lda.z xpos - sta SPRITES_XPOS,x - // [83] (word~) processChars::$12 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 + sta SPRITES_XPOS,y + // [82] (word~) processChars::$12 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y lda (processing),y sta.z __12 @@ -8170,13 +8162,14 @@ processChars: { ror.z __12 lsr.z __12+1 ror.z __12 - // [84] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$12 -- vbuz1=_byte_vwuz2 + // [83] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$12 -- vbuz1=_byte_vwuz2 lda.z __12 sta.z ypos - // [85] *((const nomodify byte*) SPRITES_YPOS + (byte~) processChars::$13) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1 + // [84] *((const nomodify byte*) SPRITES_YPOS + (byte~) processChars::$13) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda.z ypos - sta SPRITES_YPOS,x - // [86] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const nomodify word) XPOS_LEFTMOST) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + ldy.z __13 + sta SPRITES_YPOS,y + // [85] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const nomodify word) XPOS_LEFTMOST) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 // Move sprite ldy #1 lda (processing),y @@ -8191,7 +8184,7 @@ processChars: { jmp __b14 // processChars::@14 __b14: - // [87] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const nomodify word) XPOS_RIGHTMOST) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 + // [86] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const nomodify word) XPOS_RIGHTMOST) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 ldy #1 lda #>XPOS_RIGHTMOST cmp (processing),y @@ -8205,7 +8198,7 @@ processChars: { jmp __b13 // processChars::@13 __b13: - // [88] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const nomodify word) YPOS_TOPMOST) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 + // [87] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const nomodify word) YPOS_TOPMOST) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda (processing),y @@ -8220,7 +8213,7 @@ processChars: { jmp __b12 // processChars::@12 __b12: - // [89] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const nomodify word) YPOS_BOTTOMMOST) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 + // [88] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const nomodify word) YPOS_BOTTOMMOST) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda #>YPOS_BOTTOMMOST @@ -8235,21 +8228,21 @@ processChars: { jmp __b9 // processChars::@9 __b9: - // [90] (word~) processChars::$21 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz1_ror_3 + // [89] (word~) processChars::$21 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz1_ror_3 lsr.z __21+1 ror.z __21 lsr.z __21+1 ror.z __21 lsr.z __21+1 ror.z __21 - // [91] (byte~) processChars::$73 ← (byte)(word~) processChars::$21 -- vbuaa=_byte_vwuz1 + // [90] (byte~) processChars::$73 ← (byte)(word~) processChars::$21 -- vbuaa=_byte_vwuz1 lda.z __21 - // [92] (byte) processChars::xchar#0 ← (byte~) processChars::$73 - (const nomodify byte) BORDER_XPOS_LEFT/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 + // [91] (byte) processChars::xchar#0 ← (byte~) processChars::$73 - (const nomodify byte) BORDER_XPOS_LEFT/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #BORDER_XPOS_LEFT/8 - // [93] (byte~) processChars::$29 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + // [92] (byte~) processChars::$29 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - // [94] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const to_nomodify word*) VXSIN + (byte~) processChars::$29) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa + // [93] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const to_nomodify word*) VXSIN + (byte~) processChars::$29) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX tax clc @@ -8260,7 +8253,7 @@ processChars: { lda (processing),y adc VXSIN+1,x sta (processing),y - // [95] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1 + // [94] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX sty.z $ff clc @@ -8274,17 +8267,17 @@ processChars: { ldy #1 adc (processing),y sta (processing),y - // [96] (byte~) processChars::$79 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 + // [95] (byte~) processChars::$79 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 lda.z ypos lsr lsr lsr - // [97] (byte) processChars::ychar#0 ← (byte~) processChars::$79 - (const nomodify byte) BORDER_YPOS_TOP/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 + // [96] (byte) processChars::ychar#0 ← (byte~) processChars::$79 - (const nomodify byte) BORDER_YPOS_TOP/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #BORDER_YPOS_TOP/8 - // [98] (byte~) processChars::$30 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + // [97] (byte~) processChars::$30 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - // [99] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const to_nomodify word*) VYSIN + (byte~) processChars::$30) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa + // [98] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const to_nomodify word*) VYSIN + (byte~) processChars::$30) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY tax clc @@ -8295,7 +8288,7 @@ processChars: { lda (processing),y adc VYSIN+1,x sta (processing),y - // [100] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 + // [99] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY clc lda (processing),y @@ -8310,44 +8303,44 @@ processChars: { jmp __b7 // processChars::@7 __b7: - // [101] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 + // [100] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 inc.z numActive - // [102] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] + // [101] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] __b2_from___b1: __b2_from___b7: - // [102] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy + // [101] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy jmp __b2 // processChars::@2 __b2: - // [103] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + // [102] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc.z i - // [104] if((byte) processChars::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + // [103] if((byte) processChars::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp.z i bne __b1_from___b2 jmp __breturn // processChars::@return __breturn: - // [105] return + // [104] return rts // processChars::@6 __b6: - // [106] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE -- pbuz1_derefidx_vbuc1=vbuc2 + // [105] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE -- pbuz1_derefidx_vbuc1=vbuc2 // Set status to FREE lda #STATUS_FREE ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS sta (processing),y - // [107] (byte~) processChars::$25 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + // [106] (byte~) processChars::$25 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor.z bitmask - // [108] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) & (byte~) processChars::$25 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + // [107] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) & (byte~) processChars::$25 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa // Disable the sprite and SPRITES_ENABLE sta SPRITES_ENABLE jmp __b7 // processChars::@4 __b4: - // [109] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + // [108] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora.z bitmask sta SPRITES_XMSB @@ -8358,18 +8351,18 @@ processChars: { // Utilizes symmetry around the center // init_angle_screen(byte* zp($12) screen) init_angle_screen: { - .label __7 = $1e + .label __7 = $1f .label screen = $12 .label screen_topline = $a .label screen_bottomline = $12 - .label xw = $24 - .label yw = $27 - .label angle_w = $1e - .label ang_w = $1d - .label x = $26 - .label xb = $2b + .label xw = $25 + .label yw = $28 + .label angle_w = $1f + .label ang_w = $1e + .label x = $27 + .label xb = $2c .label y = $14 - // [110] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz2_plus_vwuc1 + // [109] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz2_plus_vwuc1 lda.z screen clc adc #<$28*$c @@ -8377,7 +8370,7 @@ init_angle_screen: { lda.z screen+1 adc #>$28*$c sta.z screen_topline+1 - // [111] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz1_plus_vwuc1 + // [110] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz1_plus_vwuc1 clc lda.z screen_bottomline adc #<$28*$c @@ -8385,41 +8378,41 @@ init_angle_screen: { lda.z screen_bottomline+1 adc #>$28*$c sta.z screen_bottomline+1 - // [112] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1] + // [111] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1] __b1_from_init_angle_screen: - // [112] phi (byte*) init_angle_screen::screen_bottomline#6 = (byte*) init_angle_screen::screen_bottomline#0 [phi:init_angle_screen->init_angle_screen::@1#0] -- register_copy - // [112] phi (byte*) init_angle_screen::screen_topline#6 = (byte*) init_angle_screen::screen_topline#0 [phi:init_angle_screen->init_angle_screen::@1#1] -- register_copy - // [112] phi (byte) init_angle_screen::y#5 = (byte) 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1 + // [111] phi (byte*) init_angle_screen::screen_bottomline#6 = (byte*) init_angle_screen::screen_bottomline#0 [phi:init_angle_screen->init_angle_screen::@1#0] -- register_copy + // [111] phi (byte*) init_angle_screen::screen_topline#6 = (byte*) init_angle_screen::screen_topline#0 [phi:init_angle_screen->init_angle_screen::@1#1] -- register_copy + // [111] phi (byte) init_angle_screen::y#5 = (byte) 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1 lda #0 sta.z y jmp __b1 - // [112] phi from init_angle_screen::@4 to init_angle_screen::@1 [phi:init_angle_screen::@4->init_angle_screen::@1] + // [111] phi from init_angle_screen::@4 to init_angle_screen::@1 [phi:init_angle_screen::@4->init_angle_screen::@1] __b1_from___b4: - // [112] phi (byte*) init_angle_screen::screen_bottomline#6 = (byte*) init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#0] -- register_copy - // [112] phi (byte*) init_angle_screen::screen_topline#6 = (byte*) init_angle_screen::screen_topline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#1] -- register_copy - // [112] phi (byte) init_angle_screen::y#5 = (byte) init_angle_screen::y#1 [phi:init_angle_screen::@4->init_angle_screen::@1#2] -- register_copy + // [111] phi (byte*) init_angle_screen::screen_bottomline#6 = (byte*) init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#0] -- register_copy + // [111] phi (byte*) init_angle_screen::screen_topline#6 = (byte*) init_angle_screen::screen_topline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#1] -- register_copy + // [111] phi (byte) init_angle_screen::y#5 = (byte) init_angle_screen::y#1 [phi:init_angle_screen::@4->init_angle_screen::@1#2] -- register_copy jmp __b1 // init_angle_screen::@1 __b1: - // [113] phi from init_angle_screen::@1 to init_angle_screen::@2 [phi:init_angle_screen::@1->init_angle_screen::@2] + // [112] phi from init_angle_screen::@1 to init_angle_screen::@2 [phi:init_angle_screen::@1->init_angle_screen::@2] __b2_from___b1: - // [113] phi (byte) init_angle_screen::xb#2 = (byte) $27 [phi:init_angle_screen::@1->init_angle_screen::@2#0] -- vbuz1=vbuc1 + // [112] phi (byte) init_angle_screen::xb#2 = (byte) $27 [phi:init_angle_screen::@1->init_angle_screen::@2#0] -- vbuz1=vbuc1 lda #$27 sta.z xb - // [113] phi (byte) init_angle_screen::x#2 = (byte) 0 [phi:init_angle_screen::@1->init_angle_screen::@2#1] -- vbuz1=vbuc1 + // [112] phi (byte) init_angle_screen::x#2 = (byte) 0 [phi:init_angle_screen::@1->init_angle_screen::@2#1] -- vbuz1=vbuc1 lda #0 sta.z x jmp __b2 // init_angle_screen::@2 __b2: - // [114] if((byte) init_angle_screen::x#2<(byte) $13+(byte) 1) goto init_angle_screen::@3 -- vbuz1_lt_vbuc1_then_la1 + // [113] if((byte) init_angle_screen::x#2<(byte) $13+(byte) 1) goto init_angle_screen::@3 -- vbuz1_lt_vbuc1_then_la1 lda.z x cmp #$13+1 bcc __b3 jmp __b4 // init_angle_screen::@4 __b4: - // [115] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 -- pbuz1=pbuz1_minus_vbuc1 + // [114] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 -- pbuz1=pbuz1_minus_vbuc1 sec lda.z screen_topline sbc #$28 @@ -8427,7 +8420,7 @@ init_angle_screen: { lda.z screen_topline+1 sbc #0 sta.z screen_topline+1 - // [116] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [115] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc.z screen_bottomline @@ -8435,47 +8428,47 @@ init_angle_screen: { bcc !+ inc.z screen_bottomline+1 !: - // [117] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#5 -- vbuz1=_inc_vbuz1 + // [116] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#5 -- vbuz1=_inc_vbuz1 inc.z y - // [118] if((byte) init_angle_screen::y#1!=(byte) $d) goto init_angle_screen::@1 -- vbuz1_neq_vbuc1_then_la1 + // [117] if((byte) init_angle_screen::y#1!=(byte) $d) goto init_angle_screen::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$d cmp.z y bne __b1_from___b4 jmp __breturn // init_angle_screen::@return __breturn: - // [119] return + // [118] return rts // init_angle_screen::@3 __b3: - // [120] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + // [119] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda.z x asl - // [121] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 -- vbuaa=vbuc1_minus_vbuaa + // [120] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 -- vbuaa=vbuc1_minus_vbuaa eor #$ff sec adc #$27 - // [122] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 -- vwuz1=vbuaa_word_vbuc1 + // [121] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 -- vwuz1=vbuaa_word_vbuc1 ldy #0 sta.z xw+1 sty.z xw - // [123] (byte~) init_angle_screen::$5 ← (byte) init_angle_screen::y#5 << (byte) 1 -- vbuaa=vbuz1_rol_1 + // [122] (byte~) init_angle_screen::$5 ← (byte) init_angle_screen::y#5 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda.z y asl - // [124] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$5 w= (byte) 0 -- vwuz1=vbuaa_word_vbuc1 + // [123] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$5 w= (byte) 0 -- vwuz1=vbuaa_word_vbuc1 ldy #0 sta.z yw+1 sty.z yw - // [125] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 - // [126] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 - // [127] call atan2_16 + // [124] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 + // [125] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 + // [126] call atan2_16 jsr atan2_16 - // [128] (word) atan2_16::return#2 ← (word) atan2_16::return#0 + // [127] (word) atan2_16::return#2 ← (word) atan2_16::return#0 jmp __b5 // init_angle_screen::@5 __b5: - // [129] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 - // [130] (word~) init_angle_screen::$7 ← (word) init_angle_screen::angle_w#0 + (byte) $80 -- vwuz1=vwuz1_plus_vbuc1 + // [128] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 + // [129] (word~) init_angle_screen::$7 ← (word) init_angle_screen::angle_w#0 + (byte) $80 -- vwuz1=vwuz1_plus_vbuc1 lda #$80 clc adc.z __7 @@ -8483,52 +8476,52 @@ init_angle_screen: { bcc !+ inc.z __7+1 !: - // [131] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$7 -- vbuz1=_hi_vwuz2 + // [130] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$7 -- vbuz1=_hi_vwuz2 lda.z __7+1 sta.z ang_w - // [132] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3 + // [131] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3 lda.z ang_w ldy.z xb sta (screen_bottomline),y - // [133] (byte~) init_angle_screen::$9 ← - (byte) init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1 + // [132] (byte~) init_angle_screen::$9 ← - (byte) init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1 lda.z ang_w eor #$ff clc adc #1 - // [134] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$9 -- pbuz1_derefidx_vbuz2=vbuaa + // [133] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$9 -- pbuz1_derefidx_vbuz2=vbuaa ldy.z xb sta (screen_topline),y - // [135] (byte~) init_angle_screen::$10 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1 + // [134] (byte~) init_angle_screen::$10 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1 lda #$80 clc adc.z ang_w - // [136] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$10 -- pbuz1_derefidx_vbuz2=vbuaa + // [135] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$10 -- pbuz1_derefidx_vbuz2=vbuaa ldy.z x sta (screen_topline),y - // [137] (byte~) init_angle_screen::$11 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1 + // [136] (byte~) init_angle_screen::$11 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1 lda #$80 sec sbc.z ang_w - // [138] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa + // [137] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa ldy.z x sta (screen_bottomline),y - // [139] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2 -- vbuz1=_inc_vbuz1 + // [138] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2 -- vbuz1=_inc_vbuz1 inc.z x - // [140] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2 -- vbuz1=_dec_vbuz1 + // [139] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2 -- vbuz1=_dec_vbuz1 dec.z xb - // [113] phi from init_angle_screen::@5 to init_angle_screen::@2 [phi:init_angle_screen::@5->init_angle_screen::@2] + // [112] phi from init_angle_screen::@5 to init_angle_screen::@2 [phi:init_angle_screen::@5->init_angle_screen::@2] __b2_from___b5: - // [113] phi (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#1 [phi:init_angle_screen::@5->init_angle_screen::@2#0] -- register_copy - // [113] phi (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#1 [phi:init_angle_screen::@5->init_angle_screen::@2#1] -- register_copy + // [112] phi (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#1 [phi:init_angle_screen::@5->init_angle_screen::@2#0] -- register_copy + // [112] phi (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#1 [phi:init_angle_screen::@5->init_angle_screen::@2#1] -- register_copy jmp __b2 } // initSprites // Initialize sprites initSprites: { .label sp = $a - // [142] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] + // [141] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] __b1_from_initSprites: - // [142] phi (byte*) initSprites::sp#2 = (const nomodify byte*) SPRITE_DATA [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 + // [141] phi (byte*) initSprites::sp#2 = (const nomodify byte*) SPRITE_DATA [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 lda #SPRITE_DATA @@ -8537,7 +8530,7 @@ initSprites: { // Clear sprite data // initSprites::@1 __b1: - // [143] if((byte*) initSprites::sp#2<(const nomodify byte*) SPRITE_DATA+(const nomodify byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2 -- pbuz1_lt_pbuc1_then_la1 + // [142] if((byte*) initSprites::sp#2<(const nomodify byte*) SPRITE_DATA+(const nomodify byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2 -- pbuz1_lt_pbuc1_then_la1 lda.z sp+1 cmp #>SPRITE_DATA+NUM_PROCESSING*$40 bcc __b2 @@ -8546,57 +8539,57 @@ initSprites: { cmp #initSprites::@3] + // [143] phi from initSprites::@1 to initSprites::@3 [phi:initSprites::@1->initSprites::@3] __b3_from___b1: - // [144] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@3#0] -- vbuxx=vbuc1 + // [143] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@3#0] -- vbuxx=vbuc1 ldx #0 jmp __b3 // Initialize sprite registers - // [144] phi from initSprites::@3 to initSprites::@3 [phi:initSprites::@3->initSprites::@3] + // [143] phi from initSprites::@3 to initSprites::@3 [phi:initSprites::@3->initSprites::@3] __b3_from___b3: - // [144] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@3->initSprites::@3#0] -- register_copy + // [143] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@3->initSprites::@3#0] -- register_copy jmp __b3 // initSprites::@3 __b3: - // [145] *((const nomodify byte*) SPRITES_COLOR + (byte) initSprites::i#2) ← (const nomodify byte) LIGHT_BLUE -- pbuc1_derefidx_vbuxx=vbuc2 + // [144] *((const nomodify byte*) SPRITES_COLOR + (byte) initSprites::i#2) ← (const nomodify byte) LIGHT_BLUE -- pbuc1_derefidx_vbuxx=vbuc2 lda #LIGHT_BLUE sta SPRITES_COLOR,x - // [146] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx + // [145] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx inx - // [147] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@3 -- vbuxx_neq_vbuc1_then_la1 + // [146] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne __b3_from___b3 jmp __b4 // initSprites::@4 __b4: - // [148] *((const nomodify byte*) SPRITES_MC) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [147] *((const nomodify byte*) SPRITES_MC) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - // [149] *((const nomodify byte*) SPRITES_EXPAND_X) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [148] *((const nomodify byte*) SPRITES_EXPAND_X) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_X - // [150] *((const nomodify byte*) SPRITES_EXPAND_Y) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [149] *((const nomodify byte*) SPRITES_EXPAND_Y) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_EXPAND_Y jmp __breturn // initSprites::@return __breturn: - // [151] return + // [150] return rts // initSprites::@2 __b2: - // [152] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + // [151] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (sp),y - // [153] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 + // [152] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1 inc.z sp bne !+ inc.z sp+1 !: - // [142] phi from initSprites::@2 to initSprites::@1 [phi:initSprites::@2->initSprites::@1] + // [141] phi from initSprites::@2 to initSprites::@1 [phi:initSprites::@2->initSprites::@1] __b1_from___b2: - // [142] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@2->initSprites::@1#0] -- register_copy + // [141] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@2->initSprites::@1#0] -- register_copy jmp __b1 } // setupRasterIrq @@ -8605,35 +8598,35 @@ setupRasterIrq: { .label irqRoutine = irqTop // asm { sei } sei - // [155] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK -- _deref_pbuc1=vbuc2 + // [154] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - // [156] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2 + // [155] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - // [157] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2 + // [156] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT jmp __b1 // setupRasterIrq::@1 __b1: - // [158] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + // [157] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda #$7f and VIC_CONTROL sta VIC_CONTROL jmp __b2 // setupRasterIrq::@2 __b2: - // [159] *((const nomodify byte*) RASTER) ← <(const nomodify byte) RASTER_IRQ_TOP -- _deref_pbuc1=vbuc2 + // [158] *((const nomodify byte*) RASTER) ← <(const nomodify byte) RASTER_IRQ_TOP -- _deref_pbuc1=vbuc2 lda #RASTER_IRQ_TOP sta RASTER - // [160] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER -- _deref_pbuc1=vbuc2 + // [159] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - // [161] *((const nomodify void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_qprc1=pprc2 + // [160] *((const nomodify void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_qprc1=pprc2 // Set the IRQ routine lda #getCharToProcess::@1] + // [165] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] __b1_from_getCharToProcess: - // [166] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 + // [165] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta.z closest_y - // [166] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 + // [165] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 lda #0 sta.z closest_x - // [166] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vbuz1=vbuc1 + // [165] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vbuz1=vbuc1 lda #0 sta.z y - // [166] phi (byte) getCharToProcess::closest_dist#8 = (const nomodify byte) NOT_FOUND [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 + // [165] phi (byte) getCharToProcess::closest_dist#8 = (const nomodify byte) NOT_FOUND [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #NOT_FOUND sta.z closest_dist - // [166] phi (byte*) getCharToProcess::dist_line#6 = (byte*) getCharToProcess::dist_line#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- register_copy - // [166] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#0 [phi:getCharToProcess->getCharToProcess::@1#5] -- register_copy + // [165] phi (byte*) getCharToProcess::dist_line#6 = (byte*) getCharToProcess::dist_line#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- register_copy + // [165] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#0 [phi:getCharToProcess->getCharToProcess::@1#5] -- register_copy jmp __b1 // getCharToProcess::@1 __b1: - // [167] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] + // [166] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] __b2_from___b1: - // [167] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy - // [167] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy - // [167] phi (byte) getCharToProcess::closest_dist#2 = (byte) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy - // [167] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuyy=vbuc1 + // [166] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy + // [166] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy + // [166] phi (byte) getCharToProcess::closest_dist#2 = (byte) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy + // [166] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuyy=vbuc1 ldy #0 jmp __b2 // getCharToProcess::@2 __b2: - // [168] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuyy_eq_vbuc1_then_la1 + // [167] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuyy_eq_vbuc1_then_la1 lda #' ' cmp (screen_line),y beq __b11 jmp __b4 // getCharToProcess::@4 __b4: - // [169] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) -- vbuxx=pbuz1_derefidx_vbuyy + // [168] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) -- vbuxx=pbuz1_derefidx_vbuyy lda (dist_line),y tax - // [170] if((byte) getCharToProcess::dist#0>=(byte) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vbuxx_ge_vbuz1_then_la1 + // [169] if((byte) getCharToProcess::dist#0>=(byte) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vbuxx_ge_vbuz1_then_la1 cpx.z closest_dist bcs __b12 jmp __b5 // getCharToProcess::@5 __b5: - // [171] (byte) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuyy + // [170] (byte) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuyy sty.z return_x - // [172] (byte) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 + // [171] (byte) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda.z y sta.z return_y - // [173] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] + // [172] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] __b3_from___b11: __b3_from___b12: __b3_from___b5: - // [173] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy - // [173] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy - // [173] phi (byte) getCharToProcess::return_dist#1 = (byte) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy + // [172] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy + // [172] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy + // [172] phi (byte) getCharToProcess::return_dist#1 = (byte) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy jmp __b3 // getCharToProcess::@3 __b3: - // [174] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuyy=_inc_vbuyy + // [173] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuyy=_inc_vbuyy iny - // [175] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuyy_neq_vbuc1_then_la1 + // [174] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuyy_neq_vbuc1_then_la1 cpy #$28 bne __b10 jmp __b6 // getCharToProcess::@6 __b6: - // [176] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [175] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc.z screen_line @@ -8750,7 +8743,7 @@ getCharToProcess: { bcc !+ inc.z screen_line+1 !: - // [177] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [176] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc.z dist_line @@ -8758,27 +8751,27 @@ getCharToProcess: { bcc !+ inc.z dist_line+1 !: - // [178] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 + // [177] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc.z y - // [179] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 + // [178] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp.z y bne __b9 jmp __b7 // getCharToProcess::@7 __b7: - // [180] if((byte) getCharToProcess::return_dist#1==(const nomodify byte) NOT_FOUND) goto getCharToProcess::@return -- vbuxx_eq_vbuc1_then_la1 + // [179] if((byte) getCharToProcess::return_dist#1==(const nomodify byte) NOT_FOUND) goto getCharToProcess::@return -- vbuxx_eq_vbuc1_then_la1 cpx #NOT_FOUND beq __breturn jmp __b8 // getCharToProcess::@8 __b8: - // [181] (word~) getCharToProcess::$11 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2 + // [180] (word~) getCharToProcess::$11 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2 lda.z return_y sta.z __11 lda #0 sta.z __11+1 - // [182] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$11 << (byte) 2 -- vwuz1=vwuz2_rol_2 + // [181] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$11 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda.z __11 asl sta.z __12 @@ -8787,7 +8780,7 @@ getCharToProcess: { sta.z __12+1 asl.z __12 rol.z __12+1 - // [183] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$11 -- vwuz1=vwuz2_plus_vwuz1 + // [182] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$11 -- vwuz1=vwuz2_plus_vwuz1 lda.z __13 clc adc.z __12 @@ -8795,14 +8788,14 @@ getCharToProcess: { lda.z __13+1 adc.z __12+1 sta.z __13+1 - // [184] (word~) getCharToProcess::$8 ← (word~) getCharToProcess::$13 << (byte) 3 -- vwuz1=vwuz1_rol_3 + // [183] (word~) getCharToProcess::$8 ← (word~) getCharToProcess::$13 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl.z __8 rol.z __8+1 asl.z __8 rol.z __8+1 asl.z __8 rol.z __8+1 - // [185] (byte*~) getCharToProcess::$9 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$8 -- pbuz1=pbuz2_plus_vwuz1 + // [184] (byte*~) getCharToProcess::$9 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$8 -- pbuz1=pbuz2_plus_vwuz1 lda.z __9 clc adc.z SCREEN_COPY @@ -8810,7 +8803,7 @@ getCharToProcess: { lda.z __9+1 adc.z SCREEN_COPY+1 sta.z __9+1 - // [186] *((byte*~) getCharToProcess::$9 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + // [185] *((byte*~) getCharToProcess::$9 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 // clear the found char on the screen copy lda #' ' ldy.z return_x @@ -8818,132 +8811,132 @@ getCharToProcess: { jmp __breturn // getCharToProcess::@return __breturn: - // [187] return + // [186] return rts // getCharToProcess::@9 __b9: - // [188] (byte) getCharToProcess::closest_dist#10 ← (byte) getCharToProcess::return_dist#1 -- vbuz1=vbuxx + // [187] (byte) getCharToProcess::closest_dist#10 ← (byte) getCharToProcess::return_dist#1 -- vbuz1=vbuxx stx.z closest_dist - // [166] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] + // [165] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] __b1_from___b9: - // [166] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy - // [166] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy - // [166] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy - // [166] phi (byte) getCharToProcess::closest_dist#8 = (byte) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy - // [166] phi (byte*) getCharToProcess::dist_line#6 = (byte*) getCharToProcess::dist_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy - // [166] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#5] -- register_copy + // [165] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy + // [165] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy + // [165] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy + // [165] phi (byte) getCharToProcess::closest_dist#8 = (byte) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy + // [165] phi (byte*) getCharToProcess::dist_line#6 = (byte*) getCharToProcess::dist_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy + // [165] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#5] -- register_copy jmp __b1 // getCharToProcess::@10 __b10: - // [189] (byte) getCharToProcess::closest_dist#12 ← (byte) getCharToProcess::return_dist#1 -- vbuz1=vbuxx + // [188] (byte) getCharToProcess::closest_dist#12 ← (byte) getCharToProcess::return_dist#1 -- vbuz1=vbuxx stx.z closest_dist - // [167] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] + // [166] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] __b2_from___b10: - // [167] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy - // [167] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy - // [167] phi (byte) getCharToProcess::closest_dist#2 = (byte) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy - // [167] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy + // [166] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy + // [166] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy + // [166] phi (byte) getCharToProcess::closest_dist#2 = (byte) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy + // [166] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy jmp __b2 // getCharToProcess::@12 __b12: - // [190] (byte) getCharToProcess::return_dist#6 ← (byte) getCharToProcess::closest_dist#2 -- vbuxx=vbuz1 + // [189] (byte) getCharToProcess::return_dist#6 ← (byte) getCharToProcess::closest_dist#2 -- vbuxx=vbuz1 ldx.z closest_dist jmp __b3_from___b12 // getCharToProcess::@11 __b11: - // [191] (byte) getCharToProcess::return_dist#5 ← (byte) getCharToProcess::closest_dist#2 -- vbuxx=vbuz1 + // [190] (byte) getCharToProcess::return_dist#5 ← (byte) getCharToProcess::closest_dist#2 -- vbuxx=vbuz1 ldx.z closest_dist jmp __b3_from___b11 } // startProcessing // Start processing a char - by inserting it into the PROCESSING array -// startProcessing(byte zp($1d) center_x, byte zp($14) center_y) +// startProcessing(byte zp($1e) center_x, byte zp($14) center_y) startProcessing: { - .label __0 = $20 + .label __0 = $21 .label __4 = $c .label __6 = $a - .label __8 = $27 - .label __9 = $27 - .label __11 = $29 - .label __12 = $29 - .label __23 = $20 + .label __8 = $28 + .label __9 = $28 + .label __11 = $2a + .label __12 = $2a + .label __23 = $21 .label __24 = $c .label __25 = $a - .label __26 = $27 - .label __27 = $29 - .label center_x = $1d + .label __26 = $28 + .label __27 = $2a + .label center_x = $1e .label center_y = $14 .label i = 9 - .label offset = $20 - .label colPtr = $24 - .label spriteCol = $26 - .label screenPtr = $20 + .label offset = $21 + .label colPtr = $25 + .label spriteCol = $27 + .label screenPtr = $21 .label spriteData = $c .label chargenData = $a - .label spriteX = $27 - .label spriteY = $29 - .label spritePtr = $2b + .label spriteX = $28 + .label spriteY = $2a + .label spritePtr = $2c // Busy-wait while finding an empty slot in the PROCESSING array .label freeIdx = 9 - .label __33 = $22 - .label __34 = $20 - // [193] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] + .label __33 = $23 + .label __34 = $21 + // [192] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] __b1_from_startProcessing: - // [193] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 + // [192] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 ldx #$ff jmp __b1 // startProcessing::@1 __b1: - // [194] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] + // [193] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] __b2_from___b1: - // [194] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 + // [193] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 lda #0 sta.z i jmp __b2 - // [194] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] + // [193] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] __b2_from___b3: - // [194] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy + // [193] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy jmp __b2 // startProcessing::@2 __b2: - // [195] (byte~) startProcessing::$28 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + // [194] (byte~) startProcessing::$28 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda.z i asl - // [196] (byte~) startProcessing::$29 ← (byte~) startProcessing::$28 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + // [195] (byte~) startProcessing::$29 ← (byte~) startProcessing::$28 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc.z i - // [197] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 << (byte) 1 -- vbuaa=vbuaa_rol_1 + // [196] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - // [198] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + // [197] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc.z i - // [199] (byte~) startProcessing::$21 ← (byte~) startProcessing::$31 << (byte) 1 -- vbuaa=vbuaa_rol_1 + // [198] (byte~) startProcessing::$21 ← (byte~) startProcessing::$31 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - // [200] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$21)!=(const byte) STATUS_FREE) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 + // [199] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$21)!=(const byte) STATUS_FREE) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 tay lda #STATUS_FREE cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y bne __b3 - // [201] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] + // [200] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] __b4_from___b2: __b4_from___b9: - // [201] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy + // [200] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy jmp __b4 // startProcessing::@4 __b4: - // [202] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 + // [201] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 lda #$ff cmp.z freeIdx beq __b8 jmp __b5 // startProcessing::@5 __b5: - // [203] (word~) startProcessing::$23 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + // [202] (word~) startProcessing::$23 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda.z center_y sta.z __23 lda #0 sta.z __23+1 - // [204] (word~) startProcessing::$33 ← (word~) startProcessing::$23 << (byte) 2 -- vwuz1=vwuz2_rol_2 + // [203] (word~) startProcessing::$33 ← (word~) startProcessing::$23 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda.z __23 asl sta.z __33 @@ -8952,7 +8945,7 @@ startProcessing: { sta.z __33+1 asl.z __33 rol.z __33+1 - // [205] (word~) startProcessing::$34 ← (word~) startProcessing::$33 + (word~) startProcessing::$23 -- vwuz1=vwuz2_plus_vwuz1 + // [204] (word~) startProcessing::$34 ← (word~) startProcessing::$33 + (word~) startProcessing::$23 -- vwuz1=vwuz2_plus_vwuz1 lda.z __34 clc adc.z __33 @@ -8960,14 +8953,14 @@ startProcessing: { lda.z __34+1 adc.z __33+1 sta.z __34+1 - // [206] (word~) startProcessing::$0 ← (word~) startProcessing::$34 << (byte) 3 -- vwuz1=vwuz1_rol_3 + // [205] (word~) startProcessing::$0 ← (word~) startProcessing::$34 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl.z __0 rol.z __0+1 asl.z __0 rol.z __0+1 asl.z __0 rol.z __0+1 - // [207] (word) startProcessing::offset#0 ← (word~) startProcessing::$0 + (byte) startProcessing::center_x#0 -- vwuz1=vwuz1_plus_vbuz2 + // [206] (word) startProcessing::offset#0 ← (word~) startProcessing::$0 + (byte) startProcessing::center_x#0 -- vwuz1=vwuz1_plus_vbuz2 lda.z center_x clc adc.z offset @@ -8975,7 +8968,7 @@ startProcessing: { bcc !+ inc.z offset+1 !: - // [208] (byte*) startProcessing::colPtr#0 ← (const nomodify byte*) COLS + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz2 + // [207] (byte*) startProcessing::colPtr#0 ← (const nomodify byte*) COLS + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz2 lda.z offset clc adc #COLS sta.z colPtr+1 - // [209] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) -- vbuz1=_deref_pbuz2 + // [208] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) -- vbuz1=_deref_pbuz2 ldy #0 lda (colPtr),y sta.z spriteCol - // [210] (byte*) startProcessing::screenPtr#0 ← (const nomodify byte*) SCREEN + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz1 + // [209] (byte*) startProcessing::screenPtr#0 ← (const nomodify byte*) SCREEN + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz1 clc lda.z screenPtr adc #SCREEN sta.z screenPtr+1 - // [211] (word~) startProcessing::$24 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 + // [210] (word~) startProcessing::$24 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 lda.z freeIdx sta.z __24 lda #0 sta.z __24+1 - // [212] (word~) startProcessing::$4 ← (word~) startProcessing::$24 << (byte) 6 -- vwuz1=vwuz1_rol_6 + // [211] (word~) startProcessing::$4 ← (word~) startProcessing::$24 << (byte) 6 -- vwuz1=vwuz1_rol_6 lda.z __4+1 lsr sta.z $ff @@ -9013,7 +9006,7 @@ startProcessing: { lsr.z $ff ror.z __4+1 ror.z __4 - // [213] (byte*) startProcessing::spriteData#0 ← (const nomodify byte*) SPRITE_DATA + (word~) startProcessing::$4 -- pbuz1=pbuc1_plus_vwuz1 + // [212] (byte*) startProcessing::spriteData#0 ← (const nomodify byte*) SPRITE_DATA + (word~) startProcessing::$4 -- pbuz1=pbuc1_plus_vwuz1 clc lda.z spriteData adc #SPRITE_DATA sta.z spriteData+1 - // [214] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- vbuaa=_deref_pbuz1 + // [213] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- vbuaa=_deref_pbuz1 ldy #0 lda (screenPtr),y - // [215] (word~) startProcessing::$25 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa + // [214] (word~) startProcessing::$25 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa sta.z __25 lda #0 sta.z __25+1 - // [216] (word~) startProcessing::$6 ← (word~) startProcessing::$25 << (byte) 3 -- vwuz1=vwuz1_rol_3 + // [215] (word~) startProcessing::$6 ← (word~) startProcessing::$25 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl.z __6 rol.z __6+1 asl.z __6 rol.z __6+1 asl.z __6 rol.z __6+1 - // [217] (byte*) startProcessing::chargenData#0 ← (const nomodify byte*) CHARGEN + (word~) startProcessing::$6 -- pbuz1=pbuc1_plus_vwuz1 + // [216] (byte*) startProcessing::chargenData#0 ← (const nomodify byte*) CHARGEN + (word~) startProcessing::$6 -- pbuz1=pbuc1_plus_vwuz1 clc lda.z chargenData adc #startProcessing::@6] + // [219] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] __b6_from___b5: - // [220] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1 + // [219] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1 ldx #0 - // [220] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy - // [220] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy + // [219] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy + // [219] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy jmp __b6 - // [220] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] + // [219] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] __b6_from___b6: - // [220] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy - // [220] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy - // [220] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy + // [219] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy + // [219] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy + // [219] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy jmp __b6 // startProcessing::@6 __b6: - // [221] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 + // [220] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (chargenData),y ldy #0 sta (spriteData),y - // [222] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 + // [221] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 lda #3 clc adc.z spriteData @@ -9076,37 +9069,37 @@ startProcessing: { bcc !+ inc.z spriteData+1 !: - // [223] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 + // [222] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 inc.z chargenData bne !+ inc.z chargenData+1 !: - // [224] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx + // [223] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx inx - // [225] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1 + // [224] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne __b6_from___b6 jmp __b7 // startProcessing::@7 __b7: - // [226] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2 + // [225] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT // asm { cli } cli - // [228] (word~) startProcessing::$26 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 + // [227] (word~) startProcessing::$26 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 lda.z center_x sta.z __26 lda #0 sta.z __26+1 - // [229] (word~) startProcessing::$8 ← (word~) startProcessing::$26 << (byte) 3 -- vwuz1=vwuz1_rol_3 + // [228] (word~) startProcessing::$8 ← (word~) startProcessing::$26 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl.z __8 rol.z __8+1 asl.z __8 rol.z __8+1 asl.z __8 rol.z __8+1 - // [230] (word~) startProcessing::$9 ← (const nomodify byte) BORDER_XPOS_LEFT + (word~) startProcessing::$8 -- vwuz1=vbuc1_plus_vwuz1 + // [229] (word~) startProcessing::$9 ← (const nomodify byte) BORDER_XPOS_LEFT + (word~) startProcessing::$8 -- vwuz1=vbuc1_plus_vwuz1 lda #BORDER_XPOS_LEFT clc adc.z __9 @@ -9114,7 +9107,7 @@ startProcessing: { bcc !+ inc.z __9+1 !: - // [231] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$9 << (byte) 4 -- vwuz1=vwuz1_rol_4 + // [230] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$9 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl.z spriteX rol.z spriteX+1 asl.z spriteX @@ -9123,19 +9116,19 @@ startProcessing: { rol.z spriteX+1 asl.z spriteX rol.z spriteX+1 - // [232] (word~) startProcessing::$27 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + // [231] (word~) startProcessing::$27 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda.z center_y sta.z __27 lda #0 sta.z __27+1 - // [233] (word~) startProcessing::$11 ← (word~) startProcessing::$27 << (byte) 3 -- vwuz1=vwuz1_rol_3 + // [232] (word~) startProcessing::$11 ← (word~) startProcessing::$27 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl.z __11 rol.z __11+1 asl.z __11 rol.z __11+1 asl.z __11 rol.z __11+1 - // [234] (word~) startProcessing::$12 ← (const nomodify byte) BORDER_YPOS_TOP + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz1 + // [233] (word~) startProcessing::$12 ← (const nomodify byte) BORDER_YPOS_TOP + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz1 lda #BORDER_YPOS_TOP clc adc.z __12 @@ -9143,7 +9136,7 @@ startProcessing: { bcc !+ inc.z __12+1 !: - // [235] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz1_rol_4 + // [234] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl.z spriteY rol.z spriteY+1 asl.z spriteY @@ -9152,63 +9145,63 @@ startProcessing: { rol.z spriteY+1 asl.z spriteY rol.z spriteY+1 - // [236] (byte) startProcessing::spritePtr#0 ← (byte)(const nomodify byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 + // [235] (byte) startProcessing::spritePtr#0 ← (byte)(const nomodify byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 lax.z freeIdx axs #-[SPRITE_DATA/$40] stx.z spritePtr - // [237] (byte~) startProcessing::$15 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuyy=vbuz1_rol_3 + // [236] (byte~) startProcessing::$15 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuyy=vbuz1_rol_3 lda.z freeIdx asl asl asl tay - // [238] (byte~) startProcessing::$36 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + // [237] (byte~) startProcessing::$36 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda.z freeIdx asl - // [239] (byte~) startProcessing::$37 ← (byte~) startProcessing::$36 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 + // [238] (byte~) startProcessing::$37 ← (byte~) startProcessing::$36 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc.z freeIdx - // [240] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 << (byte) 1 -- vbuaa=vbuaa_rol_1 + // [239] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - // [241] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 + // [240] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc.z freeIdx - // [242] (byte~) startProcessing::$22 ← (byte~) startProcessing::$39 << (byte) 1 -- vbuxx=vbuaa_rol_1 + // [241] (byte~) startProcessing::$22 ← (byte~) startProcessing::$39 << (byte) 1 -- vbuxx=vbuaa_rol_1 asl tax - // [243] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$22) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 + // [242] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$22) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda.z spriteX sta PROCESSING,x lda.z spriteX+1 sta PROCESSING+1,x - // [244] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$22) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuxx=vwuz1 + // [243] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$22) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda.z spriteY sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x lda.z spriteY+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x - // [245] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$22) ← (word)(byte~) startProcessing::$15 -- pwuc1_derefidx_vbuxx=_word_vbuyy + // [244] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$22) ← (word)(byte~) startProcessing::$15 -- pwuc1_derefidx_vbuxx=_word_vbuyy tya sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x - // [246] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$22) ← (word) $3c -- pwuc1_derefidx_vbuxx=vwuc2 + // [245] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$22) ← (word) $3c -- pwuc1_derefidx_vbuxx=vwuc2 lda #<$3c sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x lda #>$3c sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x - // [247] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$22) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + // [246] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$22) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda.z freeIdx sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x - // [248] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$22) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1 + // [247] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$22) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda.z spritePtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x - // [249] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$22) ← (byte) startProcessing::spriteCol#0 -- pbuc1_derefidx_vbuxx=vbuz1 + // [248] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$22) ← (byte) startProcessing::spriteCol#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda.z spriteCol sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_COL,x - // [250] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$22) ← (const byte) STATUS_NEW -- pbuc1_derefidx_vbuxx=vbuc2 + // [249] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$22) ← (const byte) STATUS_NEW -- pbuc1_derefidx_vbuxx=vbuc2 lda #STATUS_NEW sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x - // [251] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$22) ← (byte*) startProcessing::screenPtr#0 -- qbuc1_derefidx_vbuxx=pbuz1 + // [250] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$22) ← (byte*) startProcessing::screenPtr#0 -- qbuc1_derefidx_vbuxx=pbuz1 lda.z screenPtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x lda.z screenPtr+1 @@ -9216,28 +9209,28 @@ startProcessing: { jmp __breturn // startProcessing::@return __breturn: - // [252] return + // [251] return rts // startProcessing::@8 __b8: - // [253] (byte) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 + // [252] (byte) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 ldx.z freeIdx - // [193] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] + // [192] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] __b1_from___b8: - // [193] phi (byte) startProcessing::freeIdx#6 = (byte) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy + // [192] phi (byte) startProcessing::freeIdx#6 = (byte) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy jmp __b1 // startProcessing::@3 __b3: - // [254] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 + // [253] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [255] if((byte) startProcessing::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 + // [254] if((byte) startProcessing::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp.z i bne __b2_from___b3 jmp __b9 // startProcessing::@9 __b9: - // [256] (byte) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx + // [255] (byte) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx stx.z freeIdx jmp __b4_from___b9 } @@ -9245,25 +9238,25 @@ startProcessing: { // Find the atan2(x, y) - which is the angle of the line from (0,0) to (x,y) // Finding the angle requires a binary search using CORDIC_ITERATIONS_16 // Returns the angle in hex-degrees (0=0, 0x8000=PI, 0x10000=2*PI) -// atan2_16(signed word zp($24) x, signed word zp($27) y) +// atan2_16(signed word zp($25) x, signed word zp($28) y) atan2_16: { .label __2 = $c - .label __7 = $29 + .label __7 = $2a .label yi = $c - .label xi = $29 - .label angle = $1e - .label xd = $22 - .label yd = $20 - .label return = $1e - .label x = $24 - .label y = $27 - // [257] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 -- vwsz1_ge_0_then_la1 + .label xi = $2a + .label angle = $1f + .label xd = $23 + .label yd = $21 + .label return = $1f + .label x = $25 + .label y = $28 + // [256] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 -- vwsz1_ge_0_then_la1 lda.z y+1 bpl __b1 jmp __b2 // atan2_16::@2 __b2: - // [258] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 -- vwsz1=_neg_vwsz2 + // [257] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 -- vwsz1=_neg_vwsz2 sec lda #0 sbc.z y @@ -9271,20 +9264,20 @@ atan2_16: { lda #0 sbc.z y+1 sta.z __2+1 - // [259] phi from atan2_16::@1 atan2_16::@2 to atan2_16::@3 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3] + // [258] phi from atan2_16::@1 atan2_16::@2 to atan2_16::@3 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3] __b3_from___b1: __b3_from___b2: - // [259] phi (signed word) atan2_16::yi#0 = (signed word) atan2_16::yi#16 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3#0] -- register_copy + // [258] phi (signed word) atan2_16::yi#0 = (signed word) atan2_16::yi#16 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3#0] -- register_copy jmp __b3 // atan2_16::@3 __b3: - // [260] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 -- vwsz1_ge_0_then_la1 + // [259] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 -- vwsz1_ge_0_then_la1 lda.z x+1 bpl __b4 jmp __b5 // atan2_16::@5 __b5: - // [261] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 -- vwsz1=_neg_vwsz2 + // [260] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 -- vwsz1=_neg_vwsz2 sec lda #0 sbc.z x @@ -9292,49 +9285,49 @@ atan2_16: { lda #0 sbc.z x+1 sta.z __7+1 - // [262] phi from atan2_16::@4 atan2_16::@5 to atan2_16::@6 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6] + // [261] phi from atan2_16::@4 atan2_16::@5 to atan2_16::@6 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6] __b6_from___b4: __b6_from___b5: - // [262] phi (signed word) atan2_16::xi#0 = (signed word) atan2_16::xi#13 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6#0] -- register_copy + // [261] phi (signed word) atan2_16::xi#0 = (signed word) atan2_16::xi#13 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6#0] -- register_copy jmp __b6 // atan2_16::@6 __b6: - // [263] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10] + // [262] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10] __b10_from___b6: - // [263] phi (word) atan2_16::angle#12 = (word) 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vwuc1 + // [262] phi (word) atan2_16::angle#12 = (word) 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vwuc1 lda #<0 sta.z angle lda #>0 sta.z angle+1 - // [263] phi (byte) atan2_16::i#2 = (byte) 0 [phi:atan2_16::@6->atan2_16::@10#1] -- vbuxx=vbuc1 + // [262] phi (byte) atan2_16::i#2 = (byte) 0 [phi:atan2_16::@6->atan2_16::@10#1] -- vbuxx=vbuc1 ldx #0 - // [263] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#0 [phi:atan2_16::@6->atan2_16::@10#2] -- register_copy - // [263] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#0 [phi:atan2_16::@6->atan2_16::@10#3] -- register_copy + // [262] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#0 [phi:atan2_16::@6->atan2_16::@10#2] -- register_copy + // [262] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#0 [phi:atan2_16::@6->atan2_16::@10#3] -- register_copy jmp __b10 // atan2_16::@10 __b10: - // [264] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 -- vwsz1_neq_0_then_la1 + // [263] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 -- vwsz1_neq_0_then_la1 lda.z yi+1 bne __b11 lda.z yi bne __b11 - // [265] phi from atan2_16::@10 atan2_16::@19 to atan2_16::@12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12] + // [264] phi from atan2_16::@10 atan2_16::@19 to atan2_16::@12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12] __b12_from___b10: __b12_from___b19: - // [265] phi (word) atan2_16::angle#6 = (word) atan2_16::angle#12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12#0] -- register_copy + // [264] phi (word) atan2_16::angle#6 = (word) atan2_16::angle#12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12#0] -- register_copy jmp __b12 // atan2_16::@12 __b12: - // [266] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + // [265] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr.z angle+1 ror.z angle - // [267] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 -- vwsz1_ge_0_then_la1 + // [266] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 -- vwsz1_ge_0_then_la1 lda.z x+1 bpl __b7_from___b12 jmp __b21 // atan2_16::@21 __b21: - // [268] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 -- vwuz1=vwuc1_minus_vwuz1 + // [267] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 -- vwuz1=vwuc1_minus_vwuz1 sec lda #<$8000 sbc.z angle @@ -9342,20 +9335,20 @@ atan2_16: { lda #>$8000 sbc.z angle+1 sta.z angle+1 - // [269] phi from atan2_16::@12 atan2_16::@21 to atan2_16::@7 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7] + // [268] phi from atan2_16::@12 atan2_16::@21 to atan2_16::@7 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7] __b7_from___b12: __b7_from___b21: - // [269] phi (word) atan2_16::angle#11 = (word) atan2_16::angle#1 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7#0] -- register_copy + // [268] phi (word) atan2_16::angle#11 = (word) atan2_16::angle#1 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7#0] -- register_copy jmp __b7 // atan2_16::@7 __b7: - // [270] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 -- vwsz1_ge_0_then_la1 + // [269] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 -- vwsz1_ge_0_then_la1 lda.z y+1 bpl __b8_from___b7 jmp __b9 // atan2_16::@9 __b9: - // [271] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 -- vwuz1=_neg_vwuz1 + // [270] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 -- vwuz1=_neg_vwuz1 sec lda #0 sbc.z angle @@ -9363,79 +9356,79 @@ atan2_16: { lda #0 sbc.z angle+1 sta.z angle+1 - // [272] phi from atan2_16::@7 atan2_16::@9 to atan2_16::@8 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8] + // [271] phi from atan2_16::@7 atan2_16::@9 to atan2_16::@8 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8] __b8_from___b7: __b8_from___b9: - // [272] phi (word) atan2_16::return#0 = (word) atan2_16::angle#11 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8#0] -- register_copy + // [271] phi (word) atan2_16::return#0 = (word) atan2_16::angle#11 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8#0] -- register_copy jmp __b8 // atan2_16::@8 __b8: jmp __breturn // atan2_16::@return __breturn: - // [273] return + // [272] return rts // atan2_16::@11 __b11: - // [274] (byte) atan2_16::shift#5 ← (byte) atan2_16::i#2 -- vbuyy=vbuxx + // [273] (byte) atan2_16::shift#5 ← (byte) atan2_16::i#2 -- vbuyy=vbuxx txa tay - // [275] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 -- vwsz1=vwsz2 + // [274] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 -- vwsz1=vwsz2 lda.z xi sta.z xd lda.z xi+1 sta.z xd+1 - // [276] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 -- vwsz1=vwsz2 + // [275] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 -- vwsz1=vwsz2 lda.z yi sta.z yd lda.z yi+1 sta.z yd+1 - // [277] phi from atan2_16::@11 atan2_16::@14 to atan2_16::@13 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13] + // [276] phi from atan2_16::@11 atan2_16::@14 to atan2_16::@13 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13] __b13_from___b11: __b13_from___b14: - // [277] phi (signed word) atan2_16::yd#3 = (signed word) atan2_16::yd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#0] -- register_copy - // [277] phi (signed word) atan2_16::xd#3 = (signed word) atan2_16::xd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#1] -- register_copy - // [277] phi (byte) atan2_16::shift#2 = (byte) atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy + // [276] phi (signed word) atan2_16::yd#3 = (signed word) atan2_16::yd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#0] -- register_copy + // [276] phi (signed word) atan2_16::xd#3 = (signed word) atan2_16::xd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#1] -- register_copy + // [276] phi (byte) atan2_16::shift#2 = (byte) atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy jmp __b13 // atan2_16::@13 __b13: - // [278] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1 + // [277] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1 cpy #2 bcs __b14 jmp __b15 // atan2_16::@15 __b15: - // [279] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 -- vbuc1_eq_vbuyy_then_la1 + // [278] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 -- vbuc1_eq_vbuyy_then_la1 cpy #0 beq __b17_from___b15 jmp __b16 // atan2_16::@16 __b16: - // [280] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 + // [279] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 lda.z xd+1 cmp #$80 ror.z xd+1 ror.z xd - // [281] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 + // [280] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 lda.z yd+1 cmp #$80 ror.z yd+1 ror.z yd - // [282] phi from atan2_16::@15 atan2_16::@16 to atan2_16::@17 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17] + // [281] phi from atan2_16::@15 atan2_16::@16 to atan2_16::@17 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17] __b17_from___b15: __b17_from___b16: - // [282] phi (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#0] -- register_copy - // [282] phi (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#1] -- register_copy + // [281] phi (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#0] -- register_copy + // [281] phi (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#1] -- register_copy jmp __b17 // atan2_16::@17 __b17: - // [283] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 -- vwsz1_ge_0_then_la1 + // [282] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 -- vwsz1_ge_0_then_la1 lda.z yi+1 bpl __b18 jmp __b20 // atan2_16::@20 __b20: - // [284] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_minus_vwsz2 + // [283] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_minus_vwsz2 lda.z xi sec sbc.z yd @@ -9443,7 +9436,7 @@ atan2_16: { lda.z xi+1 sbc.z yd+1 sta.z xi+1 - // [285] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_plus_vwsz2 + // [284] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_plus_vwsz2 lda.z yi clc adc.z xd @@ -9451,10 +9444,10 @@ atan2_16: { lda.z yi+1 adc.z xd+1 sta.z yi+1 - // [286] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + // [285] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - // [287] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa + // [286] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa tay sec lda.z angle @@ -9463,30 +9456,30 @@ atan2_16: { lda.z angle+1 sbc CORDIC_ATAN2_ANGLES_16+1,y sta.z angle+1 - // [288] phi from atan2_16::@18 atan2_16::@20 to atan2_16::@19 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19] + // [287] phi from atan2_16::@18 atan2_16::@20 to atan2_16::@19 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19] __b19_from___b18: __b19_from___b20: - // [288] phi (signed word) atan2_16::xi#8 = (signed word) atan2_16::xi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#0] -- register_copy - // [288] phi (word) atan2_16::angle#13 = (word) atan2_16::angle#2 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#1] -- register_copy - // [288] phi (signed word) atan2_16::yi#8 = (signed word) atan2_16::yi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#2] -- register_copy + // [287] phi (signed word) atan2_16::xi#8 = (signed word) atan2_16::xi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#0] -- register_copy + // [287] phi (word) atan2_16::angle#13 = (word) atan2_16::angle#2 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#1] -- register_copy + // [287] phi (signed word) atan2_16::yi#8 = (signed word) atan2_16::yi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#2] -- register_copy jmp __b19 // atan2_16::@19 __b19: - // [289] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2 -- vbuxx=_inc_vbuxx + // [288] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2 -- vbuxx=_inc_vbuxx inx - // [290] if((byte) atan2_16::i#1==(const nomodify byte) CORDIC_ITERATIONS_16-(byte) 1+(byte) 1) goto atan2_16::@12 -- vbuxx_eq_vbuc1_then_la1 + // [289] if((byte) atan2_16::i#1==(const nomodify byte) CORDIC_ITERATIONS_16-(byte) 1+(byte) 1) goto atan2_16::@12 -- vbuxx_eq_vbuc1_then_la1 cpx #CORDIC_ITERATIONS_16-1+1 beq __b12_from___b19 - // [263] phi from atan2_16::@19 to atan2_16::@10 [phi:atan2_16::@19->atan2_16::@10] + // [262] phi from atan2_16::@19 to atan2_16::@10 [phi:atan2_16::@19->atan2_16::@10] __b10_from___b19: - // [263] phi (word) atan2_16::angle#12 = (word) atan2_16::angle#13 [phi:atan2_16::@19->atan2_16::@10#0] -- register_copy - // [263] phi (byte) atan2_16::i#2 = (byte) atan2_16::i#1 [phi:atan2_16::@19->atan2_16::@10#1] -- register_copy - // [263] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#8 [phi:atan2_16::@19->atan2_16::@10#2] -- register_copy - // [263] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#8 [phi:atan2_16::@19->atan2_16::@10#3] -- register_copy + // [262] phi (word) atan2_16::angle#12 = (word) atan2_16::angle#13 [phi:atan2_16::@19->atan2_16::@10#0] -- register_copy + // [262] phi (byte) atan2_16::i#2 = (byte) atan2_16::i#1 [phi:atan2_16::@19->atan2_16::@10#1] -- register_copy + // [262] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#8 [phi:atan2_16::@19->atan2_16::@10#2] -- register_copy + // [262] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#8 [phi:atan2_16::@19->atan2_16::@10#3] -- register_copy jmp __b10 // atan2_16::@18 __b18: - // [291] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_plus_vwsz2 + // [290] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_plus_vwsz2 lda.z xi clc adc.z yd @@ -9494,7 +9487,7 @@ atan2_16: { lda.z xi+1 adc.z yd+1 sta.z xi+1 - // [292] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_minus_vwsz2 + // [291] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_minus_vwsz2 lda.z yi sec sbc.z xd @@ -9502,10 +9495,10 @@ atan2_16: { lda.z yi+1 sbc.z xd+1 sta.z yi+1 - // [293] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + // [292] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - // [294] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) -- vwuz1=vwuz1_plus_pwuc1_derefidx_vbuaa + // [293] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) -- vwuz1=vwuz1_plus_pwuc1_derefidx_vbuaa tay clc lda.z angle @@ -9517,7 +9510,7 @@ atan2_16: { jmp __b19_from___b18 // atan2_16::@14 __b14: - // [295] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 + // [294] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 lda.z xd+1 cmp #$80 ror.z xd+1 @@ -9526,7 +9519,7 @@ atan2_16: { cmp #$80 ror.z xd+1 ror.z xd - // [296] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 + // [295] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 lda.z yd+1 cmp #$80 ror.z yd+1 @@ -9535,13 +9528,13 @@ atan2_16: { cmp #$80 ror.z yd+1 ror.z yd - // [297] (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#2 - (byte) 2 -- vbuyy=vbuyy_minus_2 + // [296] (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#2 - (byte) 2 -- vbuyy=vbuyy_minus_2 dey dey jmp __b13_from___b14 // atan2_16::@4 __b4: - // [298] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 -- vwsz1=vwsz2 + // [297] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 -- vwsz1=vwsz2 lda.z x sta.z xi lda.z x+1 @@ -9549,7 +9542,7 @@ atan2_16: { jmp __b6_from___b4 // atan2_16::@1 __b1: - // [299] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 -- vwsz1=vwsz2 + // [298] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 -- vwsz1=vwsz2 lda.z y sta.z yi lda.z y+1 @@ -9663,6 +9656,7 @@ Removing instruction jmp __b19 Succesful ASM optimization Pass5NextJumpElimination Removing instruction ldy #0 Removing instruction lda #0 +Removing instruction lda.z __13 Removing instruction lda.z ypos Removing instruction ldy #0 Removing instruction lda.z ang_w @@ -9823,23 +9817,23 @@ Removing instruction jmp __b6 Succesful ASM optimization Pass5NextJumpElimination Removing instruction ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS Succesful ASM optimization Pass5UnnecesaryLoadElimination -Fixing long branch [498] bne __b1 to beq -Fixing long branch [1075] bne __b2 to beq -Fixing long branch [1203] beq __b12 to bne -Fixing long branch [302] beq __b2 to bne -Fixing long branch [362] bne __b4 to beq -Fixing long branch [396] bcc __b6 to bcs -Fixing long branch [403] bcc __b6 to bcs -Fixing long branch [410] bcc __b6 to bcs -Fixing long branch [417] bcc __b6 to bcs -Fixing long branch [425] bcc __b6 to bcs -Fixing long branch [432] bcc __b6 to bcs -Fixing long branch [440] bcc __b6 to bcs -Fixing long branch [741] beq __b11 to bne -Fixing long branch [873] bne __b3 to beq -Fixing long branch [879] beq __b8 to bne -Fixing long branch [1121] bpl __b1 to bmi -Fixing long branch [1133] bpl __b4 to bmi +Fixing long branch [499] bne __b1 to beq +Fixing long branch [1076] bne __b2 to beq +Fixing long branch [1204] beq __b12 to bne +Fixing long branch [304] beq __b2 to bne +Fixing long branch [364] bne __b4 to beq +Fixing long branch [397] bcc __b6 to bcs +Fixing long branch [404] bcc __b6 to bcs +Fixing long branch [411] bcc __b6 to bcs +Fixing long branch [418] bcc __b6 to bcs +Fixing long branch [426] bcc __b6 to bcs +Fixing long branch [433] bcc __b6 to bcs +Fixing long branch [441] bcc __b6 to bcs +Fixing long branch [742] beq __b11 to bne +Fixing long branch [874] bne __b3 to beq +Fixing long branch [880] beq __b8 to bne +Fixing long branch [1122] bpl __b1 to bmi +Fixing long branch [1134] bpl __b4 to bmi FINAL SYMBOL TABLE (const struct ProcessingSprite) $0 = { x: (word) 0, y: (word) 0, vx: (word) 0, vy: (word) 0, id: (byte) 0, ptr: (byte) 0, col: (byte) 0, status: (const byte) STATUS_FREE, screenPtr: (byte*) 0 } @@ -10023,7 +10017,7 @@ FINAL SYMBOL TABLE (signed word~) atan2_16::$2 zp[2]:12 200002.0 (byte~) atan2_16::$22 reg byte a 2.00000002E8 (byte~) atan2_16::$23 reg byte a 2.00000002E8 -(signed word~) atan2_16::$7 zp[2]:41 200002.0 +(signed word~) atan2_16::$7 zp[2]:42 200002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -10047,48 +10041,48 @@ FINAL SYMBOL TABLE (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:30 150001.5 -(word) atan2_16::angle#11 angle zp[2]:30 200002.0 -(word) atan2_16::angle#12 angle zp[2]:30 1.904761923809524E7 -(word) atan2_16::angle#13 angle zp[2]:30 1.3333333466666667E8 -(word) atan2_16::angle#2 angle zp[2]:30 2.00000002E8 -(word) atan2_16::angle#3 angle zp[2]:30 2.00000002E8 -(word) atan2_16::angle#4 angle zp[2]:30 200002.0 -(word) atan2_16::angle#5 angle zp[2]:30 200002.0 -(word) atan2_16::angle#6 angle zp[2]:30 2.00100003E8 +(word) atan2_16::angle#1 angle zp[2]:31 150001.5 +(word) atan2_16::angle#11 angle zp[2]:31 200002.0 +(word) atan2_16::angle#12 angle zp[2]:31 1.904761923809524E7 +(word) atan2_16::angle#13 angle zp[2]:31 1.3333333466666667E8 +(word) atan2_16::angle#2 angle zp[2]:31 2.00000002E8 +(word) atan2_16::angle#3 angle zp[2]:31 2.00000002E8 +(word) atan2_16::angle#4 angle zp[2]:31 200002.0 +(word) atan2_16::angle#5 angle zp[2]:31 200002.0 +(word) atan2_16::angle#6 angle zp[2]:31 2.00100003E8 (byte) atan2_16::i (byte) atan2_16::i#1 reg byte x 1.500000015E8 (byte) atan2_16::i#2 reg byte x 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:30 70001.0 -(word) atan2_16::return#2 return zp[2]:30 20002.0 +(word) atan2_16::return#0 return zp[2]:31 70001.0 +(word) atan2_16::return#2 return zp[2]:31 20002.0 (byte) atan2_16::shift (byte) atan2_16::shift#1 reg byte y 2.000000002E9 (byte) atan2_16::shift#2 reg byte y 8.0000000125E8 (byte) atan2_16::shift#5 reg byte y 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:36 10789.605263157895 +(signed word) atan2_16::x#0 x zp[2]:37 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:34 6.666666673333334E8 -(signed word) atan2_16::xd#10 xd zp[2]:34 1.00000001E8 -(signed word) atan2_16::xd#2 xd zp[2]:34 1.00000001E8 -(signed word) atan2_16::xd#3 xd zp[2]:34 7.666666683333335E8 -(signed word) atan2_16::xd#5 xd zp[2]:34 1.00000001E8 +(signed word) atan2_16::xd#1 xd zp[2]:35 6.666666673333334E8 +(signed word) atan2_16::xd#10 xd zp[2]:35 1.00000001E8 +(signed word) atan2_16::xd#2 xd zp[2]:35 1.00000001E8 +(signed word) atan2_16::xd#3 xd zp[2]:35 7.666666683333335E8 +(signed word) atan2_16::xd#5 xd zp[2]:35 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:41 300003.0 -(signed word) atan2_16::xi#1 xi zp[2]:41 5.00000005E7 -(signed word) atan2_16::xi#13 xi zp[2]:41 200002.0 -(signed word) atan2_16::xi#2 xi zp[2]:41 5.00000005E7 -(signed word) atan2_16::xi#3 xi zp[2]:41 2.6673333666666668E7 -(signed word) atan2_16::xi#8 xi zp[2]:41 1.00000001E8 +(signed word) atan2_16::xi#0 xi zp[2]:42 300003.0 +(signed word) atan2_16::xi#1 xi zp[2]:42 5.00000005E7 +(signed word) atan2_16::xi#13 xi zp[2]:42 200002.0 +(signed word) atan2_16::xi#2 xi zp[2]:42 5.00000005E7 +(signed word) atan2_16::xi#3 xi zp[2]:42 2.6673333666666668E7 +(signed word) atan2_16::xi#8 xi zp[2]:42 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:39 10250.125 +(signed word) atan2_16::y#0 y zp[2]:40 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:32 1.000000001E9 -(signed word) atan2_16::yd#10 yd zp[2]:32 2.00000002E8 -(signed word) atan2_16::yd#2 yd zp[2]:32 2.00000002E8 -(signed word) atan2_16::yd#3 yd zp[2]:32 4.6000000099999994E8 -(signed word) atan2_16::yd#5 yd zp[2]:32 2.00000002E8 +(signed word) atan2_16::yd#1 yd zp[2]:33 1.000000001E9 +(signed word) atan2_16::yd#10 yd zp[2]:33 2.00000002E8 +(signed word) atan2_16::yd#2 yd zp[2]:33 2.00000002E8 +(signed word) atan2_16::yd#3 yd zp[2]:33 4.6000000099999994E8 +(signed word) atan2_16::yd#5 yd zp[2]:33 2.00000002E8 (signed word) atan2_16::yi (signed word) atan2_16::yi#0 yi zp[2]:12 60000.600000000006 (signed word) atan2_16::yi#1 yi zp[2]:12 6.6666667333333336E7 @@ -10097,11 +10091,11 @@ FINAL SYMBOL TABLE (signed word) atan2_16::yi#3 yi zp[2]:12 3.53000004117647E7 (signed word) atan2_16::yi#8 yi zp[2]:12 1.00000001E8 (struct ProcessingChar()) getCharToProcess() -(word~) getCharToProcess::$11 zp[2]:41 1501.5 -(word~) getCharToProcess::$12 zp[2]:30 2002.0 -(word~) getCharToProcess::$13 zp[2]:41 2002.0 -(word~) getCharToProcess::$8 zp[2]:41 2002.0 -(byte*~) getCharToProcess::$9 zp[2]:41 2002.0 +(word~) getCharToProcess::$11 zp[2]:42 1501.5 +(word~) getCharToProcess::$12 zp[2]:31 2002.0 +(word~) getCharToProcess::$13 zp[2]:42 2002.0 +(word~) getCharToProcess::$8 zp[2]:42 2002.0 +(byte*~) getCharToProcess::$9 zp[2]:42 2002.0 (label) getCharToProcess::@1 (label) getCharToProcess::@10 (label) getCharToProcess::@11 @@ -10116,13 +10110,13 @@ FINAL SYMBOL TABLE (label) getCharToProcess::@9 (label) getCharToProcess::@return (byte) getCharToProcess::closest_dist -(byte) getCharToProcess::closest_dist#10 closest_dist zp[1]:38 200002.0 -(byte) getCharToProcess::closest_dist#12 closest_dist zp[1]:38 2000002.0 -(byte) getCharToProcess::closest_dist#2 closest_dist zp[1]:38 1025001.25 -(byte) getCharToProcess::closest_dist#8 closest_dist zp[1]:38 200002.0 +(byte) getCharToProcess::closest_dist#10 closest_dist zp[1]:39 200002.0 +(byte) getCharToProcess::closest_dist#12 closest_dist zp[1]:39 2000002.0 +(byte) getCharToProcess::closest_dist#2 closest_dist zp[1]:39 1025001.25 +(byte) getCharToProcess::closest_dist#8 closest_dist zp[1]:39 200002.0 (byte) getCharToProcess::closest_x -(byte) getCharToProcess::closest_x#7 closest_x zp[1]:43 516667.3333333334 -(byte) getCharToProcess::closest_x#9 closest_x zp[1]:43 200002.0 +(byte) getCharToProcess::closest_x#7 closest_x zp[1]:44 516667.3333333334 +(byte) getCharToProcess::closest_x#9 closest_x zp[1]:44 200002.0 (byte) getCharToProcess::closest_y (byte) getCharToProcess::closest_y#7 closest_y zp[1]:9 516667.3333333334 (byte) getCharToProcess::closest_y#9 closest_y zp[1]:9 200002.0 @@ -10140,8 +10134,8 @@ FINAL SYMBOL TABLE (byte) getCharToProcess::return_dist#6 reg byte x 2000002.0 (byte) getCharToProcess::return_x (byte) getCharToProcess::return_x#0 reg byte y 67.33333333333333 -(byte) getCharToProcess::return_x#1 return_x zp[1]:43 227839.2777777778 -(byte) getCharToProcess::return_x#7 return_x zp[1]:43 1000001.0 +(byte) getCharToProcess::return_x#1 return_x zp[1]:44 227839.2777777778 +(byte) getCharToProcess::return_x#7 return_x zp[1]:44 1000001.0 (byte) getCharToProcess::return_y (byte) getCharToProcess::return_y#0 reg byte a 67.33333333333333 (byte) getCharToProcess::return_y#1 return_y zp[1]:9 215795.05263157893 @@ -10177,7 +10171,7 @@ FINAL SYMBOL TABLE (byte~) init_angle_screen::$3 reg byte a 20002.0 (byte~) init_angle_screen::$4 reg byte a 20002.0 (byte~) init_angle_screen::$5 reg byte a 20002.0 -(word~) init_angle_screen::$7 zp[2]:30 20002.0 +(word~) init_angle_screen::$7 zp[2]:31 20002.0 (byte~) init_angle_screen::$9 reg byte a 20002.0 (label) init_angle_screen::@1 (label) init_angle_screen::@2 @@ -10186,9 +10180,9 @@ FINAL SYMBOL TABLE (label) init_angle_screen::@5 (label) init_angle_screen::@return (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 ang_w zp[1]:29 8334.166666666666 +(byte) init_angle_screen::ang_w#0 ang_w zp[1]:30 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 angle_w zp[2]:30 20002.0 +(word) init_angle_screen::angle_w#0 angle_w zp[2]:31 20002.0 (byte*) init_angle_screen::screen (byte*) init_angle_screen::screen#0 screen zp[2]:18 106.5 (byte*) init_angle_screen::screen_bottomline @@ -10200,18 +10194,18 @@ FINAL SYMBOL TABLE (byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:10 500.5 (byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:10 921.0416666666666 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 x zp[1]:38 10001.0 -(byte) init_angle_screen::x#2 x zp[1]:38 2857.4285714285716 +(byte) init_angle_screen::x#1 x zp[1]:39 10001.0 +(byte) init_angle_screen::x#2 x zp[1]:39 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 xb zp[1]:43 20002.0 -(byte) init_angle_screen::xb#2 xb zp[1]:43 1818.3636363636363 +(byte) init_angle_screen::xb#1 xb zp[1]:44 20002.0 +(byte) init_angle_screen::xb#2 xb zp[1]:44 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 xw zp[2]:36 3333.6666666666665 +(word) init_angle_screen::xw#0 xw zp[2]:37 3333.6666666666665 (byte) init_angle_screen::y (byte) init_angle_screen::y#1 y zp[1]:20 1501.5 (byte) init_angle_screen::y#5 y zp[1]:20 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 yw zp[2]:39 5000.5 +(word) init_angle_screen::yw#0 yw zp[2]:40 5000.5 interrupt(HARDWARE_ALL)(void()) irqBottom() (label) irqBottom::@1 (label) irqBottom::@2 @@ -10263,16 +10257,15 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) malloc::size (void()) processChars() (byte~) processChars::$10 reg byte a 202.0 -(word~) processChars::$12 zp[2]:26 101.0 -(byte~) processChars::$13 reg byte x 75.75 -(word~) processChars::$21 zp[2]:24 101.0 +(word~) processChars::$12 zp[2]:27 101.0 +(byte~) processChars::$13 zp[1]:21 17.565217391304348 +(word~) processChars::$21 zp[2]:25 101.0 (byte~) processChars::$25 reg byte a 202.0 (byte~) processChars::$28 reg byte a 202.0 (byte~) processChars::$29 reg byte a 202.0 (byte~) processChars::$30 reg byte a 202.0 (byte~) processChars::$73 reg byte a 202.0 (byte~) processChars::$79 reg byte a 202.0 -(byte~) processChars::$86 reg byte a 202.0 (byte~) processChars::$87 reg byte a 202.0 (byte~) processChars::$88 reg byte a 202.0 (byte~) processChars::$89 reg byte a 202.0 @@ -10293,24 +10286,24 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) processChars::@9 (label) processChars::@return (byte) processChars::bitmask -(byte) processChars::bitmask#0 bitmask zp[1]:23 21.041666666666664 +(byte) processChars::bitmask#0 bitmask zp[1]:24 21.956521739130434 (byte) processChars::i (byte) processChars::i#1 i zp[1]:7 151.5 -(byte) processChars::i#10 i zp[1]:7 13.17391304347826 +(byte) processChars::i#10 i zp[1]:7 11.222222222222221 (byte) processChars::numActive (byte) processChars::numActive#1 numActive zp[1]:8 202.0 -(byte) processChars::numActive#10 numActive zp[1]:8 6.886363636363637 +(byte) processChars::numActive#10 numActive zp[1]:8 7.046511627906977 (byte) processChars::numActive#3 numActive zp[1]:8 101.0 (struct ProcessingSprite*) processChars::processing -(struct ProcessingSprite*) processChars::processing#0 processing zp[2]:21 2.9705882352941178 +(struct ProcessingSprite*) processChars::processing#0 processing zp[2]:22 3.0606060606060606 (byte) processChars::xchar (byte) processChars::xchar#0 reg byte a 202.0 (word) processChars::xpos -(word) processChars::xpos#0 xpos zp[2]:24 20.2 +(word) processChars::xpos#0 xpos zp[2]:25 21.642857142857142 (byte) processChars::ychar (byte) processChars::ychar#0 reg byte a 202.0 (byte) processChars::ypos -(byte) processChars::ypos#0 ypos zp[1]:28 25.25 +(byte) processChars::ypos#0 ypos zp[1]:29 25.25 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (label) setupRasterIrq::@1 (label) setupRasterIrq::@2 @@ -10319,31 +10312,31 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (const void()*) setupRasterIrq::irqRoutine#0 irqRoutine = &interrupt(HARDWARE_ALL)(void()) irqTop() (word) setupRasterIrq::raster (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (byte) startProcessing::center_dist) -(word~) startProcessing::$0 zp[2]:32 2002.0 -(word~) startProcessing::$11 zp[2]:41 2002.0 -(word~) startProcessing::$12 zp[2]:41 2002.0 +(word~) startProcessing::$0 zp[2]:33 2002.0 +(word~) startProcessing::$11 zp[2]:42 2002.0 +(word~) startProcessing::$12 zp[2]:42 2002.0 (byte~) startProcessing::$15 reg byte y 125.125 (byte~) startProcessing::$21 reg byte a 2000002.0 (byte~) startProcessing::$22 reg byte x 1112.222222222222 -(word~) startProcessing::$23 zp[2]:32 1501.5 +(word~) startProcessing::$23 zp[2]:33 1501.5 (word~) startProcessing::$24 zp[2]:12 2002.0 (word~) startProcessing::$25 zp[2]:10 2002.0 -(word~) startProcessing::$26 zp[2]:39 2002.0 -(word~) startProcessing::$27 zp[2]:41 2002.0 +(word~) startProcessing::$26 zp[2]:40 2002.0 +(word~) startProcessing::$27 zp[2]:42 2002.0 (byte~) startProcessing::$28 reg byte a 2000002.0 (byte~) startProcessing::$29 reg byte a 2000002.0 (byte~) startProcessing::$30 reg byte a 2000002.0 (byte~) startProcessing::$31 reg byte a 2000002.0 -(word~) startProcessing::$33 zp[2]:34 2002.0 -(word~) startProcessing::$34 zp[2]:32 2002.0 +(word~) startProcessing::$33 zp[2]:35 2002.0 +(word~) startProcessing::$34 zp[2]:33 2002.0 (byte~) startProcessing::$36 reg byte a 2002.0 (byte~) startProcessing::$37 reg byte a 2002.0 (byte~) startProcessing::$38 reg byte a 2002.0 (byte~) startProcessing::$39 reg byte a 2002.0 (word~) startProcessing::$4 zp[2]:12 2002.0 (word~) startProcessing::$6 zp[2]:10 2002.0 -(word~) startProcessing::$8 zp[2]:39 2002.0 -(word~) startProcessing::$9 zp[2]:39 2002.0 +(word~) startProcessing::$8 zp[2]:40 2002.0 +(word~) startProcessing::$9 zp[2]:40 2002.0 (label) startProcessing::@1 (label) startProcessing::@2 (label) startProcessing::@3 @@ -10357,7 +10350,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (struct ProcessingChar) startProcessing::center (byte) startProcessing::center_dist (byte) startProcessing::center_x -(byte) startProcessing::center_x#0 center_x zp[1]:29 26.238095238095237 +(byte) startProcessing::center_x#0 center_x zp[1]:30 26.238095238095237 (byte) startProcessing::center_y (byte) startProcessing::center_y#0 center_y zp[1]:20 2.2444444444444445 (byte) startProcessing::ch @@ -10367,7 +10360,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte*) startProcessing::chargenData#1 chargenData zp[2]:10 66667.33333333333 (byte*) startProcessing::chargenData#2 chargenData zp[2]:10 100334.66666666666 (byte*) startProcessing::colPtr -(byte*) startProcessing::colPtr#0 colPtr zp[2]:36 2002.0 +(byte*) startProcessing::colPtr#0 colPtr zp[2]:37 2002.0 (byte) startProcessing::freeIdx (byte) startProcessing::freeIdx#2 freeIdx zp[1]:9 28391.52173913043 (byte) startProcessing::freeIdx#6 reg byte x 20000.2 @@ -10380,22 +10373,22 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) startProcessing::i1#1 reg byte x 150001.5 (byte) startProcessing::i1#2 reg byte x 50000.5 (word) startProcessing::offset -(word) startProcessing::offset#0 offset zp[2]:32 1001.0 +(word) startProcessing::offset#0 offset zp[2]:33 1001.0 (byte*) startProcessing::screenPtr -(byte*) startProcessing::screenPtr#0 screenPtr zp[2]:32 73.2439024390244 +(byte*) startProcessing::screenPtr#0 screenPtr zp[2]:33 73.2439024390244 (byte) startProcessing::spriteCol -(byte) startProcessing::spriteCol#0 spriteCol zp[1]:38 50.05 +(byte) startProcessing::spriteCol#0 spriteCol zp[1]:39 50.05 (byte*) startProcessing::spriteData (byte*) startProcessing::spriteData#0 spriteData zp[2]:12 286.0 (byte*) startProcessing::spriteData#1 spriteData zp[2]:12 50000.5 (byte*) startProcessing::spriteData#2 spriteData zp[2]:12 150502.0 (byte) startProcessing::spriteIdx (byte) startProcessing::spritePtr -(byte) startProcessing::spritePtr#0 spritePtr zp[1]:43 166.83333333333334 +(byte) startProcessing::spritePtr#0 spritePtr zp[1]:44 166.83333333333334 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 spriteX zp[2]:39 166.83333333333334 +(word) startProcessing::spriteX#0 spriteX zp[2]:40 166.83333333333334 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 spriteY zp[2]:41 222.44444444444446 +(word) startProcessing::spriteY#0 spriteY zp[2]:42 222.44444444444446 zp[2]:2 [ heap_head#6 heap_head#0 ] zp[2]:4 [ main::dst#2 main::dst#0 main::dst#1 ] @@ -10426,19 +10419,18 @@ reg byte x [ getCharToProcess::return_dist#0 ] reg byte y [ main::center_x#0 ] zp[1]:20 [ main::center_y#0 startProcessing::center_y#0 getCharToProcess::y#7 getCharToProcess::y#1 init_angle_screen::y#5 init_angle_screen::y#1 ] reg byte a [ main::center_dist#0 ] -reg byte a [ processChars::$86 ] +zp[1]:21 [ processChars::$13 ] reg byte a [ processChars::$87 ] reg byte a [ processChars::$88 ] reg byte a [ processChars::$89 ] reg byte a [ processChars::$28 ] -zp[2]:21 [ processChars::processing#0 ] -zp[1]:23 [ processChars::bitmask#0 ] -zp[2]:24 [ processChars::xpos#0 processChars::$21 ] +zp[2]:22 [ processChars::processing#0 ] +zp[1]:24 [ processChars::bitmask#0 ] +zp[2]:25 [ processChars::xpos#0 processChars::$21 ] reg byte a [ processChars::$9 ] reg byte a [ processChars::$10 ] -reg byte x [ processChars::$13 ] -zp[2]:26 [ processChars::$12 ] -zp[1]:28 [ processChars::ypos#0 ] +zp[2]:27 [ processChars::$12 ] +zp[1]:29 [ processChars::ypos#0 ] reg byte a [ processChars::$73 ] reg byte a [ processChars::xchar#0 ] reg byte a [ processChars::$29 ] @@ -10449,24 +10441,24 @@ reg byte a [ processChars::$25 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$5 ] -zp[1]:29 [ init_angle_screen::ang_w#0 startProcessing::center_x#0 ] +zp[1]:30 [ init_angle_screen::ang_w#0 startProcessing::center_x#0 ] reg byte a [ init_angle_screen::$9 ] reg byte a [ init_angle_screen::$10 ] reg byte a [ init_angle_screen::$11 ] -zp[2]:30 [ getCharToProcess::$12 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ] +zp[2]:31 [ getCharToProcess::$12 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ] reg byte a [ startProcessing::$28 ] reg byte a [ startProcessing::$29 ] reg byte a [ startProcessing::$30 ] reg byte a [ startProcessing::$31 ] reg byte a [ startProcessing::$21 ] -zp[2]:32 [ startProcessing::$23 startProcessing::$34 startProcessing::$0 startProcessing::offset#0 startProcessing::screenPtr#0 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] -zp[2]:34 [ startProcessing::$33 atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] -zp[2]:36 [ startProcessing::colPtr#0 init_angle_screen::xw#0 atan2_16::x#0 ] -zp[1]:38 [ startProcessing::spriteCol#0 getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 init_angle_screen::x#2 init_angle_screen::x#1 ] +zp[2]:33 [ startProcessing::$23 startProcessing::$34 startProcessing::$0 startProcessing::offset#0 startProcessing::screenPtr#0 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] +zp[2]:35 [ startProcessing::$33 atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] +zp[2]:37 [ startProcessing::colPtr#0 init_angle_screen::xw#0 atan2_16::x#0 ] +zp[1]:39 [ startProcessing::spriteCol#0 getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 init_angle_screen::x#2 init_angle_screen::x#1 ] reg byte a [ startProcessing::ch#0 ] -zp[2]:39 [ startProcessing::$26 startProcessing::$8 startProcessing::$9 startProcessing::spriteX#0 init_angle_screen::yw#0 atan2_16::y#0 ] -zp[2]:41 [ startProcessing::$27 startProcessing::$11 startProcessing::$12 startProcessing::spriteY#0 getCharToProcess::$11 getCharToProcess::$13 getCharToProcess::$8 getCharToProcess::$9 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] -zp[1]:43 [ startProcessing::spritePtr#0 getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 init_angle_screen::xb#2 init_angle_screen::xb#1 ] +zp[2]:40 [ startProcessing::$26 startProcessing::$8 startProcessing::$9 startProcessing::spriteX#0 init_angle_screen::yw#0 atan2_16::y#0 ] +zp[2]:42 [ startProcessing::$27 startProcessing::$11 startProcessing::$12 startProcessing::spriteY#0 getCharToProcess::$11 getCharToProcess::$13 getCharToProcess::$8 getCharToProcess::$9 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] +zp[1]:44 [ startProcessing::spritePtr#0 getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte y [ startProcessing::$15 ] reg byte a [ startProcessing::$36 ] reg byte a [ startProcessing::$37 ] @@ -10478,7 +10470,7 @@ reg byte a [ atan2_16::$22 ] FINAL ASSEMBLER -Score: 1113344 +Score: 1113364 // File Comments // Clears start screen throwing around the letters (by turning them into sprites) @@ -10797,7 +10789,7 @@ main: { // initSprites() // [40] call initSprites // Init sprites - // [141] phi from main::@4 to initSprites [phi:main::@4->initSprites] + // [140] phi from main::@4 to initSprites [phi:main::@4->initSprites] jsr initSprites // [41] phi from main::@4 to main::@10 [phi:main::@4->main::@10] // main::@10 @@ -10846,7 +10838,7 @@ main: { sty.z startProcessing.center_x // [55] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0 // [56] call startProcessing - // [192] phi from main::@6 to startProcessing [phi:main::@6->startProcessing] + // [191] phi from main::@6 to startProcessing [phi:main::@6->startProcessing] jsr startProcessing jmp __b4 // main::@2 @@ -10875,13 +10867,14 @@ main: { // processChars // Process any chars in the PROCESSING array processChars: { - .label __12 = $1a - .label __21 = $18 - .label processing = $15 - .label bitmask = $17 + .label __12 = $1b + .label __13 = $15 + .label __21 = $19 + .label processing = $16 + .label bitmask = $18 .label i = 7 - .label xpos = $18 - .label ypos = $1c + .label xpos = $19 + .label ypos = $1d .label numActive = 8 // [61] phi from processChars to processChars::@1 [phi:processChars->processChars::@1] // [61] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1 @@ -10895,10 +10888,11 @@ processChars: { // processChars::@1 __b1: // PROCESSING+i - // [62] (byte~) processChars::$86 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + // [62] (byte~) processChars::$13 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i asl - // [63] (byte~) processChars::$87 ← (byte~) processChars::$86 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1 + sta.z __13 + // [63] (byte~) processChars::$87 ← (byte~) processChars::$13 + (byte) processChars::i#10 -- vbuaa=vbuz1_plus_vbuz2 clc adc.z i // [64] (byte~) processChars::$88 ← (byte~) processChars::$87 << (byte) 1 -- vbuaa=vbuaa_rol_1 @@ -11030,17 +11024,13 @@ processChars: { sta SPRITES_XMSB // processChars::@5 __b5: - // i*2 - // [81] (byte~) processChars::$13 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 - lda.z i - asl - tax // SPRITES_XPOS[i*2] = (char)xpos - // [82] *((const nomodify byte*) SPRITES_XPOS + (byte~) processChars::$13) ← (byte)(word) processChars::xpos#0 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 + // [81] *((const nomodify byte*) SPRITES_XPOS + (byte~) processChars::$13) ← (byte)(word) processChars::xpos#0 -- pbuc1_derefidx_vbuz1=_byte_vwuz2 + ldy.z __13 lda.z xpos - sta SPRITES_XPOS,x + sta SPRITES_XPOS,y // processing->y>>4 - // [83] (word~) processChars::$12 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 + // [82] (word~) processChars::$12 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y lda (processing),y sta.z __12 @@ -11056,14 +11046,15 @@ processChars: { lsr.z __12+1 ror.z __12 // ypos = (char)(processing->y>>4) - // [84] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$12 -- vbuz1=_byte_vwuz2 + // [83] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$12 -- vbuz1=_byte_vwuz2 lda.z __12 sta.z ypos // SPRITES_YPOS[i*2] = ypos - // [85] *((const nomodify byte*) SPRITES_YPOS + (byte~) processChars::$13) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1 - sta SPRITES_YPOS,x + // [84] *((const nomodify byte*) SPRITES_YPOS + (byte~) processChars::$13) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2 + ldy.z __13 + sta SPRITES_YPOS,y // if(processing->x < XPOS_LEFTMOST || processing->x > XPOS_RIGHTMOST || processing->y < YPOS_TOPMOST|| processing->y > YPOS_BOTTOMMOST ) - // [86] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const nomodify word) XPOS_LEFTMOST) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 + // [85] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const nomodify word) XPOS_LEFTMOST) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1 // Move sprite ldy #1 lda (processing),y @@ -11080,7 +11071,7 @@ processChars: { !__b6: !: // processChars::@14 - // [87] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const nomodify word) XPOS_RIGHTMOST) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 + // [86] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const nomodify word) XPOS_RIGHTMOST) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1 ldy #1 lda #>XPOS_RIGHTMOST cmp (processing),y @@ -11096,7 +11087,7 @@ processChars: { !__b6: !: // processChars::@13 - // [88] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const nomodify word) YPOS_TOPMOST) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 + // [87] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const nomodify word) YPOS_TOPMOST) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda (processing),y @@ -11113,7 +11104,7 @@ processChars: { !__b6: !: // processChars::@12 - // [89] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const nomodify word) YPOS_BOTTOMMOST) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 + // [88] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const nomodify word) YPOS_BOTTOMMOST) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y iny lda #>YPOS_BOTTOMMOST @@ -11129,7 +11120,7 @@ processChars: { !: // processChars::@9 // xpos/8 - // [90] (word~) processChars::$21 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz1_ror_3 + // [89] (word~) processChars::$21 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz1_ror_3 lsr.z __21+1 ror.z __21 lsr.z __21+1 @@ -11137,16 +11128,16 @@ processChars: { lsr.z __21+1 ror.z __21 // (char)(xpos/8) - BORDER_XPOS_LEFT/8 - // [91] (byte~) processChars::$73 ← (byte)(word~) processChars::$21 -- vbuaa=_byte_vwuz1 + // [90] (byte~) processChars::$73 ← (byte)(word~) processChars::$21 -- vbuaa=_byte_vwuz1 lda.z __21 // xchar = (char)(xpos/8) - BORDER_XPOS_LEFT/8 - // [92] (byte) processChars::xchar#0 ← (byte~) processChars::$73 - (const nomodify byte) BORDER_XPOS_LEFT/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 + // [91] (byte) processChars::xchar#0 ← (byte~) processChars::$73 - (const nomodify byte) BORDER_XPOS_LEFT/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #BORDER_XPOS_LEFT/8 // processing->vx += VXSIN[xchar] - // [93] (byte~) processChars::$29 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + // [92] (byte~) processChars::$29 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - // [94] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const to_nomodify word*) VXSIN + (byte~) processChars::$29) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa + // [93] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const to_nomodify word*) VXSIN + (byte~) processChars::$29) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX tax clc @@ -11158,7 +11149,7 @@ processChars: { adc VXSIN+1,x sta (processing),y // processing->x += processing->vx - // [95] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1 + // [94] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX sty.z $ff clc @@ -11173,19 +11164,19 @@ processChars: { adc (processing),y sta (processing),y // (char)(ypos/8) - BORDER_YPOS_TOP/8 - // [96] (byte~) processChars::$79 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 + // [95] (byte~) processChars::$79 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3 lda.z ypos lsr lsr lsr // ychar = (char)(ypos/8) - BORDER_YPOS_TOP/8 - // [97] (byte) processChars::ychar#0 ← (byte~) processChars::$79 - (const nomodify byte) BORDER_YPOS_TOP/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 + // [96] (byte) processChars::ychar#0 ← (byte~) processChars::$79 - (const nomodify byte) BORDER_YPOS_TOP/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #BORDER_YPOS_TOP/8 // processing->vy += VYSIN[ychar] - // [98] (byte~) processChars::$30 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 + // [97] (byte~) processChars::$30 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - // [99] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const to_nomodify word*) VYSIN + (byte~) processChars::$30) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa + // [98] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const to_nomodify word*) VYSIN + (byte~) processChars::$30) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY tax clc @@ -11197,7 +11188,7 @@ processChars: { adc VYSIN+1,x sta (processing),y // processing->y += processing->vy - // [100] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 + // [99] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2 ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY clc lda (processing),y @@ -11212,16 +11203,16 @@ processChars: { // processChars::@7 __b7: // numActive++; - // [101] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 + // [100] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1 inc.z numActive - // [102] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] - // [102] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy + // [101] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2] + // [101] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy // processChars::@2 __b2: // for( char i: 0..NUM_PROCESSING-1 ) - // [103] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 + // [102] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1 inc.z i - // [104] if((byte) processChars::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 + // [103] if((byte) processChars::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp.z i beq !__b1+ @@ -11229,22 +11220,22 @@ processChars: { !__b1: // processChars::@return // } - // [105] return + // [104] return rts // processChars::@6 __b6: // processing->status = STATUS_FREE - // [106] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE -- pbuz1_derefidx_vbuc1=vbuc2 + // [105] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE -- pbuz1_derefidx_vbuc1=vbuc2 // Set status to FREE lda #STATUS_FREE ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS sta (processing),y // 0xff ^ bitmask - // [107] (byte~) processChars::$25 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 + // [106] (byte~) processChars::$25 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1 lda #$ff eor.z bitmask // *SPRITES_ENABLE &= 0xff ^ bitmask - // [108] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) & (byte~) processChars::$25 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa + // [107] *((const nomodify byte*) SPRITES_ENABLE) ← *((const nomodify byte*) SPRITES_ENABLE) & (byte~) processChars::$25 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa // Disable the sprite and SPRITES_ENABLE sta SPRITES_ENABLE @@ -11252,7 +11243,7 @@ processChars: { // processChars::@4 __b4: // *SPRITES_XMSB |= bitmask - // [109] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 + // [108] *((const nomodify byte*) SPRITES_XMSB) ← *((const nomodify byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1 lda SPRITES_XMSB ora.z bitmask sta SPRITES_XMSB @@ -11263,19 +11254,19 @@ processChars: { // Utilizes symmetry around the center // init_angle_screen(byte* zp($12) screen) init_angle_screen: { - .label __7 = $1e + .label __7 = $1f .label screen = $12 .label screen_topline = $a .label screen_bottomline = $12 - .label xw = $24 - .label yw = $27 - .label angle_w = $1e - .label ang_w = $1d - .label x = $26 - .label xb = $2b + .label xw = $25 + .label yw = $28 + .label angle_w = $1f + .label ang_w = $1e + .label x = $27 + .label xb = $2c .label y = $14 // screen_topline = screen+40*12 - // [110] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz2_plus_vwuc1 + // [109] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz2_plus_vwuc1 lda.z screen clc adc #<$28*$c @@ -11284,7 +11275,7 @@ init_angle_screen: { adc #>$28*$c sta.z screen_topline+1 // screen_bottomline = screen+40*12 - // [111] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz1_plus_vwuc1 + // [110] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz1_plus_vwuc1 clc lda.z screen_bottomline adc #<$28*$c @@ -11292,35 +11283,35 @@ init_angle_screen: { lda.z screen_bottomline+1 adc #>$28*$c sta.z screen_bottomline+1 - // [112] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1] - // [112] phi (byte*) init_angle_screen::screen_bottomline#6 = (byte*) init_angle_screen::screen_bottomline#0 [phi:init_angle_screen->init_angle_screen::@1#0] -- register_copy - // [112] phi (byte*) init_angle_screen::screen_topline#6 = (byte*) init_angle_screen::screen_topline#0 [phi:init_angle_screen->init_angle_screen::@1#1] -- register_copy - // [112] phi (byte) init_angle_screen::y#5 = (byte) 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1 + // [111] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1] + // [111] phi (byte*) init_angle_screen::screen_bottomline#6 = (byte*) init_angle_screen::screen_bottomline#0 [phi:init_angle_screen->init_angle_screen::@1#0] -- register_copy + // [111] phi (byte*) init_angle_screen::screen_topline#6 = (byte*) init_angle_screen::screen_topline#0 [phi:init_angle_screen->init_angle_screen::@1#1] -- register_copy + // [111] phi (byte) init_angle_screen::y#5 = (byte) 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1 lda #0 sta.z y - // [112] phi from init_angle_screen::@4 to init_angle_screen::@1 [phi:init_angle_screen::@4->init_angle_screen::@1] - // [112] phi (byte*) init_angle_screen::screen_bottomline#6 = (byte*) init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#0] -- register_copy - // [112] phi (byte*) init_angle_screen::screen_topline#6 = (byte*) init_angle_screen::screen_topline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#1] -- register_copy - // [112] phi (byte) init_angle_screen::y#5 = (byte) init_angle_screen::y#1 [phi:init_angle_screen::@4->init_angle_screen::@1#2] -- register_copy + // [111] phi from init_angle_screen::@4 to init_angle_screen::@1 [phi:init_angle_screen::@4->init_angle_screen::@1] + // [111] phi (byte*) init_angle_screen::screen_bottomline#6 = (byte*) init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#0] -- register_copy + // [111] phi (byte*) init_angle_screen::screen_topline#6 = (byte*) init_angle_screen::screen_topline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#1] -- register_copy + // [111] phi (byte) init_angle_screen::y#5 = (byte) init_angle_screen::y#1 [phi:init_angle_screen::@4->init_angle_screen::@1#2] -- register_copy // init_angle_screen::@1 __b1: - // [113] phi from init_angle_screen::@1 to init_angle_screen::@2 [phi:init_angle_screen::@1->init_angle_screen::@2] - // [113] phi (byte) init_angle_screen::xb#2 = (byte) $27 [phi:init_angle_screen::@1->init_angle_screen::@2#0] -- vbuz1=vbuc1 + // [112] phi from init_angle_screen::@1 to init_angle_screen::@2 [phi:init_angle_screen::@1->init_angle_screen::@2] + // [112] phi (byte) init_angle_screen::xb#2 = (byte) $27 [phi:init_angle_screen::@1->init_angle_screen::@2#0] -- vbuz1=vbuc1 lda #$27 sta.z xb - // [113] phi (byte) init_angle_screen::x#2 = (byte) 0 [phi:init_angle_screen::@1->init_angle_screen::@2#1] -- vbuz1=vbuc1 + // [112] phi (byte) init_angle_screen::x#2 = (byte) 0 [phi:init_angle_screen::@1->init_angle_screen::@2#1] -- vbuz1=vbuc1 lda #0 sta.z x // init_angle_screen::@2 __b2: // for( char x=0,xb=39; x<=19; x++, xb--) - // [114] if((byte) init_angle_screen::x#2<(byte) $13+(byte) 1) goto init_angle_screen::@3 -- vbuz1_lt_vbuc1_then_la1 + // [113] if((byte) init_angle_screen::x#2<(byte) $13+(byte) 1) goto init_angle_screen::@3 -- vbuz1_lt_vbuc1_then_la1 lda.z x cmp #$13+1 bcc __b3 // init_angle_screen::@4 // screen_topline -= 40 - // [115] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 -- pbuz1=pbuz1_minus_vbuc1 + // [114] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28 -- pbuz1=pbuz1_minus_vbuc1 sec lda.z screen_topline sbc #$28 @@ -11329,7 +11320,7 @@ init_angle_screen: { sbc #0 sta.z screen_topline+1 // screen_bottomline += 40 - // [116] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [115] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc.z screen_bottomline @@ -11338,51 +11329,51 @@ init_angle_screen: { inc.z screen_bottomline+1 !: // for(char y: 0..12) - // [117] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#5 -- vbuz1=_inc_vbuz1 + // [116] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#5 -- vbuz1=_inc_vbuz1 inc.z y - // [118] if((byte) init_angle_screen::y#1!=(byte) $d) goto init_angle_screen::@1 -- vbuz1_neq_vbuc1_then_la1 + // [117] if((byte) init_angle_screen::y#1!=(byte) $d) goto init_angle_screen::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$d cmp.z y bne __b1 // init_angle_screen::@return // } - // [119] return + // [118] return rts // init_angle_screen::@3 __b3: // x*2 - // [120] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + // [119] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda.z x asl // 39-x*2 - // [121] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 -- vbuaa=vbuc1_minus_vbuaa + // [120] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3 -- vbuaa=vbuc1_minus_vbuaa eor #$ff sec adc #$27 // xw = (signed int)(unsigned int){ 39-x*2, 0 } - // [122] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 -- vwuz1=vbuaa_word_vbuc1 + // [121] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0 -- vwuz1=vbuaa_word_vbuc1 ldy #0 sta.z xw+1 sty.z xw // y*2 - // [123] (byte~) init_angle_screen::$5 ← (byte) init_angle_screen::y#5 << (byte) 1 -- vbuaa=vbuz1_rol_1 + // [122] (byte~) init_angle_screen::$5 ← (byte) init_angle_screen::y#5 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda.z y asl // yw = (signed int)(unsigned int){ y*2, 0 } - // [124] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$5 w= (byte) 0 -- vwuz1=vbuaa_word_vbuc1 + // [123] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$5 w= (byte) 0 -- vwuz1=vbuaa_word_vbuc1 sta.z yw+1 sty.z yw // atan2_16(xw, yw) - // [125] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 - // [126] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 - // [127] call atan2_16 + // [124] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 + // [125] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 + // [126] call atan2_16 jsr atan2_16 - // [128] (word) atan2_16::return#2 ← (word) atan2_16::return#0 + // [127] (word) atan2_16::return#2 ← (word) atan2_16::return#0 // init_angle_screen::@5 // angle_w = atan2_16(xw, yw) - // [129] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 + // [128] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 // angle_w+0x0080 - // [130] (word~) init_angle_screen::$7 ← (word) init_angle_screen::angle_w#0 + (byte) $80 -- vwuz1=vwuz1_plus_vbuc1 + // [129] (word~) init_angle_screen::$7 ← (word) init_angle_screen::angle_w#0 + (byte) $80 -- vwuz1=vwuz1_plus_vbuc1 lda #$80 clc adc.z __7 @@ -11391,54 +11382,54 @@ init_angle_screen: { inc.z __7+1 !: // ang_w = >(angle_w+0x0080) - // [131] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$7 -- vbuz1=_hi_vwuz2 + // [130] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$7 -- vbuz1=_hi_vwuz2 lda.z __7+1 sta.z ang_w // screen_bottomline[xb] = ang_w - // [132] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3 + // [131] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3 ldy.z xb sta (screen_bottomline),y // -ang_w - // [133] (byte~) init_angle_screen::$9 ← - (byte) init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1 + // [132] (byte~) init_angle_screen::$9 ← - (byte) init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1 eor #$ff clc adc #1 // screen_topline[xb] = -ang_w - // [134] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$9 -- pbuz1_derefidx_vbuz2=vbuaa + // [133] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$9 -- pbuz1_derefidx_vbuz2=vbuaa sta (screen_topline),y // 0x80+ang_w - // [135] (byte~) init_angle_screen::$10 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1 + // [134] (byte~) init_angle_screen::$10 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1 lda #$80 clc adc.z ang_w // screen_topline[x] = 0x80+ang_w - // [136] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$10 -- pbuz1_derefidx_vbuz2=vbuaa + // [135] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$10 -- pbuz1_derefidx_vbuz2=vbuaa ldy.z x sta (screen_topline),y // 0x80-ang_w - // [137] (byte~) init_angle_screen::$11 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1 + // [136] (byte~) init_angle_screen::$11 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1 lda #$80 sec sbc.z ang_w // screen_bottomline[x] = 0x80-ang_w - // [138] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa + // [137] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa sta (screen_bottomline),y // for( char x=0,xb=39; x<=19; x++, xb--) - // [139] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2 -- vbuz1=_inc_vbuz1 + // [138] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2 -- vbuz1=_inc_vbuz1 inc.z x - // [140] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2 -- vbuz1=_dec_vbuz1 + // [139] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2 -- vbuz1=_dec_vbuz1 dec.z xb - // [113] phi from init_angle_screen::@5 to init_angle_screen::@2 [phi:init_angle_screen::@5->init_angle_screen::@2] - // [113] phi (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#1 [phi:init_angle_screen::@5->init_angle_screen::@2#0] -- register_copy - // [113] phi (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#1 [phi:init_angle_screen::@5->init_angle_screen::@2#1] -- register_copy + // [112] phi from init_angle_screen::@5 to init_angle_screen::@2 [phi:init_angle_screen::@5->init_angle_screen::@2] + // [112] phi (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#1 [phi:init_angle_screen::@5->init_angle_screen::@2#0] -- register_copy + // [112] phi (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#1 [phi:init_angle_screen::@5->init_angle_screen::@2#1] -- register_copy jmp __b2 } // initSprites // Initialize sprites initSprites: { .label sp = $a - // [142] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] - // [142] phi (byte*) initSprites::sp#2 = (const nomodify byte*) SPRITE_DATA [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 + // [141] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1] + // [141] phi (byte*) initSprites::sp#2 = (const nomodify byte*) SPRITE_DATA [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1 lda #SPRITE_DATA @@ -11447,7 +11438,7 @@ initSprites: { // initSprites::@1 __b1: // for( char* sp = SPRITE_DATA; spSPRITE_DATA+NUM_PROCESSING*$40 bcc __b2 @@ -11456,54 +11447,54 @@ initSprites: { cmp #initSprites::@3] - // [144] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@3#0] -- vbuxx=vbuc1 + // [143] phi from initSprites::@1 to initSprites::@3 [phi:initSprites::@1->initSprites::@3] + // [143] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@3#0] -- vbuxx=vbuc1 ldx #0 // Initialize sprite registers - // [144] phi from initSprites::@3 to initSprites::@3 [phi:initSprites::@3->initSprites::@3] - // [144] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@3->initSprites::@3#0] -- register_copy + // [143] phi from initSprites::@3 to initSprites::@3 [phi:initSprites::@3->initSprites::@3] + // [143] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@3->initSprites::@3#0] -- register_copy // initSprites::@3 __b3: // SPRITES_COLOR[i] = LIGHT_BLUE - // [145] *((const nomodify byte*) SPRITES_COLOR + (byte) initSprites::i#2) ← (const nomodify byte) LIGHT_BLUE -- pbuc1_derefidx_vbuxx=vbuc2 + // [144] *((const nomodify byte*) SPRITES_COLOR + (byte) initSprites::i#2) ← (const nomodify byte) LIGHT_BLUE -- pbuc1_derefidx_vbuxx=vbuc2 lda #LIGHT_BLUE sta SPRITES_COLOR,x // for( char i: 0..7) - // [146] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx + // [145] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx inx - // [147] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@3 -- vbuxx_neq_vbuc1_then_la1 + // [146] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne __b3 // initSprites::@4 // *SPRITES_MC = 0 - // [148] *((const nomodify byte*) SPRITES_MC) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [147] *((const nomodify byte*) SPRITES_MC) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC // *SPRITES_EXPAND_X = 0 - // [149] *((const nomodify byte*) SPRITES_EXPAND_X) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [148] *((const nomodify byte*) SPRITES_EXPAND_X) ← (byte) 0 -- _deref_pbuc1=vbuc2 sta SPRITES_EXPAND_X // *SPRITES_EXPAND_Y = 0 - // [150] *((const nomodify byte*) SPRITES_EXPAND_Y) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [149] *((const nomodify byte*) SPRITES_EXPAND_Y) ← (byte) 0 -- _deref_pbuc1=vbuc2 sta SPRITES_EXPAND_Y // initSprites::@return // } - // [151] return + // [150] return rts // initSprites::@2 __b2: // *sp = 0 - // [152] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 + // [151] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (sp),y // for( char* sp = SPRITE_DATA; spinitSprites::@1] - // [142] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@2->initSprites::@1#0] -- register_copy + // [141] phi from initSprites::@2 to initSprites::@1 [phi:initSprites::@2->initSprites::@1] + // [141] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@2->initSprites::@1#0] -- register_copy jmp __b1 } // setupRasterIrq @@ -11514,37 +11505,37 @@ setupRasterIrq: { // asm { sei } sei // *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK - // [155] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK -- _deref_pbuc1=vbuc2 + // [154] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR // *PROCPORT = PROCPORT_RAM_IO - // [156] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2 + // [155] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT // CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR - // [157] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2 + // [156] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT // setupRasterIrq::@1 // *VIC_CONTROL &=0x7f - // [158] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + // [157] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 lda #$7f and VIC_CONTROL sta VIC_CONTROL // setupRasterIrq::@2 // *RASTER = getCharToProcess::@1] - // [166] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 + // [165] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1] + // [165] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1 lda #0 sta.z closest_y - // [166] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 + // [165] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1 sta.z closest_x - // [166] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vbuz1=vbuc1 + // [165] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vbuz1=vbuc1 sta.z y - // [166] phi (byte) getCharToProcess::closest_dist#8 = (const nomodify byte) NOT_FOUND [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 + // [165] phi (byte) getCharToProcess::closest_dist#8 = (const nomodify byte) NOT_FOUND [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1 lda #NOT_FOUND sta.z closest_dist - // [166] phi (byte*) getCharToProcess::dist_line#6 = (byte*) getCharToProcess::dist_line#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- register_copy - // [166] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#0 [phi:getCharToProcess->getCharToProcess::@1#5] -- register_copy + // [165] phi (byte*) getCharToProcess::dist_line#6 = (byte*) getCharToProcess::dist_line#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- register_copy + // [165] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#0 [phi:getCharToProcess->getCharToProcess::@1#5] -- register_copy // getCharToProcess::@1 __b1: - // [167] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] - // [167] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy - // [167] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy - // [167] phi (byte) getCharToProcess::closest_dist#2 = (byte) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy - // [167] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuyy=vbuc1 + // [166] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2] + // [166] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy + // [166] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy + // [166] phi (byte) getCharToProcess::closest_dist#2 = (byte) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy + // [166] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuyy=vbuc1 ldy #0 // getCharToProcess::@2 __b2: // if(screen_line[x]!=' ') - // [168] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuyy_eq_vbuc1_then_la1 + // [167] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuyy_eq_vbuc1_then_la1 lda #' ' cmp (screen_line),y bne !__b11+ @@ -11619,34 +11610,34 @@ getCharToProcess: { !__b11: // getCharToProcess::@4 // dist = dist_line[x] - // [169] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) -- vbuxx=pbuz1_derefidx_vbuyy + // [168] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2) -- vbuxx=pbuz1_derefidx_vbuyy lda (dist_line),y tax // if(dist=(byte) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vbuxx_ge_vbuz1_then_la1 + // [169] if((byte) getCharToProcess::dist#0>=(byte) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vbuxx_ge_vbuz1_then_la1 cpx.z closest_dist bcs __b12 // getCharToProcess::@5 - // [171] (byte) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuyy + // [170] (byte) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuyy sty.z return_x - // [172] (byte) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 + // [171] (byte) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2 lda.z y sta.z return_y - // [173] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] - // [173] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy - // [173] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy - // [173] phi (byte) getCharToProcess::return_dist#1 = (byte) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy + // [172] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3] + // [172] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy + // [172] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy + // [172] phi (byte) getCharToProcess::return_dist#1 = (byte) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy // getCharToProcess::@3 __b3: // for( char x: 0..39) - // [174] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuyy=_inc_vbuyy + // [173] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuyy=_inc_vbuyy iny - // [175] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuyy_neq_vbuc1_then_la1 + // [174] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuyy_neq_vbuc1_then_la1 cpy #$28 bne __b10 // getCharToProcess::@6 // screen_line += 40 - // [176] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [175] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc.z screen_line @@ -11655,7 +11646,7 @@ getCharToProcess: { inc.z screen_line+1 !: // dist_line += 40 - // [177] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [176] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc.z dist_line @@ -11664,25 +11655,25 @@ getCharToProcess: { inc.z dist_line+1 !: // for( char y: 0..24) - // [178] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 + // [177] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1 inc.z y - // [179] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 + // [178] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp.z y bne __b9 // getCharToProcess::@7 // if(closest.dist != NOT_FOUND) - // [180] if((byte) getCharToProcess::return_dist#1==(const nomodify byte) NOT_FOUND) goto getCharToProcess::@return -- vbuxx_eq_vbuc1_then_la1 + // [179] if((byte) getCharToProcess::return_dist#1==(const nomodify byte) NOT_FOUND) goto getCharToProcess::@return -- vbuxx_eq_vbuc1_then_la1 cpx #NOT_FOUND beq __breturn // getCharToProcess::@8 // (unsigned int)closest.y*40 - // [181] (word~) getCharToProcess::$11 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2 + // [180] (word~) getCharToProcess::$11 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2 lda.z return_y sta.z __11 lda #0 sta.z __11+1 - // [182] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$11 << (byte) 2 -- vwuz1=vwuz2_rol_2 + // [181] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$11 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda.z __11 asl sta.z __12 @@ -11691,7 +11682,7 @@ getCharToProcess: { sta.z __12+1 asl.z __12 rol.z __12+1 - // [183] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$11 -- vwuz1=vwuz2_plus_vwuz1 + // [182] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$11 -- vwuz1=vwuz2_plus_vwuz1 lda.z __13 clc adc.z __12 @@ -11699,7 +11690,7 @@ getCharToProcess: { lda.z __13+1 adc.z __12+1 sta.z __13+1 - // [184] (word~) getCharToProcess::$8 ← (word~) getCharToProcess::$13 << (byte) 3 -- vwuz1=vwuz1_rol_3 + // [183] (word~) getCharToProcess::$8 ← (word~) getCharToProcess::$13 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl.z __8 rol.z __8+1 asl.z __8 @@ -11707,7 +11698,7 @@ getCharToProcess: { asl.z __8 rol.z __8+1 // SCREEN_COPY+(unsigned int)closest.y*40 - // [185] (byte*~) getCharToProcess::$9 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$8 -- pbuz1=pbuz2_plus_vwuz1 + // [184] (byte*~) getCharToProcess::$9 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$8 -- pbuz1=pbuz2_plus_vwuz1 lda.z __9 clc adc.z SCREEN_COPY @@ -11716,7 +11707,7 @@ getCharToProcess: { adc.z SCREEN_COPY+1 sta.z __9+1 // *(SCREEN_COPY+(unsigned int)closest.y*40+closest.x) = ' ' - // [186] *((byte*~) getCharToProcess::$9 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 + // [185] *((byte*~) getCharToProcess::$9 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 // clear the found char on the screen copy lda #' ' ldy.z return_x @@ -11724,114 +11715,114 @@ getCharToProcess: { // getCharToProcess::@return __breturn: // } - // [187] return + // [186] return rts // getCharToProcess::@9 __b9: - // [188] (byte) getCharToProcess::closest_dist#10 ← (byte) getCharToProcess::return_dist#1 -- vbuz1=vbuxx + // [187] (byte) getCharToProcess::closest_dist#10 ← (byte) getCharToProcess::return_dist#1 -- vbuz1=vbuxx stx.z closest_dist - // [166] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] - // [166] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy - // [166] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy - // [166] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy - // [166] phi (byte) getCharToProcess::closest_dist#8 = (byte) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy - // [166] phi (byte*) getCharToProcess::dist_line#6 = (byte*) getCharToProcess::dist_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy - // [166] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#5] -- register_copy + // [165] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1] + // [165] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy + // [165] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy + // [165] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy + // [165] phi (byte) getCharToProcess::closest_dist#8 = (byte) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy + // [165] phi (byte*) getCharToProcess::dist_line#6 = (byte*) getCharToProcess::dist_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy + // [165] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#5] -- register_copy jmp __b1 // getCharToProcess::@10 __b10: - // [189] (byte) getCharToProcess::closest_dist#12 ← (byte) getCharToProcess::return_dist#1 -- vbuz1=vbuxx + // [188] (byte) getCharToProcess::closest_dist#12 ← (byte) getCharToProcess::return_dist#1 -- vbuz1=vbuxx stx.z closest_dist - // [167] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] - // [167] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy - // [167] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy - // [167] phi (byte) getCharToProcess::closest_dist#2 = (byte) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy - // [167] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy + // [166] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2] + // [166] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy + // [166] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy + // [166] phi (byte) getCharToProcess::closest_dist#2 = (byte) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy + // [166] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy jmp __b2 // getCharToProcess::@12 __b12: - // [190] (byte) getCharToProcess::return_dist#6 ← (byte) getCharToProcess::closest_dist#2 -- vbuxx=vbuz1 + // [189] (byte) getCharToProcess::return_dist#6 ← (byte) getCharToProcess::closest_dist#2 -- vbuxx=vbuz1 ldx.z closest_dist jmp __b3 // getCharToProcess::@11 __b11: - // [191] (byte) getCharToProcess::return_dist#5 ← (byte) getCharToProcess::closest_dist#2 -- vbuxx=vbuz1 + // [190] (byte) getCharToProcess::return_dist#5 ← (byte) getCharToProcess::closest_dist#2 -- vbuxx=vbuz1 ldx.z closest_dist jmp __b3 } // startProcessing // Start processing a char - by inserting it into the PROCESSING array -// startProcessing(byte zp($1d) center_x, byte zp($14) center_y) +// startProcessing(byte zp($1e) center_x, byte zp($14) center_y) startProcessing: { - .label __0 = $20 + .label __0 = $21 .label __4 = $c .label __6 = $a - .label __8 = $27 - .label __9 = $27 - .label __11 = $29 - .label __12 = $29 - .label __23 = $20 + .label __8 = $28 + .label __9 = $28 + .label __11 = $2a + .label __12 = $2a + .label __23 = $21 .label __24 = $c .label __25 = $a - .label __26 = $27 - .label __27 = $29 - .label center_x = $1d + .label __26 = $28 + .label __27 = $2a + .label center_x = $1e .label center_y = $14 .label i = 9 - .label offset = $20 - .label colPtr = $24 - .label spriteCol = $26 - .label screenPtr = $20 + .label offset = $21 + .label colPtr = $25 + .label spriteCol = $27 + .label screenPtr = $21 .label spriteData = $c .label chargenData = $a - .label spriteX = $27 - .label spriteY = $29 - .label spritePtr = $2b + .label spriteX = $28 + .label spriteY = $2a + .label spritePtr = $2c // Busy-wait while finding an empty slot in the PROCESSING array .label freeIdx = 9 - .label __33 = $22 - .label __34 = $20 - // [193] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] - // [193] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 + .label __33 = $23 + .label __34 = $21 + // [192] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1] + // [192] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1 ldx #$ff // startProcessing::@1 __b1: - // [194] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] - // [194] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 + // [193] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2] + // [193] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1 lda #0 sta.z i - // [194] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] - // [194] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy + // [193] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2] + // [193] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy // startProcessing::@2 __b2: // PROCESSING[i].status==STATUS_FREE - // [195] (byte~) startProcessing::$28 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + // [194] (byte~) startProcessing::$28 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda.z i asl - // [196] (byte~) startProcessing::$29 ← (byte~) startProcessing::$28 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + // [195] (byte~) startProcessing::$29 ← (byte~) startProcessing::$28 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc.z i - // [197] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 << (byte) 1 -- vbuaa=vbuaa_rol_1 + // [196] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - // [198] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 + // [197] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc.z i - // [199] (byte~) startProcessing::$21 ← (byte~) startProcessing::$31 << (byte) 1 -- vbuaa=vbuaa_rol_1 + // [198] (byte~) startProcessing::$21 ← (byte~) startProcessing::$31 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl // if(PROCESSING[i].status==STATUS_FREE) - // [200] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$21)!=(const byte) STATUS_FREE) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 + // [199] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$21)!=(const byte) STATUS_FREE) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 tay lda #STATUS_FREE cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y beq !__b3+ jmp __b3 !__b3: - // [201] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] - // [201] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy + // [200] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4] + // [200] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy // startProcessing::@4 __b4: // while (freeIdx==0xff) - // [202] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 + // [201] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1 lda #$ff cmp.z freeIdx bne !__b8+ @@ -11839,12 +11830,12 @@ startProcessing: { !__b8: // startProcessing::@5 // (unsigned int)center.y*40 - // [203] (word~) startProcessing::$23 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + // [202] (word~) startProcessing::$23 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda.z center_y sta.z __23 lda #0 sta.z __23+1 - // [204] (word~) startProcessing::$33 ← (word~) startProcessing::$23 << (byte) 2 -- vwuz1=vwuz2_rol_2 + // [203] (word~) startProcessing::$33 ← (word~) startProcessing::$23 << (byte) 2 -- vwuz1=vwuz2_rol_2 lda.z __23 asl sta.z __33 @@ -11853,7 +11844,7 @@ startProcessing: { sta.z __33+1 asl.z __33 rol.z __33+1 - // [205] (word~) startProcessing::$34 ← (word~) startProcessing::$33 + (word~) startProcessing::$23 -- vwuz1=vwuz2_plus_vwuz1 + // [204] (word~) startProcessing::$34 ← (word~) startProcessing::$33 + (word~) startProcessing::$23 -- vwuz1=vwuz2_plus_vwuz1 lda.z __34 clc adc.z __33 @@ -11861,7 +11852,7 @@ startProcessing: { lda.z __34+1 adc.z __33+1 sta.z __34+1 - // [206] (word~) startProcessing::$0 ← (word~) startProcessing::$34 << (byte) 3 -- vwuz1=vwuz1_rol_3 + // [205] (word~) startProcessing::$0 ← (word~) startProcessing::$34 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl.z __0 rol.z __0+1 asl.z __0 @@ -11869,7 +11860,7 @@ startProcessing: { asl.z __0 rol.z __0+1 // offset = (unsigned int)center.y*40+center.x - // [207] (word) startProcessing::offset#0 ← (word~) startProcessing::$0 + (byte) startProcessing::center_x#0 -- vwuz1=vwuz1_plus_vbuz2 + // [206] (word) startProcessing::offset#0 ← (word~) startProcessing::$0 + (byte) startProcessing::center_x#0 -- vwuz1=vwuz1_plus_vbuz2 lda.z center_x clc adc.z offset @@ -11878,7 +11869,7 @@ startProcessing: { inc.z offset+1 !: // colPtr = COLS+offset - // [208] (byte*) startProcessing::colPtr#0 ← (const nomodify byte*) COLS + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz2 + // [207] (byte*) startProcessing::colPtr#0 ← (const nomodify byte*) COLS + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz2 lda.z offset clc adc #COLS sta.z colPtr+1 // spriteCol = *colPtr - // [209] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) -- vbuz1=_deref_pbuz2 + // [208] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0) -- vbuz1=_deref_pbuz2 ldy #0 lda (colPtr),y sta.z spriteCol // screenPtr = SCREEN+offset - // [210] (byte*) startProcessing::screenPtr#0 ← (const nomodify byte*) SCREEN + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz1 + // [209] (byte*) startProcessing::screenPtr#0 ← (const nomodify byte*) SCREEN + (word) startProcessing::offset#0 -- pbuz1=pbuc1_plus_vwuz1 clc lda.z screenPtr adc #SCREEN sta.z screenPtr+1 // (unsigned int)spriteIdx*64 - // [211] (word~) startProcessing::$24 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 + // [210] (word~) startProcessing::$24 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2 lda.z freeIdx sta.z __24 tya sta.z __24+1 - // [212] (word~) startProcessing::$4 ← (word~) startProcessing::$24 << (byte) 6 -- vwuz1=vwuz1_rol_6 + // [211] (word~) startProcessing::$4 ← (word~) startProcessing::$24 << (byte) 6 -- vwuz1=vwuz1_rol_6 lda.z __4+1 lsr sta.z $ff @@ -11920,7 +11911,7 @@ startProcessing: { ror.z __4+1 ror.z __4 // spriteData = SPRITE_DATA+(unsigned int)spriteIdx*64 - // [213] (byte*) startProcessing::spriteData#0 ← (const nomodify byte*) SPRITE_DATA + (word~) startProcessing::$4 -- pbuz1=pbuc1_plus_vwuz1 + // [212] (byte*) startProcessing::spriteData#0 ← (const nomodify byte*) SPRITE_DATA + (word~) startProcessing::$4 -- pbuz1=pbuc1_plus_vwuz1 clc lda.z spriteData adc #SPRITE_DATA sta.z spriteData+1 // ch = (*screenPtr) - // [214] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- vbuaa=_deref_pbuz1 + // [213] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- vbuaa=_deref_pbuz1 lda (screenPtr),y // (unsigned int)ch*8 - // [215] (word~) startProcessing::$25 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa + // [214] (word~) startProcessing::$25 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa sta.z __25 tya sta.z __25+1 - // [216] (word~) startProcessing::$6 ← (word~) startProcessing::$25 << (byte) 3 -- vwuz1=vwuz1_rol_3 + // [215] (word~) startProcessing::$6 ← (word~) startProcessing::$25 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl.z __6 rol.z __6+1 asl.z __6 @@ -11944,7 +11935,7 @@ startProcessing: { asl.z __6 rol.z __6+1 // chargenData = CHARGEN+(unsigned int)ch*8 - // [217] (byte*) startProcessing::chargenData#0 ← (const nomodify byte*) CHARGEN + (word~) startProcessing::$6 -- pbuz1=pbuc1_plus_vwuz1 + // [216] (byte*) startProcessing::chargenData#0 ← (const nomodify byte*) CHARGEN + (word~) startProcessing::$6 -- pbuz1=pbuc1_plus_vwuz1 clc lda.z chargenData adc #startProcessing::@6] - // [220] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1 + // [219] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6] + // [219] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1 ldx #0 - // [220] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy - // [220] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy - // [220] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] - // [220] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy - // [220] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy - // [220] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy + // [219] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy + // [219] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy + // [219] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6] + // [219] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy + // [219] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy + // [219] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy // startProcessing::@6 __b6: // *spriteData = *chargenData - // [221] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 + // [220] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (chargenData),y sta (spriteData),y // spriteData += 3 - // [222] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 + // [221] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1 lda #3 clc adc.z spriteData @@ -11985,32 +11976,32 @@ startProcessing: { inc.z spriteData+1 !: // chargenData++; - // [223] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 + // [222] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1 inc.z chargenData bne !+ inc.z chargenData+1 !: // for( char i: 0..7) - // [224] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx + // [223] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx inx - // [225] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1 + // [224] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne __b6 // startProcessing::@7 // *PROCPORT = PROCPORT_RAM_IO - // [226] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2 + // [225] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT // asm // asm { cli } cli // (unsigned int)center.x*8 - // [228] (word~) startProcessing::$26 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 + // [227] (word~) startProcessing::$26 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2 lda.z center_x sta.z __26 lda #0 sta.z __26+1 - // [229] (word~) startProcessing::$8 ← (word~) startProcessing::$26 << (byte) 3 -- vwuz1=vwuz1_rol_3 + // [228] (word~) startProcessing::$8 ← (word~) startProcessing::$26 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl.z __8 rol.z __8+1 asl.z __8 @@ -12018,7 +12009,7 @@ startProcessing: { asl.z __8 rol.z __8+1 // BORDER_XPOS_LEFT + (unsigned int)center.x*8 - // [230] (word~) startProcessing::$9 ← (const nomodify byte) BORDER_XPOS_LEFT + (word~) startProcessing::$8 -- vwuz1=vbuc1_plus_vwuz1 + // [229] (word~) startProcessing::$9 ← (const nomodify byte) BORDER_XPOS_LEFT + (word~) startProcessing::$8 -- vwuz1=vbuc1_plus_vwuz1 lda #BORDER_XPOS_LEFT clc adc.z __9 @@ -12027,7 +12018,7 @@ startProcessing: { inc.z __9+1 !: // spriteX = (BORDER_XPOS_LEFT + (unsigned int)center.x*8) << 4 - // [231] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$9 << (byte) 4 -- vwuz1=vwuz1_rol_4 + // [230] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$9 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl.z spriteX rol.z spriteX+1 asl.z spriteX @@ -12037,12 +12028,12 @@ startProcessing: { asl.z spriteX rol.z spriteX+1 // (unsigned int)center.y*8 - // [232] (word~) startProcessing::$27 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 + // [231] (word~) startProcessing::$27 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2 lda.z center_y sta.z __27 lda #0 sta.z __27+1 - // [233] (word~) startProcessing::$11 ← (word~) startProcessing::$27 << (byte) 3 -- vwuz1=vwuz1_rol_3 + // [232] (word~) startProcessing::$11 ← (word~) startProcessing::$27 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl.z __11 rol.z __11+1 asl.z __11 @@ -12050,7 +12041,7 @@ startProcessing: { asl.z __11 rol.z __11+1 // BORDER_YPOS_TOP + (unsigned int)center.y*8 - // [234] (word~) startProcessing::$12 ← (const nomodify byte) BORDER_YPOS_TOP + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz1 + // [233] (word~) startProcessing::$12 ← (const nomodify byte) BORDER_YPOS_TOP + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz1 lda #BORDER_YPOS_TOP clc adc.z __12 @@ -12059,7 +12050,7 @@ startProcessing: { inc.z __12+1 !: // spriteY = (BORDER_YPOS_TOP + (unsigned int)center.y*8) << 4 - // [235] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz1_rol_4 + // [234] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl.z spriteY rol.z spriteY+1 asl.z spriteY @@ -12069,93 +12060,93 @@ startProcessing: { asl.z spriteY rol.z spriteY+1 // spritePtr = (char)(SPRITE_DATA/64)+spriteIdx - // [236] (byte) startProcessing::spritePtr#0 ← (byte)(const nomodify byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 + // [235] (byte) startProcessing::spritePtr#0 ← (byte)(const nomodify byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2 lax.z freeIdx axs #-[SPRITE_DATA/$40] stx.z spritePtr // spriteIdx*8 - // [237] (byte~) startProcessing::$15 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuyy=vbuz1_rol_3 + // [236] (byte~) startProcessing::$15 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuyy=vbuz1_rol_3 lda.z freeIdx asl asl asl tay // PROCESSING[spriteIdx] = { spriteX, spriteY, (unsigned int)(spriteIdx*8), 60, spriteIdx, spritePtr, spriteCol, STATUS_NEW, screenPtr } - // [238] (byte~) startProcessing::$36 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + // [237] (byte~) startProcessing::$36 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda.z freeIdx asl - // [239] (byte~) startProcessing::$37 ← (byte~) startProcessing::$36 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 + // [238] (byte~) startProcessing::$37 ← (byte~) startProcessing::$36 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc.z freeIdx - // [240] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 << (byte) 1 -- vbuaa=vbuaa_rol_1 + // [239] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - // [241] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 + // [240] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1 clc adc.z freeIdx - // [242] (byte~) startProcessing::$22 ← (byte~) startProcessing::$39 << (byte) 1 -- vbuxx=vbuaa_rol_1 + // [241] (byte~) startProcessing::$22 ← (byte~) startProcessing::$39 << (byte) 1 -- vbuxx=vbuaa_rol_1 asl tax - // [243] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$22) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 + // [242] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$22) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda.z spriteX sta PROCESSING,x lda.z spriteX+1 sta PROCESSING+1,x - // [244] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$22) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuxx=vwuz1 + // [243] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$22) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuxx=vwuz1 lda.z spriteY sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x lda.z spriteY+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x - // [245] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$22) ← (word)(byte~) startProcessing::$15 -- pwuc1_derefidx_vbuxx=_word_vbuyy + // [244] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$22) ← (word)(byte~) startProcessing::$15 -- pwuc1_derefidx_vbuxx=_word_vbuyy tya sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x lda #0 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x - // [246] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$22) ← (word) $3c -- pwuc1_derefidx_vbuxx=vwuc2 + // [245] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$22) ← (word) $3c -- pwuc1_derefidx_vbuxx=vwuc2 lda #<$3c sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x lda #>$3c sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x - // [247] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$22) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + // [246] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$22) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda.z freeIdx sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x - // [248] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$22) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1 + // [247] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$22) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda.z spritePtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x - // [249] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$22) ← (byte) startProcessing::spriteCol#0 -- pbuc1_derefidx_vbuxx=vbuz1 + // [248] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$22) ← (byte) startProcessing::spriteCol#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda.z spriteCol sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_COL,x - // [250] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$22) ← (const byte) STATUS_NEW -- pbuc1_derefidx_vbuxx=vbuc2 + // [249] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$22) ← (const byte) STATUS_NEW -- pbuc1_derefidx_vbuxx=vbuc2 lda #STATUS_NEW sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x - // [251] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$22) ← (byte*) startProcessing::screenPtr#0 -- qbuc1_derefidx_vbuxx=pbuz1 + // [250] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$22) ← (byte*) startProcessing::screenPtr#0 -- qbuc1_derefidx_vbuxx=pbuz1 lda.z screenPtr sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x lda.z screenPtr+1 sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x // startProcessing::@return // } - // [252] return + // [251] return rts // startProcessing::@8 __b8: - // [253] (byte) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 + // [252] (byte) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1 ldx.z freeIdx - // [193] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] - // [193] phi (byte) startProcessing::freeIdx#6 = (byte) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy + // [192] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1] + // [192] phi (byte) startProcessing::freeIdx#6 = (byte) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy jmp __b1 // startProcessing::@3 __b3: // for( char i: 0..NUM_PROCESSING-1 ) - // [254] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 + // [253] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [255] if((byte) startProcessing::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 + // [254] if((byte) startProcessing::i#1!=(const nomodify byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1 lda #NUM_PROCESSING-1+1 cmp.z i beq !__b2+ jmp __b2 !__b2: // startProcessing::@9 - // [256] (byte) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx + // [255] (byte) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx stx.z freeIdx jmp __b4 } @@ -12163,26 +12154,26 @@ startProcessing: { // Find the atan2(x, y) - which is the angle of the line from (0,0) to (x,y) // Finding the angle requires a binary search using CORDIC_ITERATIONS_16 // Returns the angle in hex-degrees (0=0, 0x8000=PI, 0x10000=2*PI) -// atan2_16(signed word zp($24) x, signed word zp($27) y) +// atan2_16(signed word zp($25) x, signed word zp($28) y) atan2_16: { .label __2 = $c - .label __7 = $29 + .label __7 = $2a .label yi = $c - .label xi = $29 - .label angle = $1e - .label xd = $22 - .label yd = $20 - .label return = $1e - .label x = $24 - .label y = $27 + .label xi = $2a + .label angle = $1f + .label xd = $23 + .label yd = $21 + .label return = $1f + .label x = $25 + .label y = $28 // (y>=0)?y:-y - // [257] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 -- vwsz1_ge_0_then_la1 + // [256] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 -- vwsz1_ge_0_then_la1 lda.z y+1 bmi !__b1+ jmp __b1 !__b1: // atan2_16::@2 - // [258] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 -- vwsz1=_neg_vwsz2 + // [257] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 -- vwsz1=_neg_vwsz2 sec lda #0 sbc.z y @@ -12190,18 +12181,18 @@ atan2_16: { lda #0 sbc.z y+1 sta.z __2+1 - // [259] phi from atan2_16::@1 atan2_16::@2 to atan2_16::@3 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3] - // [259] phi (signed word) atan2_16::yi#0 = (signed word) atan2_16::yi#16 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3#0] -- register_copy + // [258] phi from atan2_16::@1 atan2_16::@2 to atan2_16::@3 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3] + // [258] phi (signed word) atan2_16::yi#0 = (signed word) atan2_16::yi#16 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3#0] -- register_copy // atan2_16::@3 __b3: // (x>=0)?x:-x - // [260] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 -- vwsz1_ge_0_then_la1 + // [259] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 -- vwsz1_ge_0_then_la1 lda.z x+1 bmi !__b4+ jmp __b4 !__b4: // atan2_16::@5 - // [261] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 -- vwsz1=_neg_vwsz2 + // [260] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 -- vwsz1=_neg_vwsz2 sec lda #0 sbc.z x @@ -12209,42 +12200,42 @@ atan2_16: { lda #0 sbc.z x+1 sta.z __7+1 - // [262] phi from atan2_16::@4 atan2_16::@5 to atan2_16::@6 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6] - // [262] phi (signed word) atan2_16::xi#0 = (signed word) atan2_16::xi#13 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6#0] -- register_copy + // [261] phi from atan2_16::@4 atan2_16::@5 to atan2_16::@6 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6] + // [261] phi (signed word) atan2_16::xi#0 = (signed word) atan2_16::xi#13 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6#0] -- register_copy // atan2_16::@6 __b6: - // [263] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10] - // [263] phi (word) atan2_16::angle#12 = (word) 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vwuc1 + // [262] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10] + // [262] phi (word) atan2_16::angle#12 = (word) 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vwuc1 lda #<0 sta.z angle sta.z angle+1 - // [263] phi (byte) atan2_16::i#2 = (byte) 0 [phi:atan2_16::@6->atan2_16::@10#1] -- vbuxx=vbuc1 + // [262] phi (byte) atan2_16::i#2 = (byte) 0 [phi:atan2_16::@6->atan2_16::@10#1] -- vbuxx=vbuc1 tax - // [263] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#0 [phi:atan2_16::@6->atan2_16::@10#2] -- register_copy - // [263] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#0 [phi:atan2_16::@6->atan2_16::@10#3] -- register_copy + // [262] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#0 [phi:atan2_16::@6->atan2_16::@10#2] -- register_copy + // [262] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#0 [phi:atan2_16::@6->atan2_16::@10#3] -- register_copy // atan2_16::@10 __b10: // if(yi==0) - // [264] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 -- vwsz1_neq_0_then_la1 + // [263] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 -- vwsz1_neq_0_then_la1 lda.z yi+1 bne __b11 lda.z yi bne __b11 - // [265] phi from atan2_16::@10 atan2_16::@19 to atan2_16::@12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12] - // [265] phi (word) atan2_16::angle#6 = (word) atan2_16::angle#12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12#0] -- register_copy + // [264] phi from atan2_16::@10 atan2_16::@19 to atan2_16::@12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12] + // [264] phi (word) atan2_16::angle#6 = (word) atan2_16::angle#12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12#0] -- register_copy // atan2_16::@12 __b12: // angle /=2 - // [266] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + // [265] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr.z angle+1 ror.z angle // if(x<0) - // [267] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 -- vwsz1_ge_0_then_la1 + // [266] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 -- vwsz1_ge_0_then_la1 lda.z x+1 bpl __b7 // atan2_16::@21 // angle = 0x8000-angle - // [268] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 -- vwuz1=vwuc1_minus_vwuz1 + // [267] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 -- vwuz1=vwuc1_minus_vwuz1 sec lda #<$8000 sbc.z angle @@ -12252,17 +12243,17 @@ atan2_16: { lda #>$8000 sbc.z angle+1 sta.z angle+1 - // [269] phi from atan2_16::@12 atan2_16::@21 to atan2_16::@7 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7] - // [269] phi (word) atan2_16::angle#11 = (word) atan2_16::angle#1 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7#0] -- register_copy + // [268] phi from atan2_16::@12 atan2_16::@21 to atan2_16::@7 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7] + // [268] phi (word) atan2_16::angle#11 = (word) atan2_16::angle#1 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7#0] -- register_copy // atan2_16::@7 __b7: // if(y<0) - // [270] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 -- vwsz1_ge_0_then_la1 + // [269] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 -- vwsz1_ge_0_then_la1 lda.z y+1 bpl __b8 // atan2_16::@9 // angle = -angle - // [271] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 -- vwuz1=_neg_vwuz1 + // [270] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 -- vwuz1=_neg_vwuz1 sec lda #0 sbc.z angle @@ -12270,69 +12261,69 @@ atan2_16: { lda #0 sbc.z angle+1 sta.z angle+1 - // [272] phi from atan2_16::@7 atan2_16::@9 to atan2_16::@8 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8] - // [272] phi (word) atan2_16::return#0 = (word) atan2_16::angle#11 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8#0] -- register_copy + // [271] phi from atan2_16::@7 atan2_16::@9 to atan2_16::@8 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8] + // [271] phi (word) atan2_16::return#0 = (word) atan2_16::angle#11 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8#0] -- register_copy // atan2_16::@8 __b8: // atan2_16::@return // } - // [273] return + // [272] return rts // atan2_16::@11 __b11: - // [274] (byte) atan2_16::shift#5 ← (byte) atan2_16::i#2 -- vbuyy=vbuxx + // [273] (byte) atan2_16::shift#5 ← (byte) atan2_16::i#2 -- vbuyy=vbuxx txa tay - // [275] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 -- vwsz1=vwsz2 + // [274] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 -- vwsz1=vwsz2 lda.z xi sta.z xd lda.z xi+1 sta.z xd+1 - // [276] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 -- vwsz1=vwsz2 + // [275] (signed word) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 -- vwsz1=vwsz2 lda.z yi sta.z yd lda.z yi+1 sta.z yd+1 - // [277] phi from atan2_16::@11 atan2_16::@14 to atan2_16::@13 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13] - // [277] phi (signed word) atan2_16::yd#3 = (signed word) atan2_16::yd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#0] -- register_copy - // [277] phi (signed word) atan2_16::xd#3 = (signed word) atan2_16::xd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#1] -- register_copy - // [277] phi (byte) atan2_16::shift#2 = (byte) atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy + // [276] phi from atan2_16::@11 atan2_16::@14 to atan2_16::@13 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13] + // [276] phi (signed word) atan2_16::yd#3 = (signed word) atan2_16::yd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#0] -- register_copy + // [276] phi (signed word) atan2_16::xd#3 = (signed word) atan2_16::xd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#1] -- register_copy + // [276] phi (byte) atan2_16::shift#2 = (byte) atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy // atan2_16::@13 __b13: // while(shift>=2) - // [278] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1 + // [277] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1 cpy #2 bcs __b14 // atan2_16::@15 // if(shift) - // [279] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 -- vbuc1_eq_vbuyy_then_la1 + // [278] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 -- vbuc1_eq_vbuyy_then_la1 cpy #0 beq __b17 // atan2_16::@16 // xd >>= 1 - // [280] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 + // [279] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 lda.z xd+1 cmp #$80 ror.z xd+1 ror.z xd // yd >>= 1 - // [281] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 + // [280] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 lda.z yd+1 cmp #$80 ror.z yd+1 ror.z yd - // [282] phi from atan2_16::@15 atan2_16::@16 to atan2_16::@17 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17] - // [282] phi (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#0] -- register_copy - // [282] phi (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#1] -- register_copy + // [281] phi from atan2_16::@15 atan2_16::@16 to atan2_16::@17 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17] + // [281] phi (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#0] -- register_copy + // [281] phi (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#1] -- register_copy // atan2_16::@17 __b17: // if(yi>=0) - // [283] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 -- vwsz1_ge_0_then_la1 + // [282] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 -- vwsz1_ge_0_then_la1 lda.z yi+1 bpl __b18 // atan2_16::@20 // xi -= yd - // [284] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_minus_vwsz2 + // [283] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_minus_vwsz2 lda.z xi sec sbc.z yd @@ -12341,7 +12332,7 @@ atan2_16: { sbc.z yd+1 sta.z xi+1 // yi += xd - // [285] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_plus_vwsz2 + // [284] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_plus_vwsz2 lda.z yi clc adc.z xd @@ -12350,10 +12341,10 @@ atan2_16: { adc.z xd+1 sta.z yi+1 // angle -= CORDIC_ATAN2_ANGLES_16[i] - // [286] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + // [285] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - // [287] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa + // [286] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa tay sec lda.z angle @@ -12362,30 +12353,30 @@ atan2_16: { lda.z angle+1 sbc CORDIC_ATAN2_ANGLES_16+1,y sta.z angle+1 - // [288] phi from atan2_16::@18 atan2_16::@20 to atan2_16::@19 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19] - // [288] phi (signed word) atan2_16::xi#8 = (signed word) atan2_16::xi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#0] -- register_copy - // [288] phi (word) atan2_16::angle#13 = (word) atan2_16::angle#2 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#1] -- register_copy - // [288] phi (signed word) atan2_16::yi#8 = (signed word) atan2_16::yi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#2] -- register_copy + // [287] phi from atan2_16::@18 atan2_16::@20 to atan2_16::@19 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19] + // [287] phi (signed word) atan2_16::xi#8 = (signed word) atan2_16::xi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#0] -- register_copy + // [287] phi (word) atan2_16::angle#13 = (word) atan2_16::angle#2 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#1] -- register_copy + // [287] phi (signed word) atan2_16::yi#8 = (signed word) atan2_16::yi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#2] -- register_copy // atan2_16::@19 __b19: // for( char i: 0..CORDIC_ITERATIONS_16-1) - // [289] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2 -- vbuxx=_inc_vbuxx + // [288] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2 -- vbuxx=_inc_vbuxx inx - // [290] if((byte) atan2_16::i#1==(const nomodify byte) CORDIC_ITERATIONS_16-(byte) 1+(byte) 1) goto atan2_16::@12 -- vbuxx_eq_vbuc1_then_la1 + // [289] if((byte) atan2_16::i#1==(const nomodify byte) CORDIC_ITERATIONS_16-(byte) 1+(byte) 1) goto atan2_16::@12 -- vbuxx_eq_vbuc1_then_la1 cpx #CORDIC_ITERATIONS_16-1+1 bne !__b12+ jmp __b12 !__b12: - // [263] phi from atan2_16::@19 to atan2_16::@10 [phi:atan2_16::@19->atan2_16::@10] - // [263] phi (word) atan2_16::angle#12 = (word) atan2_16::angle#13 [phi:atan2_16::@19->atan2_16::@10#0] -- register_copy - // [263] phi (byte) atan2_16::i#2 = (byte) atan2_16::i#1 [phi:atan2_16::@19->atan2_16::@10#1] -- register_copy - // [263] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#8 [phi:atan2_16::@19->atan2_16::@10#2] -- register_copy - // [263] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#8 [phi:atan2_16::@19->atan2_16::@10#3] -- register_copy + // [262] phi from atan2_16::@19 to atan2_16::@10 [phi:atan2_16::@19->atan2_16::@10] + // [262] phi (word) atan2_16::angle#12 = (word) atan2_16::angle#13 [phi:atan2_16::@19->atan2_16::@10#0] -- register_copy + // [262] phi (byte) atan2_16::i#2 = (byte) atan2_16::i#1 [phi:atan2_16::@19->atan2_16::@10#1] -- register_copy + // [262] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#8 [phi:atan2_16::@19->atan2_16::@10#2] -- register_copy + // [262] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#8 [phi:atan2_16::@19->atan2_16::@10#3] -- register_copy jmp __b10 // atan2_16::@18 __b18: // xi += yd - // [291] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_plus_vwsz2 + // [290] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_plus_vwsz2 lda.z xi clc adc.z yd @@ -12394,7 +12385,7 @@ atan2_16: { adc.z yd+1 sta.z xi+1 // yi -= xd - // [292] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_minus_vwsz2 + // [291] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_minus_vwsz2 lda.z yi sec sbc.z xd @@ -12403,10 +12394,10 @@ atan2_16: { sbc.z xd+1 sta.z yi+1 // angle += CORDIC_ATAN2_ANGLES_16[i] - // [293] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + // [292] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - // [294] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) -- vwuz1=vwuz1_plus_pwuc1_derefidx_vbuaa + // [293] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22) -- vwuz1=vwuz1_plus_pwuc1_derefidx_vbuaa tay clc lda.z angle @@ -12419,7 +12410,7 @@ atan2_16: { // atan2_16::@14 __b14: // xd >>= 2 - // [295] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 + // [294] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 lda.z xd+1 cmp #$80 ror.z xd+1 @@ -12429,7 +12420,7 @@ atan2_16: { ror.z xd+1 ror.z xd // yd >>= 2 - // [296] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 + // [295] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 lda.z yd+1 cmp #$80 ror.z yd+1 @@ -12439,14 +12430,14 @@ atan2_16: { ror.z yd+1 ror.z yd // shift -=2 - // [297] (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#2 - (byte) 2 -- vbuyy=vbuyy_minus_2 + // [296] (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#2 - (byte) 2 -- vbuyy=vbuyy_minus_2 dey dey jmp __b13 // atan2_16::@4 __b4: // (x>=0)?x:-x - // [298] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 -- vwsz1=vwsz2 + // [297] (signed word) atan2_16::xi#13 ← (signed word) atan2_16::x#0 -- vwsz1=vwsz2 lda.z x sta.z xi lda.z x+1 @@ -12455,7 +12446,7 @@ atan2_16: { // atan2_16::@1 __b1: // (y>=0)?y:-y - // [299] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 -- vwsz1=vwsz2 + // [298] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0 -- vwsz1=vwsz2 lda.z y sta.z yi lda.z y+1 diff --git a/src/test/ref/complex/clearscreen/clearscreen.sym b/src/test/ref/complex/clearscreen/clearscreen.sym index a0c5eb31f..a00a61139 100644 --- a/src/test/ref/complex/clearscreen/clearscreen.sym +++ b/src/test/ref/complex/clearscreen/clearscreen.sym @@ -179,7 +179,7 @@ (signed word~) atan2_16::$2 zp[2]:12 200002.0 (byte~) atan2_16::$22 reg byte a 2.00000002E8 (byte~) atan2_16::$23 reg byte a 2.00000002E8 -(signed word~) atan2_16::$7 zp[2]:41 200002.0 +(signed word~) atan2_16::$7 zp[2]:42 200002.0 (label) atan2_16::@1 (label) atan2_16::@10 (label) atan2_16::@11 @@ -203,48 +203,48 @@ (label) atan2_16::@9 (label) atan2_16::@return (word) atan2_16::angle -(word) atan2_16::angle#1 angle zp[2]:30 150001.5 -(word) atan2_16::angle#11 angle zp[2]:30 200002.0 -(word) atan2_16::angle#12 angle zp[2]:30 1.904761923809524E7 -(word) atan2_16::angle#13 angle zp[2]:30 1.3333333466666667E8 -(word) atan2_16::angle#2 angle zp[2]:30 2.00000002E8 -(word) atan2_16::angle#3 angle zp[2]:30 2.00000002E8 -(word) atan2_16::angle#4 angle zp[2]:30 200002.0 -(word) atan2_16::angle#5 angle zp[2]:30 200002.0 -(word) atan2_16::angle#6 angle zp[2]:30 2.00100003E8 +(word) atan2_16::angle#1 angle zp[2]:31 150001.5 +(word) atan2_16::angle#11 angle zp[2]:31 200002.0 +(word) atan2_16::angle#12 angle zp[2]:31 1.904761923809524E7 +(word) atan2_16::angle#13 angle zp[2]:31 1.3333333466666667E8 +(word) atan2_16::angle#2 angle zp[2]:31 2.00000002E8 +(word) atan2_16::angle#3 angle zp[2]:31 2.00000002E8 +(word) atan2_16::angle#4 angle zp[2]:31 200002.0 +(word) atan2_16::angle#5 angle zp[2]:31 200002.0 +(word) atan2_16::angle#6 angle zp[2]:31 2.00100003E8 (byte) atan2_16::i (byte) atan2_16::i#1 reg byte x 1.500000015E8 (byte) atan2_16::i#2 reg byte x 2.0833333541666668E7 (word) atan2_16::return -(word) atan2_16::return#0 return zp[2]:30 70001.0 -(word) atan2_16::return#2 return zp[2]:30 20002.0 +(word) atan2_16::return#0 return zp[2]:31 70001.0 +(word) atan2_16::return#2 return zp[2]:31 20002.0 (byte) atan2_16::shift (byte) atan2_16::shift#1 reg byte y 2.000000002E9 (byte) atan2_16::shift#2 reg byte y 8.0000000125E8 (byte) atan2_16::shift#5 reg byte y 6.6666667333333336E7 (signed word) atan2_16::x -(signed word) atan2_16::x#0 x zp[2]:36 10789.605263157895 +(signed word) atan2_16::x#0 x zp[2]:37 10789.605263157895 (signed word) atan2_16::xd -(signed word) atan2_16::xd#1 xd zp[2]:34 6.666666673333334E8 -(signed word) atan2_16::xd#10 xd zp[2]:34 1.00000001E8 -(signed word) atan2_16::xd#2 xd zp[2]:34 1.00000001E8 -(signed word) atan2_16::xd#3 xd zp[2]:34 7.666666683333335E8 -(signed word) atan2_16::xd#5 xd zp[2]:34 1.00000001E8 +(signed word) atan2_16::xd#1 xd zp[2]:35 6.666666673333334E8 +(signed word) atan2_16::xd#10 xd zp[2]:35 1.00000001E8 +(signed word) atan2_16::xd#2 xd zp[2]:35 1.00000001E8 +(signed word) atan2_16::xd#3 xd zp[2]:35 7.666666683333335E8 +(signed word) atan2_16::xd#5 xd zp[2]:35 1.00000001E8 (signed word) atan2_16::xi -(signed word) atan2_16::xi#0 xi zp[2]:41 300003.0 -(signed word) atan2_16::xi#1 xi zp[2]:41 5.00000005E7 -(signed word) atan2_16::xi#13 xi zp[2]:41 200002.0 -(signed word) atan2_16::xi#2 xi zp[2]:41 5.00000005E7 -(signed word) atan2_16::xi#3 xi zp[2]:41 2.6673333666666668E7 -(signed word) atan2_16::xi#8 xi zp[2]:41 1.00000001E8 +(signed word) atan2_16::xi#0 xi zp[2]:42 300003.0 +(signed word) atan2_16::xi#1 xi zp[2]:42 5.00000005E7 +(signed word) atan2_16::xi#13 xi zp[2]:42 200002.0 +(signed word) atan2_16::xi#2 xi zp[2]:42 5.00000005E7 +(signed word) atan2_16::xi#3 xi zp[2]:42 2.6673333666666668E7 +(signed word) atan2_16::xi#8 xi zp[2]:42 1.00000001E8 (signed word) atan2_16::y -(signed word) atan2_16::y#0 y zp[2]:39 10250.125 +(signed word) atan2_16::y#0 y zp[2]:40 10250.125 (signed word) atan2_16::yd -(signed word) atan2_16::yd#1 yd zp[2]:32 1.000000001E9 -(signed word) atan2_16::yd#10 yd zp[2]:32 2.00000002E8 -(signed word) atan2_16::yd#2 yd zp[2]:32 2.00000002E8 -(signed word) atan2_16::yd#3 yd zp[2]:32 4.6000000099999994E8 -(signed word) atan2_16::yd#5 yd zp[2]:32 2.00000002E8 +(signed word) atan2_16::yd#1 yd zp[2]:33 1.000000001E9 +(signed word) atan2_16::yd#10 yd zp[2]:33 2.00000002E8 +(signed word) atan2_16::yd#2 yd zp[2]:33 2.00000002E8 +(signed word) atan2_16::yd#3 yd zp[2]:33 4.6000000099999994E8 +(signed word) atan2_16::yd#5 yd zp[2]:33 2.00000002E8 (signed word) atan2_16::yi (signed word) atan2_16::yi#0 yi zp[2]:12 60000.600000000006 (signed word) atan2_16::yi#1 yi zp[2]:12 6.6666667333333336E7 @@ -253,11 +253,11 @@ (signed word) atan2_16::yi#3 yi zp[2]:12 3.53000004117647E7 (signed word) atan2_16::yi#8 yi zp[2]:12 1.00000001E8 (struct ProcessingChar()) getCharToProcess() -(word~) getCharToProcess::$11 zp[2]:41 1501.5 -(word~) getCharToProcess::$12 zp[2]:30 2002.0 -(word~) getCharToProcess::$13 zp[2]:41 2002.0 -(word~) getCharToProcess::$8 zp[2]:41 2002.0 -(byte*~) getCharToProcess::$9 zp[2]:41 2002.0 +(word~) getCharToProcess::$11 zp[2]:42 1501.5 +(word~) getCharToProcess::$12 zp[2]:31 2002.0 +(word~) getCharToProcess::$13 zp[2]:42 2002.0 +(word~) getCharToProcess::$8 zp[2]:42 2002.0 +(byte*~) getCharToProcess::$9 zp[2]:42 2002.0 (label) getCharToProcess::@1 (label) getCharToProcess::@10 (label) getCharToProcess::@11 @@ -272,13 +272,13 @@ (label) getCharToProcess::@9 (label) getCharToProcess::@return (byte) getCharToProcess::closest_dist -(byte) getCharToProcess::closest_dist#10 closest_dist zp[1]:38 200002.0 -(byte) getCharToProcess::closest_dist#12 closest_dist zp[1]:38 2000002.0 -(byte) getCharToProcess::closest_dist#2 closest_dist zp[1]:38 1025001.25 -(byte) getCharToProcess::closest_dist#8 closest_dist zp[1]:38 200002.0 +(byte) getCharToProcess::closest_dist#10 closest_dist zp[1]:39 200002.0 +(byte) getCharToProcess::closest_dist#12 closest_dist zp[1]:39 2000002.0 +(byte) getCharToProcess::closest_dist#2 closest_dist zp[1]:39 1025001.25 +(byte) getCharToProcess::closest_dist#8 closest_dist zp[1]:39 200002.0 (byte) getCharToProcess::closest_x -(byte) getCharToProcess::closest_x#7 closest_x zp[1]:43 516667.3333333334 -(byte) getCharToProcess::closest_x#9 closest_x zp[1]:43 200002.0 +(byte) getCharToProcess::closest_x#7 closest_x zp[1]:44 516667.3333333334 +(byte) getCharToProcess::closest_x#9 closest_x zp[1]:44 200002.0 (byte) getCharToProcess::closest_y (byte) getCharToProcess::closest_y#7 closest_y zp[1]:9 516667.3333333334 (byte) getCharToProcess::closest_y#9 closest_y zp[1]:9 200002.0 @@ -296,8 +296,8 @@ (byte) getCharToProcess::return_dist#6 reg byte x 2000002.0 (byte) getCharToProcess::return_x (byte) getCharToProcess::return_x#0 reg byte y 67.33333333333333 -(byte) getCharToProcess::return_x#1 return_x zp[1]:43 227839.2777777778 -(byte) getCharToProcess::return_x#7 return_x zp[1]:43 1000001.0 +(byte) getCharToProcess::return_x#1 return_x zp[1]:44 227839.2777777778 +(byte) getCharToProcess::return_x#7 return_x zp[1]:44 1000001.0 (byte) getCharToProcess::return_y (byte) getCharToProcess::return_y#0 reg byte a 67.33333333333333 (byte) getCharToProcess::return_y#1 return_y zp[1]:9 215795.05263157893 @@ -333,7 +333,7 @@ (byte~) init_angle_screen::$3 reg byte a 20002.0 (byte~) init_angle_screen::$4 reg byte a 20002.0 (byte~) init_angle_screen::$5 reg byte a 20002.0 -(word~) init_angle_screen::$7 zp[2]:30 20002.0 +(word~) init_angle_screen::$7 zp[2]:31 20002.0 (byte~) init_angle_screen::$9 reg byte a 20002.0 (label) init_angle_screen::@1 (label) init_angle_screen::@2 @@ -342,9 +342,9 @@ (label) init_angle_screen::@5 (label) init_angle_screen::@return (byte) init_angle_screen::ang_w -(byte) init_angle_screen::ang_w#0 ang_w zp[1]:29 8334.166666666666 +(byte) init_angle_screen::ang_w#0 ang_w zp[1]:30 8334.166666666666 (word) init_angle_screen::angle_w -(word) init_angle_screen::angle_w#0 angle_w zp[2]:30 20002.0 +(word) init_angle_screen::angle_w#0 angle_w zp[2]:31 20002.0 (byte*) init_angle_screen::screen (byte*) init_angle_screen::screen#0 screen zp[2]:18 106.5 (byte*) init_angle_screen::screen_bottomline @@ -356,18 +356,18 @@ (byte*) init_angle_screen::screen_topline#1 screen_topline zp[2]:10 500.5 (byte*) init_angle_screen::screen_topline#6 screen_topline zp[2]:10 921.0416666666666 (byte) init_angle_screen::x -(byte) init_angle_screen::x#1 x zp[1]:38 10001.0 -(byte) init_angle_screen::x#2 x zp[1]:38 2857.4285714285716 +(byte) init_angle_screen::x#1 x zp[1]:39 10001.0 +(byte) init_angle_screen::x#2 x zp[1]:39 2857.4285714285716 (byte) init_angle_screen::xb -(byte) init_angle_screen::xb#1 xb zp[1]:43 20002.0 -(byte) init_angle_screen::xb#2 xb zp[1]:43 1818.3636363636363 +(byte) init_angle_screen::xb#1 xb zp[1]:44 20002.0 +(byte) init_angle_screen::xb#2 xb zp[1]:44 1818.3636363636363 (signed word) init_angle_screen::xw -(word) init_angle_screen::xw#0 xw zp[2]:36 3333.6666666666665 +(word) init_angle_screen::xw#0 xw zp[2]:37 3333.6666666666665 (byte) init_angle_screen::y (byte) init_angle_screen::y#1 y zp[1]:20 1501.5 (byte) init_angle_screen::y#5 y zp[1]:20 461.65384615384613 (signed word) init_angle_screen::yw -(word) init_angle_screen::yw#0 yw zp[2]:39 5000.5 +(word) init_angle_screen::yw#0 yw zp[2]:40 5000.5 interrupt(HARDWARE_ALL)(void()) irqBottom() (label) irqBottom::@1 (label) irqBottom::@2 @@ -419,16 +419,15 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (word) malloc::size (void()) processChars() (byte~) processChars::$10 reg byte a 202.0 -(word~) processChars::$12 zp[2]:26 101.0 -(byte~) processChars::$13 reg byte x 75.75 -(word~) processChars::$21 zp[2]:24 101.0 +(word~) processChars::$12 zp[2]:27 101.0 +(byte~) processChars::$13 zp[1]:21 17.565217391304348 +(word~) processChars::$21 zp[2]:25 101.0 (byte~) processChars::$25 reg byte a 202.0 (byte~) processChars::$28 reg byte a 202.0 (byte~) processChars::$29 reg byte a 202.0 (byte~) processChars::$30 reg byte a 202.0 (byte~) processChars::$73 reg byte a 202.0 (byte~) processChars::$79 reg byte a 202.0 -(byte~) processChars::$86 reg byte a 202.0 (byte~) processChars::$87 reg byte a 202.0 (byte~) processChars::$88 reg byte a 202.0 (byte~) processChars::$89 reg byte a 202.0 @@ -449,24 +448,24 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (label) processChars::@9 (label) processChars::@return (byte) processChars::bitmask -(byte) processChars::bitmask#0 bitmask zp[1]:23 21.041666666666664 +(byte) processChars::bitmask#0 bitmask zp[1]:24 21.956521739130434 (byte) processChars::i (byte) processChars::i#1 i zp[1]:7 151.5 -(byte) processChars::i#10 i zp[1]:7 13.17391304347826 +(byte) processChars::i#10 i zp[1]:7 11.222222222222221 (byte) processChars::numActive (byte) processChars::numActive#1 numActive zp[1]:8 202.0 -(byte) processChars::numActive#10 numActive zp[1]:8 6.886363636363637 +(byte) processChars::numActive#10 numActive zp[1]:8 7.046511627906977 (byte) processChars::numActive#3 numActive zp[1]:8 101.0 (struct ProcessingSprite*) processChars::processing -(struct ProcessingSprite*) processChars::processing#0 processing zp[2]:21 2.9705882352941178 +(struct ProcessingSprite*) processChars::processing#0 processing zp[2]:22 3.0606060606060606 (byte) processChars::xchar (byte) processChars::xchar#0 reg byte a 202.0 (word) processChars::xpos -(word) processChars::xpos#0 xpos zp[2]:24 20.2 +(word) processChars::xpos#0 xpos zp[2]:25 21.642857142857142 (byte) processChars::ychar (byte) processChars::ychar#0 reg byte a 202.0 (byte) processChars::ypos -(byte) processChars::ypos#0 ypos zp[1]:28 25.25 +(byte) processChars::ypos#0 ypos zp[1]:29 25.25 (void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine) (label) setupRasterIrq::@1 (label) setupRasterIrq::@2 @@ -475,31 +474,31 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (const void()*) setupRasterIrq::irqRoutine#0 irqRoutine = &interrupt(HARDWARE_ALL)(void()) irqTop() (word) setupRasterIrq::raster (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (byte) startProcessing::center_dist) -(word~) startProcessing::$0 zp[2]:32 2002.0 -(word~) startProcessing::$11 zp[2]:41 2002.0 -(word~) startProcessing::$12 zp[2]:41 2002.0 +(word~) startProcessing::$0 zp[2]:33 2002.0 +(word~) startProcessing::$11 zp[2]:42 2002.0 +(word~) startProcessing::$12 zp[2]:42 2002.0 (byte~) startProcessing::$15 reg byte y 125.125 (byte~) startProcessing::$21 reg byte a 2000002.0 (byte~) startProcessing::$22 reg byte x 1112.222222222222 -(word~) startProcessing::$23 zp[2]:32 1501.5 +(word~) startProcessing::$23 zp[2]:33 1501.5 (word~) startProcessing::$24 zp[2]:12 2002.0 (word~) startProcessing::$25 zp[2]:10 2002.0 -(word~) startProcessing::$26 zp[2]:39 2002.0 -(word~) startProcessing::$27 zp[2]:41 2002.0 +(word~) startProcessing::$26 zp[2]:40 2002.0 +(word~) startProcessing::$27 zp[2]:42 2002.0 (byte~) startProcessing::$28 reg byte a 2000002.0 (byte~) startProcessing::$29 reg byte a 2000002.0 (byte~) startProcessing::$30 reg byte a 2000002.0 (byte~) startProcessing::$31 reg byte a 2000002.0 -(word~) startProcessing::$33 zp[2]:34 2002.0 -(word~) startProcessing::$34 zp[2]:32 2002.0 +(word~) startProcessing::$33 zp[2]:35 2002.0 +(word~) startProcessing::$34 zp[2]:33 2002.0 (byte~) startProcessing::$36 reg byte a 2002.0 (byte~) startProcessing::$37 reg byte a 2002.0 (byte~) startProcessing::$38 reg byte a 2002.0 (byte~) startProcessing::$39 reg byte a 2002.0 (word~) startProcessing::$4 zp[2]:12 2002.0 (word~) startProcessing::$6 zp[2]:10 2002.0 -(word~) startProcessing::$8 zp[2]:39 2002.0 -(word~) startProcessing::$9 zp[2]:39 2002.0 +(word~) startProcessing::$8 zp[2]:40 2002.0 +(word~) startProcessing::$9 zp[2]:40 2002.0 (label) startProcessing::@1 (label) startProcessing::@2 (label) startProcessing::@3 @@ -513,7 +512,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (struct ProcessingChar) startProcessing::center (byte) startProcessing::center_dist (byte) startProcessing::center_x -(byte) startProcessing::center_x#0 center_x zp[1]:29 26.238095238095237 +(byte) startProcessing::center_x#0 center_x zp[1]:30 26.238095238095237 (byte) startProcessing::center_y (byte) startProcessing::center_y#0 center_y zp[1]:20 2.2444444444444445 (byte) startProcessing::ch @@ -523,7 +522,7 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte*) startProcessing::chargenData#1 chargenData zp[2]:10 66667.33333333333 (byte*) startProcessing::chargenData#2 chargenData zp[2]:10 100334.66666666666 (byte*) startProcessing::colPtr -(byte*) startProcessing::colPtr#0 colPtr zp[2]:36 2002.0 +(byte*) startProcessing::colPtr#0 colPtr zp[2]:37 2002.0 (byte) startProcessing::freeIdx (byte) startProcessing::freeIdx#2 freeIdx zp[1]:9 28391.52173913043 (byte) startProcessing::freeIdx#6 reg byte x 20000.2 @@ -536,22 +535,22 @@ interrupt(HARDWARE_ALL)(void()) irqTop() (byte) startProcessing::i1#1 reg byte x 150001.5 (byte) startProcessing::i1#2 reg byte x 50000.5 (word) startProcessing::offset -(word) startProcessing::offset#0 offset zp[2]:32 1001.0 +(word) startProcessing::offset#0 offset zp[2]:33 1001.0 (byte*) startProcessing::screenPtr -(byte*) startProcessing::screenPtr#0 screenPtr zp[2]:32 73.2439024390244 +(byte*) startProcessing::screenPtr#0 screenPtr zp[2]:33 73.2439024390244 (byte) startProcessing::spriteCol -(byte) startProcessing::spriteCol#0 spriteCol zp[1]:38 50.05 +(byte) startProcessing::spriteCol#0 spriteCol zp[1]:39 50.05 (byte*) startProcessing::spriteData (byte*) startProcessing::spriteData#0 spriteData zp[2]:12 286.0 (byte*) startProcessing::spriteData#1 spriteData zp[2]:12 50000.5 (byte*) startProcessing::spriteData#2 spriteData zp[2]:12 150502.0 (byte) startProcessing::spriteIdx (byte) startProcessing::spritePtr -(byte) startProcessing::spritePtr#0 spritePtr zp[1]:43 166.83333333333334 +(byte) startProcessing::spritePtr#0 spritePtr zp[1]:44 166.83333333333334 (word) startProcessing::spriteX -(word) startProcessing::spriteX#0 spriteX zp[2]:39 166.83333333333334 +(word) startProcessing::spriteX#0 spriteX zp[2]:40 166.83333333333334 (word) startProcessing::spriteY -(word) startProcessing::spriteY#0 spriteY zp[2]:41 222.44444444444446 +(word) startProcessing::spriteY#0 spriteY zp[2]:42 222.44444444444446 zp[2]:2 [ heap_head#6 heap_head#0 ] zp[2]:4 [ main::dst#2 main::dst#0 main::dst#1 ] @@ -582,19 +581,18 @@ reg byte x [ getCharToProcess::return_dist#0 ] reg byte y [ main::center_x#0 ] zp[1]:20 [ main::center_y#0 startProcessing::center_y#0 getCharToProcess::y#7 getCharToProcess::y#1 init_angle_screen::y#5 init_angle_screen::y#1 ] reg byte a [ main::center_dist#0 ] -reg byte a [ processChars::$86 ] +zp[1]:21 [ processChars::$13 ] reg byte a [ processChars::$87 ] reg byte a [ processChars::$88 ] reg byte a [ processChars::$89 ] reg byte a [ processChars::$28 ] -zp[2]:21 [ processChars::processing#0 ] -zp[1]:23 [ processChars::bitmask#0 ] -zp[2]:24 [ processChars::xpos#0 processChars::$21 ] +zp[2]:22 [ processChars::processing#0 ] +zp[1]:24 [ processChars::bitmask#0 ] +zp[2]:25 [ processChars::xpos#0 processChars::$21 ] reg byte a [ processChars::$9 ] reg byte a [ processChars::$10 ] -reg byte x [ processChars::$13 ] -zp[2]:26 [ processChars::$12 ] -zp[1]:28 [ processChars::ypos#0 ] +zp[2]:27 [ processChars::$12 ] +zp[1]:29 [ processChars::ypos#0 ] reg byte a [ processChars::$73 ] reg byte a [ processChars::xchar#0 ] reg byte a [ processChars::$29 ] @@ -605,24 +603,24 @@ reg byte a [ processChars::$25 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$5 ] -zp[1]:29 [ init_angle_screen::ang_w#0 startProcessing::center_x#0 ] +zp[1]:30 [ init_angle_screen::ang_w#0 startProcessing::center_x#0 ] reg byte a [ init_angle_screen::$9 ] reg byte a [ init_angle_screen::$10 ] reg byte a [ init_angle_screen::$11 ] -zp[2]:30 [ getCharToProcess::$12 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ] +zp[2]:31 [ getCharToProcess::$12 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ] reg byte a [ startProcessing::$28 ] reg byte a [ startProcessing::$29 ] reg byte a [ startProcessing::$30 ] reg byte a [ startProcessing::$31 ] reg byte a [ startProcessing::$21 ] -zp[2]:32 [ startProcessing::$23 startProcessing::$34 startProcessing::$0 startProcessing::offset#0 startProcessing::screenPtr#0 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] -zp[2]:34 [ startProcessing::$33 atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] -zp[2]:36 [ startProcessing::colPtr#0 init_angle_screen::xw#0 atan2_16::x#0 ] -zp[1]:38 [ startProcessing::spriteCol#0 getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 init_angle_screen::x#2 init_angle_screen::x#1 ] +zp[2]:33 [ startProcessing::$23 startProcessing::$34 startProcessing::$0 startProcessing::offset#0 startProcessing::screenPtr#0 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] +zp[2]:35 [ startProcessing::$33 atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] +zp[2]:37 [ startProcessing::colPtr#0 init_angle_screen::xw#0 atan2_16::x#0 ] +zp[1]:39 [ startProcessing::spriteCol#0 getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 init_angle_screen::x#2 init_angle_screen::x#1 ] reg byte a [ startProcessing::ch#0 ] -zp[2]:39 [ startProcessing::$26 startProcessing::$8 startProcessing::$9 startProcessing::spriteX#0 init_angle_screen::yw#0 atan2_16::y#0 ] -zp[2]:41 [ startProcessing::$27 startProcessing::$11 startProcessing::$12 startProcessing::spriteY#0 getCharToProcess::$11 getCharToProcess::$13 getCharToProcess::$8 getCharToProcess::$9 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] -zp[1]:43 [ startProcessing::spritePtr#0 getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 init_angle_screen::xb#2 init_angle_screen::xb#1 ] +zp[2]:40 [ startProcessing::$26 startProcessing::$8 startProcessing::$9 startProcessing::spriteX#0 init_angle_screen::yw#0 atan2_16::y#0 ] +zp[2]:42 [ startProcessing::$27 startProcessing::$11 startProcessing::$12 startProcessing::spriteY#0 getCharToProcess::$11 getCharToProcess::$13 getCharToProcess::$8 getCharToProcess::$9 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] +zp[1]:44 [ startProcessing::spritePtr#0 getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte y [ startProcessing::$15 ] reg byte a [ startProcessing::$36 ] reg byte a [ startProcessing::$37 ] diff --git a/src/test/ref/complex/nes-balls/kickballs-2.asm b/src/test/ref/complex/nes-balls/kickballs-2.asm index 6386e9c3a..93ac2e66b 100644 --- a/src/test/ref/complex/nes-balls/kickballs-2.asm +++ b/src/test/ref/complex/nes-balls/kickballs-2.asm @@ -124,7 +124,6 @@ main: { .label __9 = $19 .label __10 = $19 .label __11 = $19 - .label __12 = $1b .label __20 = $c .label __23 = $e .label __25 = $10 @@ -369,11 +368,6 @@ main: { bcs __b9 !: // balls[i].x_velocity ^= 0xFFFF - lda.z i - asl - asl - asl - tay lda balls+4,y eor #<$ffff sta balls+4,y @@ -382,11 +376,6 @@ main: { sta balls+4+1,y __b9: // balls[i].y_position >> 8 - lda.z i - asl - asl - asl - tay lda #0 sta.z __23+1 lda balls+2+1,y @@ -413,11 +402,6 @@ main: { bcs __b10 !: // balls[i].y_velocity ^= 0xFFFF - lda.z i - asl - asl - asl - tay lda balls+6,y eor #<$ffff sta balls+6,y @@ -442,11 +426,6 @@ main: { sta balls+2+1,y __b10: // balls[i].y_position >> 8 - lda.z i - asl - asl - asl - tay lda #0 sta.z __32+1 lda balls+2+1,y @@ -506,14 +485,7 @@ main: { // rand() & 0x0FF lda #$ff and.z __11 - sta.z __12 // balls[i].y_velocity = rand() & 0x0FF - txa - asl - asl - asl - tay - lda.z __12 sta balls+6,y lda #0 sta balls+6+1,y @@ -618,9 +590,9 @@ ppuDataFill: { // Information https://en.wikipedia.org/wiki/Xorshift // Source http://www.retroprogramming.com/2017/07/xorshift-pseudorandom-numbers-in-z80.html rand: { - .label __0 = $1c - .label __1 = $1e - .label __2 = $20 + .label __0 = $1b + .label __1 = $1d + .label __2 = $1f .label return = $19 // rand_state << 7 lda.z rand_state+1 diff --git a/src/test/ref/complex/nes-balls/kickballs-2.cfg b/src/test/ref/complex/nes-balls/kickballs-2.cfg index 5bcd3f3e3..d966ea22b 100644 --- a/src/test/ref/complex/nes-balls/kickballs-2.cfg +++ b/src/test/ref/complex/nes-balls/kickballs-2.cfg @@ -149,140 +149,135 @@ main::@14: scope:[main] from main::@13 [68] *((byte*) 8193) ← (byte) $18 to:main::@3 main::@7: scope:[main] from main::@6 - [69] (byte~) main::$40 ← (byte) main::i#10 << (byte) 3 - [70] *((word*)(const struct $0*) balls + (byte~) main::$40) ← *((word*)(const struct $0*) balls + (byte~) main::$40) + *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$40) - [71] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) + (byte) $10 - [72] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$40) ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$40) + *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) - [73] (word~) main::$20 ← *((word*)(const struct $0*) balls + (byte~) main::$40) >> (byte) 8 + [69] (byte~) main::$44 ← (byte) main::i#10 << (byte) 3 + [70] *((word*)(const struct $0*) balls + (byte~) main::$44) ← *((word*)(const struct $0*) balls + (byte~) main::$44) + *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) + [71] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) + (byte) $10 + [72] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) + *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) + [73] (word~) main::$20 ← *((word*)(const struct $0*) balls + (byte~) main::$44) >> (byte) 8 [74] if((word~) main::$20>=(byte) 8) goto main::@9 to:main::@11 main::@11: scope:[main] from main::@7 - [75] (byte~) main::$45 ← (byte) main::i#10 << (byte) 3 - [76] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$45) ← *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$45) ^ (word) $ffff + [75] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) ^ (word) $ffff to:main::@9 main::@9: scope:[main] from main::@11 main::@7 - [77] (byte~) main::$44 ← (byte) main::i#10 << (byte) 3 - [78] (word~) main::$23 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 - [79] (word~) main::$25 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 - [80] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 - [81] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 + [76] (word~) main::$23 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 + [77] (word~) main::$25 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 + [78] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 + [79] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 to:main::@24 main::@24: scope:[main] from main::@9 - [82] if((word~) main::$25>=(byte~) main::$26) goto main::@10 + [80] if((word~) main::$25>=(byte~) main::$26) goto main::@10 to:main::@12 main::@12: scope:[main] from main::@24 - [83] (byte~) main::$53 ← (byte) main::i#10 << (byte) 3 - [84] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$53) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$53) ^ (word) $ffff - [85] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2 - [86] (word~) main::$56 ← (word)(byte~) main::$30 - [87] (word~) main::$31 ← (word~) main::$56 << (byte) 8 - [88] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$53) ← (word~) main::$31 + [81] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ^ (word) $ffff + [82] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2 + [83] (word~) main::$56 ← (word)(byte~) main::$30 + [84] (word~) main::$31 ← (word~) main::$56 << (byte) 8 + [85] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) ← (word~) main::$31 to:main::@10 main::@10: scope:[main] from main::@12 main::@24 main::@9 - [89] (byte~) main::$50 ← (byte) main::i#10 << (byte) 3 - [90] (word~) main::$32 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$50) >> (byte) 8 - [91] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 - [92] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 - [93] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a - [94] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 - [95] (word~) main::$33 ← *((word*)(const struct $0*) balls + (byte~) main::$50) >> (byte) 8 - [96] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 - [97] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3 - [98] (byte) main::i#4 ← ++ (byte) main::i#10 + [86] (word~) main::$32 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 + [87] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 + [88] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 + [89] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a + [90] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 + [91] (word~) main::$33 ← *((word*)(const struct $0*) balls + (byte~) main::$44) >> (byte) 8 + [92] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 + [93] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3 + [94] (byte) main::i#4 ← ++ (byte) main::i#10 to:main::@6 main::@25: scope:[main] from main::@15 - [99] (byte) main::timer#21 ← (byte) main::timer#1 + [95] (byte) main::timer#21 ← (byte) main::timer#1 to:main::@5 main::@2: scope:[main] from main::@1 - [100] phi() - [101] call rand - [102] (word) rand::return#2 ← (word) rand::return#0 + [96] phi() + [97] call rand + [98] (word) rand::return#2 ← (word) rand::return#0 to:main::@22 main::@22: scope:[main] from main::@2 - [103] (word~) main::$9 ← (word) rand::return#2 - [104] (word~) main::$10 ← (word~) main::$9 & (word) $3ff - [105] (byte~) main::$35 ← (byte) main::i#14 << (byte) 3 - [106] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$35) ← (word~) main::$10 - [107] call rand - [108] (word) rand::return#3 ← (word) rand::return#0 + [99] (word~) main::$9 ← (word) rand::return#2 + [100] (word~) main::$10 ← (word~) main::$9 & (word) $3ff + [101] (byte~) main::$36 ← (byte) main::i#14 << (byte) 3 + [102] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$36) ← (word~) main::$10 + [103] call rand + [104] (word) rand::return#3 ← (word) rand::return#0 to:main::@23 main::@23: scope:[main] from main::@22 - [109] (word~) main::$11 ← (word) rand::return#3 - [110] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff - [111] (byte~) main::$36 ← (byte) main::i#14 << (byte) 3 - [112] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$36) ← (byte~) main::$12 - [113] (byte) main::i#2 ← ++ (byte) main::i#14 + [105] (word~) main::$11 ← (word) rand::return#3 + [106] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff + [107] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$36) ← (byte~) main::$12 + [108] (byte) main::i#2 ← ++ (byte) main::i#14 to:main::@1 (void()) ppuDataTransfer((nomodify void*) ppuDataTransfer::ppuData , (nomodify void*) ppuDataTransfer::cpuData , (word) ppuDataTransfer::size) ppuDataTransfer: scope:[ppuDataTransfer] from main::@17 main::@21 - [114] (nomodify void*) ppuDataTransfer::cpuData#2 ← phi( main::@17/(void*)(const to_nomodify byte*) palette main::@21/(void*)(const to_nomodify byte*) h_bar_tilemap ) - [114] (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 ← phi( main::@17/(void*)(const nomodify byte*) PPU_PALETTE main::@21/(void*) 8256 ) + [109] (nomodify void*) ppuDataTransfer::cpuData#2 ← phi( main::@17/(void*)(const to_nomodify byte*) palette main::@21/(void*)(const to_nomodify byte*) h_bar_tilemap ) + [109] (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 ← phi( main::@17/(void*)(const nomodify byte*) PPU_PALETTE main::@21/(void*) 8256 ) to:ppuDataTransfer::ppuDataPrepare1 ppuDataTransfer::ppuDataPrepare1: scope:[ppuDataTransfer] from ppuDataTransfer - [115] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 - [116] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0 - [117] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 - [118] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1 + [110] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 + [111] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0 + [112] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 + [113] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1 to:ppuDataTransfer::@3 ppuDataTransfer::@3: scope:[ppuDataTransfer] from ppuDataTransfer::ppuDataPrepare1 - [119] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 + [114] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 to:ppuDataTransfer::@1 ppuDataTransfer::@1: scope:[ppuDataTransfer] from ppuDataTransfer::@3 ppuDataTransfer::@4 - [120] (byte*) ppuDataTransfer::cpuSrc#2 ← phi( ppuDataTransfer::@3/(byte*) ppuDataTransfer::cpuSrc#6 ppuDataTransfer::@4/(byte*) ppuDataTransfer::cpuSrc#1 ) - [120] (word) ppuDataTransfer::i#2 ← phi( ppuDataTransfer::@3/(word) 0 ppuDataTransfer::@4/(word) ppuDataTransfer::i#1 ) - [121] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 + [115] (byte*) ppuDataTransfer::cpuSrc#2 ← phi( ppuDataTransfer::@3/(byte*) ppuDataTransfer::cpuSrc#6 ppuDataTransfer::@4/(byte*) ppuDataTransfer::cpuSrc#1 ) + [115] (word) ppuDataTransfer::i#2 ← phi( ppuDataTransfer::@3/(word) 0 ppuDataTransfer::@4/(word) ppuDataTransfer::i#1 ) + [116] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 to:ppuDataTransfer::@return ppuDataTransfer::@return: scope:[ppuDataTransfer] from ppuDataTransfer::@1 - [122] return + [117] return to:@return ppuDataTransfer::@2: scope:[ppuDataTransfer] from ppuDataTransfer::@1 - [123] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) + [118] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) to:ppuDataTransfer::ppuDataPut1 ppuDataTransfer::ppuDataPut1: scope:[ppuDataTransfer] from ppuDataTransfer::@2 - [124] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0 + [119] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0 to:ppuDataTransfer::@4 ppuDataTransfer::@4: scope:[ppuDataTransfer] from ppuDataTransfer::ppuDataPut1 - [125] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2 - [126] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2 + [120] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2 + [121] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2 to:ppuDataTransfer::@1 (void()) ppuDataFill((nomodify void*) ppuDataFill::ppuData , (byte) ppuDataFill::val , (word) ppuDataFill::size) ppuDataFill: scope:[ppuDataFill] from main::@19 main::@20 - [127] (word) ppuDataFill::size#3 ← phi( main::@19/(word)(number) $20*(number) $1e main::@20/(byte) $40 ) - [127] (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 ← phi( main::@19/(void*)(const nomodify byte*) PPU_NAME_TABLE_0 main::@20/(void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 ) + [122] (word) ppuDataFill::size#3 ← phi( main::@19/(word)(number) $20*(number) $1e main::@20/(byte) $40 ) + [122] (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 ← phi( main::@19/(void*)(const nomodify byte*) PPU_NAME_TABLE_0 main::@20/(void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 ) to:ppuDataFill::ppuDataPrepare1 ppuDataFill::ppuDataPrepare1: scope:[ppuDataFill] from ppuDataFill - [128] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 - [129] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0 - [130] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 - [131] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1 + [123] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 + [124] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0 + [125] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 + [126] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1 to:ppuDataFill::@1 ppuDataFill::@1: scope:[ppuDataFill] from ppuDataFill::@2 ppuDataFill::ppuDataPrepare1 - [132] (word) ppuDataFill::i#2 ← phi( ppuDataFill::ppuDataPrepare1/(word) 0 ppuDataFill::@2/(word) ppuDataFill::i#1 ) - [133] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 + [127] (word) ppuDataFill::i#2 ← phi( ppuDataFill::ppuDataPrepare1/(word) 0 ppuDataFill::@2/(word) ppuDataFill::i#1 ) + [128] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 to:ppuDataFill::@return ppuDataFill::@return: scope:[ppuDataFill] from ppuDataFill::@1 - [134] return + [129] return to:@return ppuDataFill::ppuDataPut1: scope:[ppuDataFill] from ppuDataFill::@1 - [135] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 + [130] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 to:ppuDataFill::@2 ppuDataFill::@2: scope:[ppuDataFill] from ppuDataFill::ppuDataPut1 - [136] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2 + [131] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2 to:ppuDataFill::@1 (word()) rand() rand: scope:[rand] from main::@2 main::@22 - [137] (word) rand_state#10 ← phi( main::@2/(word) rand_state#17 main::@22/(word) rand_state#11 ) - [138] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 - [139] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 - [140] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 - [141] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 - [142] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 - [143] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 - [144] (word) rand::return#0 ← (word) rand_state#11 + [132] (word) rand_state#10 ← phi( main::@2/(word) rand_state#17 main::@22/(word) rand_state#11 ) + [133] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 + [134] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 + [135] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 + [136] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 + [137] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 + [138] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 + [139] (word) rand::return#0 ← (word) rand_state#11 to:rand::@return rand::@return: scope:[rand] from rand - [145] return + [140] return to:@return diff --git a/src/test/ref/complex/nes-balls/kickballs-2.log b/src/test/ref/complex/nes-balls/kickballs-2.log index f40278393..0af468e97 100644 --- a/src/test/ref/complex/nes-balls/kickballs-2.log +++ b/src/test/ref/complex/nes-balls/kickballs-2.log @@ -1779,9 +1779,20 @@ Alias candidate removed (volatile)scroll_y = main::$14 Identical Phi Values (byte) ppuDataFill::val#4 (byte) 0 Identical Phi Values (word) ppuDataTransfer::size#3 (byte) $20*(const byte) SIZEOF_BYTE Successful SSA optimization Pass2IdenticalPhiElimination +Identified duplicate assignment right side [72] (byte~) main::$36 ← (byte) main::i#14 << (byte) 3 +Identified duplicate assignment right side [97] (byte~) main::$44 ← (byte) main::i#10 << (byte) 3 +Identified duplicate assignment right side [102] (byte~) main::$45 ← (byte) main::i#10 << (byte) 3 +Identified duplicate assignment right side [104] (byte~) main::$50 ← (byte) main::i#10 << (byte) 3 +Identified duplicate assignment right side [114] (byte~) main::$53 ← (byte) main::i#10 << (byte) 3 +Successful SSA optimization Pass2DuplicateRValueIdentification Eliminating unused constant (const byte) SIZEOF_STRUCT_SPRITEDATA Successful SSA optimization PassNEliminateUnusedVars Alias candidate removed (volatile)scroll_y = main::$14 +Alias main::$36 = main::$35 +Alias main::$44 = main::$40 main::$45 main::$50 main::$53 +Successful SSA optimization Pass2AliasElimination +Alias candidate removed (volatile)scroll_y = main::$14 +Alias candidate removed (volatile)scroll_y = main::$14 Added new block during phi lifting main::@27(between main::initNES1_@1 and main::initNES1_@1) Added new block during phi lifting main::@28(between main::@16 and main::@6) Added new block during phi lifting main::@29(between main::@4 and main::@6) @@ -1801,27 +1812,27 @@ Adding NOP phi() at start of ppuDataFill::@3 Adding NOP phi() at start of ppuDataFill::@2 CALL GRAPH Calls in [__start] to main:4 -Calls in [main] to ppuDataTransfer:40 ppuDataFill:42 ppuDataFill:44 ppuDataTransfer:46 rand:113 rand:120 +Calls in [main] to ppuDataTransfer:40 ppuDataFill:42 ppuDataFill:44 ppuDataTransfer:46 rand:109 rand:116 Created 18 initial phi equivalence classes Coalesced [65] main::active_balls#22 ← main::active_balls#1 Coalesced [73] main::timer_2#20 ← main::timer_2#1 Coalesced [74] main::active_balls#20 ← main::active_balls#8 Coalesced [75] main::timer#20 ← main::timer#15 -Coalesced [106] main::i#16 ← main::i#4 -Coalesced [107] main::sprite_idx#9 ← main::sprite_idx#2 -Coalesced (already) [108] main::active_balls#21 ← main::active_balls#2 -Not coalescing [109] main::timer#21 ← main::timer#1 -Coalesced (already) [110] main::active_balls#23 ← main::active_balls#2 -Coalesced (already) [111] main::timer#22 ← main::timer#3 -Coalesced [112] rand_state#54 ← rand_state#17 -Coalesced [119] rand_state#55 ← rand_state#11 -Coalesced [127] main::i#15 ← main::i#2 -Coalesced (already) [128] rand_state#56 ← rand_state#11 -Coalesced [129] main::initNES1_i#3 ← main::initNES1_i#1 -Coalesced [143] ppuDataTransfer::i#6 ← ppuDataTransfer::i#1 -Coalesced [144] ppuDataTransfer::cpuSrc#7 ← ppuDataTransfer::cpuSrc#1 -Coalesced [157] ppuDataFill::i#6 ← ppuDataFill::i#1 +Coalesced [102] main::i#16 ← main::i#4 +Coalesced [103] main::sprite_idx#9 ← main::sprite_idx#2 +Coalesced (already) [104] main::active_balls#21 ← main::active_balls#2 +Not coalescing [105] main::timer#21 ← main::timer#1 +Coalesced (already) [106] main::active_balls#23 ← main::active_balls#2 +Coalesced (already) [107] main::timer#22 ← main::timer#3 +Coalesced [108] rand_state#54 ← rand_state#17 +Coalesced [115] rand_state#55 ← rand_state#11 +Coalesced [122] main::i#15 ← main::i#2 +Coalesced (already) [123] rand_state#56 ← rand_state#11 +Coalesced [124] main::initNES1_i#3 ← main::initNES1_i#1 +Coalesced [138] ppuDataTransfer::i#6 ← ppuDataTransfer::i#1 +Coalesced [139] ppuDataTransfer::cpuSrc#7 ← ppuDataTransfer::cpuSrc#1 +Coalesced [152] ppuDataFill::i#6 ← ppuDataFill::i#1 Coalesced down to 16 phi equivalence classes Culled Empty Block (label) __start::@2 Culled Empty Block (label) main::initNES1_@6 @@ -2015,142 +2026,137 @@ main::@14: scope:[main] from main::@13 [68] *((byte*) 8193) ← (byte) $18 to:main::@3 main::@7: scope:[main] from main::@6 - [69] (byte~) main::$40 ← (byte) main::i#10 << (byte) 3 - [70] *((word*)(const struct $0*) balls + (byte~) main::$40) ← *((word*)(const struct $0*) balls + (byte~) main::$40) + *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$40) - [71] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) + (byte) $10 - [72] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$40) ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$40) + *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) - [73] (word~) main::$20 ← *((word*)(const struct $0*) balls + (byte~) main::$40) >> (byte) 8 + [69] (byte~) main::$44 ← (byte) main::i#10 << (byte) 3 + [70] *((word*)(const struct $0*) balls + (byte~) main::$44) ← *((word*)(const struct $0*) balls + (byte~) main::$44) + *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) + [71] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) + (byte) $10 + [72] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) + *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) + [73] (word~) main::$20 ← *((word*)(const struct $0*) balls + (byte~) main::$44) >> (byte) 8 [74] if((word~) main::$20>=(byte) 8) goto main::@9 to:main::@11 main::@11: scope:[main] from main::@7 - [75] (byte~) main::$45 ← (byte) main::i#10 << (byte) 3 - [76] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$45) ← *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$45) ^ (word) $ffff + [75] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) ^ (word) $ffff to:main::@9 main::@9: scope:[main] from main::@11 main::@7 - [77] (byte~) main::$44 ← (byte) main::i#10 << (byte) 3 - [78] (word~) main::$23 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 - [79] (word~) main::$25 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 - [80] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 - [81] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 + [76] (word~) main::$23 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 + [77] (word~) main::$25 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 + [78] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 + [79] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 to:main::@24 main::@24: scope:[main] from main::@9 - [82] if((word~) main::$25>=(byte~) main::$26) goto main::@10 + [80] if((word~) main::$25>=(byte~) main::$26) goto main::@10 to:main::@12 main::@12: scope:[main] from main::@24 - [83] (byte~) main::$53 ← (byte) main::i#10 << (byte) 3 - [84] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$53) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$53) ^ (word) $ffff - [85] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2 - [86] (word~) main::$56 ← (word)(byte~) main::$30 - [87] (word~) main::$31 ← (word~) main::$56 << (byte) 8 - [88] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$53) ← (word~) main::$31 + [81] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ^ (word) $ffff + [82] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2 + [83] (word~) main::$56 ← (word)(byte~) main::$30 + [84] (word~) main::$31 ← (word~) main::$56 << (byte) 8 + [85] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) ← (word~) main::$31 to:main::@10 main::@10: scope:[main] from main::@12 main::@24 main::@9 - [89] (byte~) main::$50 ← (byte) main::i#10 << (byte) 3 - [90] (word~) main::$32 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$50) >> (byte) 8 - [91] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 - [92] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 - [93] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a - [94] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 - [95] (word~) main::$33 ← *((word*)(const struct $0*) balls + (byte~) main::$50) >> (byte) 8 - [96] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 - [97] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3 - [98] (byte) main::i#4 ← ++ (byte) main::i#10 + [86] (word~) main::$32 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 + [87] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 + [88] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 + [89] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a + [90] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 + [91] (word~) main::$33 ← *((word*)(const struct $0*) balls + (byte~) main::$44) >> (byte) 8 + [92] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 + [93] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3 + [94] (byte) main::i#4 ← ++ (byte) main::i#10 to:main::@6 main::@25: scope:[main] from main::@15 - [99] (byte) main::timer#21 ← (byte) main::timer#1 + [95] (byte) main::timer#21 ← (byte) main::timer#1 to:main::@5 main::@2: scope:[main] from main::@1 - [100] phi() - [101] call rand - [102] (word) rand::return#2 ← (word) rand::return#0 + [96] phi() + [97] call rand + [98] (word) rand::return#2 ← (word) rand::return#0 to:main::@22 main::@22: scope:[main] from main::@2 - [103] (word~) main::$9 ← (word) rand::return#2 - [104] (word~) main::$10 ← (word~) main::$9 & (word) $3ff - [105] (byte~) main::$35 ← (byte) main::i#14 << (byte) 3 - [106] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$35) ← (word~) main::$10 - [107] call rand - [108] (word) rand::return#3 ← (word) rand::return#0 + [99] (word~) main::$9 ← (word) rand::return#2 + [100] (word~) main::$10 ← (word~) main::$9 & (word) $3ff + [101] (byte~) main::$36 ← (byte) main::i#14 << (byte) 3 + [102] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$36) ← (word~) main::$10 + [103] call rand + [104] (word) rand::return#3 ← (word) rand::return#0 to:main::@23 main::@23: scope:[main] from main::@22 - [109] (word~) main::$11 ← (word) rand::return#3 - [110] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff - [111] (byte~) main::$36 ← (byte) main::i#14 << (byte) 3 - [112] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$36) ← (byte~) main::$12 - [113] (byte) main::i#2 ← ++ (byte) main::i#14 + [105] (word~) main::$11 ← (word) rand::return#3 + [106] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff + [107] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$36) ← (byte~) main::$12 + [108] (byte) main::i#2 ← ++ (byte) main::i#14 to:main::@1 (void()) ppuDataTransfer((nomodify void*) ppuDataTransfer::ppuData , (nomodify void*) ppuDataTransfer::cpuData , (word) ppuDataTransfer::size) ppuDataTransfer: scope:[ppuDataTransfer] from main::@17 main::@21 - [114] (nomodify void*) ppuDataTransfer::cpuData#2 ← phi( main::@17/(void*)(const to_nomodify byte*) palette main::@21/(void*)(const to_nomodify byte*) h_bar_tilemap ) - [114] (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 ← phi( main::@17/(void*)(const nomodify byte*) PPU_PALETTE main::@21/(void*) 8256 ) + [109] (nomodify void*) ppuDataTransfer::cpuData#2 ← phi( main::@17/(void*)(const to_nomodify byte*) palette main::@21/(void*)(const to_nomodify byte*) h_bar_tilemap ) + [109] (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 ← phi( main::@17/(void*)(const nomodify byte*) PPU_PALETTE main::@21/(void*) 8256 ) to:ppuDataTransfer::ppuDataPrepare1 ppuDataTransfer::ppuDataPrepare1: scope:[ppuDataTransfer] from ppuDataTransfer - [115] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 - [116] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0 - [117] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 - [118] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1 + [110] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 + [111] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0 + [112] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 + [113] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1 to:ppuDataTransfer::@3 ppuDataTransfer::@3: scope:[ppuDataTransfer] from ppuDataTransfer::ppuDataPrepare1 - [119] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 + [114] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 to:ppuDataTransfer::@1 ppuDataTransfer::@1: scope:[ppuDataTransfer] from ppuDataTransfer::@3 ppuDataTransfer::@4 - [120] (byte*) ppuDataTransfer::cpuSrc#2 ← phi( ppuDataTransfer::@3/(byte*) ppuDataTransfer::cpuSrc#6 ppuDataTransfer::@4/(byte*) ppuDataTransfer::cpuSrc#1 ) - [120] (word) ppuDataTransfer::i#2 ← phi( ppuDataTransfer::@3/(word) 0 ppuDataTransfer::@4/(word) ppuDataTransfer::i#1 ) - [121] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 + [115] (byte*) ppuDataTransfer::cpuSrc#2 ← phi( ppuDataTransfer::@3/(byte*) ppuDataTransfer::cpuSrc#6 ppuDataTransfer::@4/(byte*) ppuDataTransfer::cpuSrc#1 ) + [115] (word) ppuDataTransfer::i#2 ← phi( ppuDataTransfer::@3/(word) 0 ppuDataTransfer::@4/(word) ppuDataTransfer::i#1 ) + [116] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 to:ppuDataTransfer::@return ppuDataTransfer::@return: scope:[ppuDataTransfer] from ppuDataTransfer::@1 - [122] return + [117] return to:@return ppuDataTransfer::@2: scope:[ppuDataTransfer] from ppuDataTransfer::@1 - [123] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) + [118] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) to:ppuDataTransfer::ppuDataPut1 ppuDataTransfer::ppuDataPut1: scope:[ppuDataTransfer] from ppuDataTransfer::@2 - [124] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0 + [119] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0 to:ppuDataTransfer::@4 ppuDataTransfer::@4: scope:[ppuDataTransfer] from ppuDataTransfer::ppuDataPut1 - [125] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2 - [126] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2 + [120] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2 + [121] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2 to:ppuDataTransfer::@1 (void()) ppuDataFill((nomodify void*) ppuDataFill::ppuData , (byte) ppuDataFill::val , (word) ppuDataFill::size) ppuDataFill: scope:[ppuDataFill] from main::@19 main::@20 - [127] (word) ppuDataFill::size#3 ← phi( main::@19/(word)(number) $20*(number) $1e main::@20/(byte) $40 ) - [127] (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 ← phi( main::@19/(void*)(const nomodify byte*) PPU_NAME_TABLE_0 main::@20/(void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 ) + [122] (word) ppuDataFill::size#3 ← phi( main::@19/(word)(number) $20*(number) $1e main::@20/(byte) $40 ) + [122] (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 ← phi( main::@19/(void*)(const nomodify byte*) PPU_NAME_TABLE_0 main::@20/(void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 ) to:ppuDataFill::ppuDataPrepare1 ppuDataFill::ppuDataPrepare1: scope:[ppuDataFill] from ppuDataFill - [128] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 - [129] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0 - [130] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 - [131] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1 + [123] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 + [124] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0 + [125] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 + [126] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1 to:ppuDataFill::@1 ppuDataFill::@1: scope:[ppuDataFill] from ppuDataFill::@2 ppuDataFill::ppuDataPrepare1 - [132] (word) ppuDataFill::i#2 ← phi( ppuDataFill::ppuDataPrepare1/(word) 0 ppuDataFill::@2/(word) ppuDataFill::i#1 ) - [133] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 + [127] (word) ppuDataFill::i#2 ← phi( ppuDataFill::ppuDataPrepare1/(word) 0 ppuDataFill::@2/(word) ppuDataFill::i#1 ) + [128] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 to:ppuDataFill::@return ppuDataFill::@return: scope:[ppuDataFill] from ppuDataFill::@1 - [134] return + [129] return to:@return ppuDataFill::ppuDataPut1: scope:[ppuDataFill] from ppuDataFill::@1 - [135] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 + [130] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 to:ppuDataFill::@2 ppuDataFill::@2: scope:[ppuDataFill] from ppuDataFill::ppuDataPut1 - [136] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2 + [131] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2 to:ppuDataFill::@1 (word()) rand() rand: scope:[rand] from main::@2 main::@22 - [137] (word) rand_state#10 ← phi( main::@2/(word) rand_state#17 main::@22/(word) rand_state#11 ) - [138] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 - [139] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 - [140] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 - [141] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 - [142] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 - [143] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 - [144] (word) rand::return#0 ← (word) rand_state#11 + [132] (word) rand_state#10 ← phi( main::@2/(word) rand_state#17 main::@22/(word) rand_state#11 ) + [133] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 + [134] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 + [135] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 + [136] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 + [137] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 + [138] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 + [139] (word) rand::return#0 ← (word) rand_state#11 to:rand::@return rand::@return: scope:[rand] from rand - [145] return + [140] return to:@return @@ -2199,7 +2205,7 @@ VARIABLE REGISTER WEIGHTS (signed word()) main() (word~) main::$10 101.0 (word~) main::$11 202.0 -(byte~) main::$12 101.0 +(byte~) main::$12 202.0 (byte~) main::$14 202.0 (word~) main::$20 2002.0 (word~) main::$23 667.3333333333334 @@ -2209,26 +2215,21 @@ VARIABLE REGISTER WEIGHTS (word~) main::$31 2002.0 (word~) main::$32 500.5 (word~) main::$33 1001.0 -(byte~) main::$35 202.0 -(byte~) main::$36 202.0 +(byte~) main::$36 50.5 (byte~) main::$38 151.5 -(byte~) main::$40 2502.5 -(byte~) main::$44 1501.5 -(byte~) main::$45 3003.0 +(byte~) main::$44 864.5 (byte~) main::$48 1001.0 -(byte~) main::$50 500.5 -(byte~) main::$53 800.8 (word~) main::$56 2002.0 (word~) main::$9 202.0 (byte) main::active_balls (byte) main::active_balls#1 75.75 (byte) main::active_balls#2 56.11111111111111 -(byte) main::active_balls#8 37.97297297297297 +(byte) main::active_balls#8 42.57575757575758 (byte) main::h_bar -(byte) main::h_bar#1 72.8409090909091 +(byte) main::h_bar#1 80.125 (byte) main::i -(byte) main::i#10 258.3225806451613 -(byte) main::i#14 33.666666666666664 +(byte) main::i#10 148.2962962962963 +(byte) main::i#14 28.857142857142858 (byte) main::i#2 202.0 (byte) main::i#4 2002.0 (byte) main::initNES1_i @@ -2239,14 +2240,14 @@ VARIABLE REGISTER WEIGHTS (signed word) main::return (byte) main::sprite_idx (byte) main::sprite_idx#2 1001.0 -(byte) main::sprite_idx#3 100.1 +(byte) main::sprite_idx#3 115.5 (byte) main::timer (byte) main::timer#1 101.0 -(byte) main::timer#15 8.18918918918919 +(byte) main::timer#15 9.181818181818182 (byte) main::timer#21 202.0 (byte) main::timer#3 57.714285714285715 (byte) main::timer_2 -(byte) main::timer_2#1 6.183673469387754 +(byte) main::timer_2#1 6.733333333333333 (byte) main::timer_2#2 202.0 (void()) ppuDataFill((nomodify void*) ppuDataFill::ppuData , (byte) ppuDataFill::val , (word) ppuDataFill::size) (word) ppuDataFill::i @@ -2300,12 +2301,12 @@ VARIABLE REGISTER WEIGHTS (word) rand_state#0 1501.5 (word) rand_state#1 1501.5 (word) rand_state#10 1102.0 -(word) rand_state#11 137.75 +(word) rand_state#11 146.93333333333334 (word) rand_state#17 67.33333333333333 (volatile byte) scroll_y loadstore 105.0 interrupt(HARDWARE_STACK)(void()) vblank() (struct SpriteData*) vblank::ppuSpriteBufferDmaTransfer1_spriteBuffer -(volatile byte) vblank_hit loadstore 10.25925925925926 +(volatile byte) vblank_hit loadstore 10.757281553398059 Initial phi equivalence classes [ main::initNES1_i#2 main::initNES1_i#1 ] @@ -2331,29 +2332,24 @@ Added variable main::h_bar#1 to live range equivalence class [ main::h_bar#1 ] Added variable main::$14 to live range equivalence class [ main::$14 ] Added variable main::timer#1 to live range equivalence class [ main::timer#1 ] Added variable main::$38 to live range equivalence class [ main::$38 ] -Added variable main::$40 to live range equivalence class [ main::$40 ] -Added variable main::$20 to live range equivalence class [ main::$20 ] -Added variable main::$45 to live range equivalence class [ main::$45 ] Added variable main::$44 to live range equivalence class [ main::$44 ] +Added variable main::$20 to live range equivalence class [ main::$20 ] Added variable main::$23 to live range equivalence class [ main::$23 ] Added variable main::$25 to live range equivalence class [ main::$25 ] Added variable main::$26 to live range equivalence class [ main::$26 ] -Added variable main::$53 to live range equivalence class [ main::$53 ] Added variable main::$30 to live range equivalence class [ main::$30 ] Added variable main::$56 to live range equivalence class [ main::$56 ] Added variable main::$31 to live range equivalence class [ main::$31 ] -Added variable main::$50 to live range equivalence class [ main::$50 ] Added variable main::$32 to live range equivalence class [ main::$32 ] Added variable main::$48 to live range equivalence class [ main::$48 ] Added variable main::$33 to live range equivalence class [ main::$33 ] Added variable rand::return#2 to live range equivalence class [ rand::return#2 ] Added variable main::$9 to live range equivalence class [ main::$9 ] Added variable main::$10 to live range equivalence class [ main::$10 ] -Added variable main::$35 to live range equivalence class [ main::$35 ] +Added variable main::$36 to live range equivalence class [ main::$36 ] Added variable rand::return#3 to live range equivalence class [ rand::return#3 ] Added variable main::$11 to live range equivalence class [ main::$11 ] Added variable main::$12 to live range equivalence class [ main::$12 ] -Added variable main::$36 to live range equivalence class [ main::$36 ] Added variable ppuDataTransfer::ppuDataPrepare1_$0 to live range equivalence class [ ppuDataTransfer::ppuDataPrepare1_$0 ] Added variable ppuDataTransfer::ppuDataPrepare1_$1 to live range equivalence class [ ppuDataTransfer::ppuDataPrepare1_$1 ] Added variable ppuDataTransfer::ppuDataPut1_val#0 to live range equivalence class [ ppuDataTransfer::ppuDataPut1_val#0 ] @@ -2389,29 +2385,24 @@ Complete equivalence classes [ main::$14 ] [ main::timer#1 ] [ main::$38 ] -[ main::$40 ] -[ main::$20 ] -[ main::$45 ] [ main::$44 ] +[ main::$20 ] [ main::$23 ] [ main::$25 ] [ main::$26 ] -[ main::$53 ] [ main::$30 ] [ main::$56 ] [ main::$31 ] -[ main::$50 ] [ main::$32 ] [ main::$48 ] [ main::$33 ] [ rand::return#2 ] [ main::$9 ] [ main::$10 ] -[ main::$35 ] +[ main::$36 ] [ rand::return#3 ] [ main::$11 ] [ main::$12 ] -[ main::$36 ] [ ppuDataTransfer::ppuDataPrepare1_$0 ] [ ppuDataTransfer::ppuDataPrepare1_$1 ] [ ppuDataTransfer::ppuDataPut1_val#0 ] @@ -2446,40 +2437,35 @@ Allocated zp[1]:29 [ main::h_bar#1 ] Allocated zp[1]:30 [ main::$14 ] Allocated zp[1]:31 [ main::timer#1 ] Allocated zp[1]:32 [ main::$38 ] -Allocated zp[1]:33 [ main::$40 ] +Allocated zp[1]:33 [ main::$44 ] Allocated zp[2]:34 [ main::$20 ] -Allocated zp[1]:36 [ main::$45 ] -Allocated zp[1]:37 [ main::$44 ] -Allocated zp[2]:38 [ main::$23 ] -Allocated zp[2]:40 [ main::$25 ] -Allocated zp[1]:42 [ main::$26 ] -Allocated zp[1]:43 [ main::$53 ] -Allocated zp[1]:44 [ main::$30 ] -Allocated zp[2]:45 [ main::$56 ] -Allocated zp[2]:47 [ main::$31 ] -Allocated zp[1]:49 [ main::$50 ] -Allocated zp[2]:50 [ main::$32 ] -Allocated zp[1]:52 [ main::$48 ] -Allocated zp[2]:53 [ main::$33 ] -Allocated zp[2]:55 [ rand::return#2 ] -Allocated zp[2]:57 [ main::$9 ] -Allocated zp[2]:59 [ main::$10 ] -Allocated zp[1]:61 [ main::$35 ] -Allocated zp[2]:62 [ rand::return#3 ] -Allocated zp[2]:64 [ main::$11 ] -Allocated zp[1]:66 [ main::$12 ] -Allocated zp[1]:67 [ main::$36 ] -Allocated zp[1]:68 [ ppuDataTransfer::ppuDataPrepare1_$0 ] -Allocated zp[1]:69 [ ppuDataTransfer::ppuDataPrepare1_$1 ] -Allocated zp[1]:70 [ ppuDataTransfer::ppuDataPut1_val#0 ] -Allocated zp[1]:71 [ ppuDataFill::ppuDataPrepare1_$0 ] -Allocated zp[1]:72 [ ppuDataFill::ppuDataPrepare1_$1 ] -Allocated zp[2]:73 [ rand::$0 ] -Allocated zp[2]:75 [ rand_state#0 ] -Allocated zp[2]:77 [ rand::$1 ] -Allocated zp[2]:79 [ rand_state#1 ] -Allocated zp[2]:81 [ rand::$2 ] -Allocated zp[2]:83 [ rand::return#0 ] +Allocated zp[2]:36 [ main::$23 ] +Allocated zp[2]:38 [ main::$25 ] +Allocated zp[1]:40 [ main::$26 ] +Allocated zp[1]:41 [ main::$30 ] +Allocated zp[2]:42 [ main::$56 ] +Allocated zp[2]:44 [ main::$31 ] +Allocated zp[2]:46 [ main::$32 ] +Allocated zp[1]:48 [ main::$48 ] +Allocated zp[2]:49 [ main::$33 ] +Allocated zp[2]:51 [ rand::return#2 ] +Allocated zp[2]:53 [ main::$9 ] +Allocated zp[2]:55 [ main::$10 ] +Allocated zp[1]:57 [ main::$36 ] +Allocated zp[2]:58 [ rand::return#3 ] +Allocated zp[2]:60 [ main::$11 ] +Allocated zp[1]:62 [ main::$12 ] +Allocated zp[1]:63 [ ppuDataTransfer::ppuDataPrepare1_$0 ] +Allocated zp[1]:64 [ ppuDataTransfer::ppuDataPrepare1_$1 ] +Allocated zp[1]:65 [ ppuDataTransfer::ppuDataPut1_val#0 ] +Allocated zp[1]:66 [ ppuDataFill::ppuDataPrepare1_$0 ] +Allocated zp[1]:67 [ ppuDataFill::ppuDataPrepare1_$1 ] +Allocated zp[2]:68 [ rand::$0 ] +Allocated zp[2]:70 [ rand_state#0 ] +Allocated zp[2]:72 [ rand::$1 ] +Allocated zp[2]:74 [ rand_state#1 ] +Allocated zp[2]:76 [ rand::$2 ] +Allocated zp[2]:78 [ rand::return#0 ] INITIAL ASM Target platform is nes / MOS6502X @@ -2567,9 +2553,9 @@ Target platform is nes / MOS6502X .label scroll_y = $19 .label vblank_hit = $1a // The random state variable - .label rand_state = $4b + .label rand_state = $46 // The random state variable - .label rand_state_1 = $4f + .label rand_state_1 = $4a // The random state variable .label rand_state_2 = $17 .segment Code @@ -2642,29 +2628,24 @@ vblank: { } // main main: { - .label __9 = $39 - .label __10 = $3b - .label __11 = $40 - .label __12 = $42 + .label __9 = $35 + .label __10 = $37 + .label __11 = $3c + .label __12 = $3e .label __14 = $1e .label __20 = $22 - .label __23 = $26 - .label __25 = $28 - .label __26 = $2a - .label __30 = $2c - .label __31 = $2f - .label __32 = $32 - .label __33 = $35 - .label __35 = $3d - .label __36 = $43 + .label __23 = $24 + .label __25 = $26 + .label __26 = $28 + .label __30 = $29 + .label __31 = $2c + .label __32 = $2e + .label __33 = $31 + .label __36 = $39 .label __38 = $20 - .label __40 = $21 - .label __44 = $25 - .label __45 = $24 - .label __48 = $34 - .label __50 = $31 - .label __53 = $2b - .label __56 = $2d + .label __44 = $21 + .label __48 = $30 + .label __56 = $2a .label initNES1_waitForVBlank1___0 = $1b .label initNES1_waitForVBlank2___0 = $1c .label initNES1_i = 2 @@ -2800,14 +2781,14 @@ main: { __b17: // [38] call ppuDataTransfer // Transfer the palette - // [114] phi from main::@17 to ppuDataTransfer [phi:main::@17->ppuDataTransfer] + // [109] phi from main::@17 to ppuDataTransfer [phi:main::@17->ppuDataTransfer] ppuDataTransfer_from___b17: - // [114] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) palette [phi:main::@17->ppuDataTransfer#0] -- pvoz1=pvoc1 + // [109] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) palette [phi:main::@17->ppuDataTransfer#0] -- pvoz1=pvoc1 lda #palette sta.z ppuDataTransfer.cpuData+1 - // [114] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_PALETTE [phi:main::@17->ppuDataTransfer#1] -- pvoz1=pvoc1 + // [109] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_PALETTE [phi:main::@17->ppuDataTransfer#1] -- pvoz1=pvoc1 lda #PPU_PALETTE @@ -2820,14 +2801,14 @@ main: { __b19: // [40] call ppuDataFill // Fill the PPU attribute table - // [127] phi from main::@19 to ppuDataFill [phi:main::@19->ppuDataFill] + // [122] phi from main::@19 to ppuDataFill [phi:main::@19->ppuDataFill] ppuDataFill_from___b19: - // [127] phi (word) ppuDataFill::size#3 = (word)(number) $20*(number) $1e [phi:main::@19->ppuDataFill#0] -- vwuz1=vwuc1 + // [122] phi (word) ppuDataFill::size#3 = (word)(number) $20*(number) $1e [phi:main::@19->ppuDataFill#0] -- vwuz1=vwuc1 lda #<$20*$1e sta.z ppuDataFill.size lda #>$20*$1e sta.z ppuDataFill.size+1 - // [127] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_NAME_TABLE_0 [phi:main::@19->ppuDataFill#1] -- pvoz1=pvoc1 + // [122] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_NAME_TABLE_0 [phi:main::@19->ppuDataFill#1] -- pvoz1=pvoc1 lda #PPU_NAME_TABLE_0 @@ -2839,14 +2820,14 @@ main: { // main::@20 __b20: // [42] call ppuDataFill - // [127] phi from main::@20 to ppuDataFill [phi:main::@20->ppuDataFill] + // [122] phi from main::@20 to ppuDataFill [phi:main::@20->ppuDataFill] ppuDataFill_from___b20: - // [127] phi (word) ppuDataFill::size#3 = (byte) $40 [phi:main::@20->ppuDataFill#0] -- vwuz1=vbuc1 + // [122] phi (word) ppuDataFill::size#3 = (byte) $40 [phi:main::@20->ppuDataFill#0] -- vwuz1=vbuc1 lda #<$40 sta.z ppuDataFill.size lda #>$40 sta.z ppuDataFill.size+1 - // [127] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 [phi:main::@20->ppuDataFill#1] -- pvoz1=pvoc1 + // [122] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 [phi:main::@20->ppuDataFill#1] -- pvoz1=pvoc1 lda #PPU_ATTRIBUTE_TABLE_0 @@ -2858,14 +2839,14 @@ main: { // main::@21 __b21: // [44] call ppuDataTransfer - // [114] phi from main::@21 to ppuDataTransfer [phi:main::@21->ppuDataTransfer] + // [109] phi from main::@21 to ppuDataTransfer [phi:main::@21->ppuDataTransfer] ppuDataTransfer_from___b21: - // [114] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) h_bar_tilemap [phi:main::@21->ppuDataTransfer#0] -- pvoz1=pvoc1 + // [109] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) h_bar_tilemap [phi:main::@21->ppuDataTransfer#0] -- pvoz1=pvoc1 lda #h_bar_tilemap sta.z ppuDataTransfer.cpuData+1 - // [114] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*) 8256 [phi:main::@21->ppuDataTransfer#1] -- pvoz1=pvoc1 + // [109] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*) 8256 [phi:main::@21->ppuDataTransfer#1] -- pvoz1=pvoc1 lda #<$2040 sta.z ppuDataTransfer.ppuDataPrepare1_ppuData lda #>$2040 @@ -3035,14 +3016,14 @@ main: { jmp __b3 // main::@7 __b7: - // [69] (byte~) main::$40 ← (byte) main::i#10 << (byte) 3 -- vbuz1=vbuz2_rol_3 + // [69] (byte~) main::$44 ← (byte) main::i#10 << (byte) 3 -- vbuz1=vbuz2_rol_3 lda.z i_1 asl asl asl - sta.z __40 - // [70] *((word*)(const struct $0*) balls + (byte~) main::$40) ← *((word*)(const struct $0*) balls + (byte~) main::$40) + *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$40) -- pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_plus_pwuc2_derefidx_vbuz1 - ldy.z __40 + sta.z __44 + // [70] *((word*)(const struct $0*) balls + (byte~) main::$44) ← *((word*)(const struct $0*) balls + (byte~) main::$44) + *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) -- pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_plus_pwuc2_derefidx_vbuz1 + ldy.z __44 clc lda balls,y adc balls+4,y @@ -3050,8 +3031,8 @@ main: { lda balls+1,y adc balls+4+1,y sta balls+1,y - // [71] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) + (byte) $10 -- pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_plus_vbuc2 - ldy.z __40 + // [71] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) + (byte) $10 -- pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_plus_vbuc2 + ldy.z __44 clc lda balls+6,y adc #$10 @@ -3059,8 +3040,8 @@ main: { lda balls+6+1,y adc #0 sta balls+6+1,y - // [72] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$40) ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$40) + *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) -- pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_plus_pwuc2_derefidx_vbuz1 - ldy.z __40 + // [72] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) + *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) -- pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_plus_pwuc2_derefidx_vbuz1 + ldy.z __44 clc lda balls+2,y adc balls+6,y @@ -3068,8 +3049,8 @@ main: { lda balls+2+1,y adc balls+6+1,y sta balls+2+1,y - // [73] (word~) main::$20 ← *((word*)(const struct $0*) balls + (byte~) main::$40) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuz2_ror_8 - ldy.z __40 + // [73] (word~) main::$20 ← *((word*)(const struct $0*) balls + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuz2_ror_8 + ldy.z __44 lda #0 sta.z __20+1 lda balls+1,y @@ -3084,14 +3065,8 @@ main: { jmp __b11 // main::@11 __b11: - // [75] (byte~) main::$45 ← (byte) main::i#10 << (byte) 3 -- vbuz1=vbuz2_rol_3 - lda.z i_1 - asl - asl - asl - sta.z __45 - // [76] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$45) ← *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$45) ^ (word) $ffff -- pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_bxor_vwuc2 - ldy.z __45 + // [75] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) ^ (word) $ffff -- pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_bxor_vwuc2 + ldy.z __44 lda balls+4,y eor #<$ffff sta balls+4,y @@ -3101,29 +3076,23 @@ main: { jmp __b9 // main::@9 __b9: - // [77] (byte~) main::$44 ← (byte) main::i#10 << (byte) 3 -- vbuz1=vbuz2_rol_3 - lda.z i_1 - asl - asl - asl - sta.z __44 - // [78] (word~) main::$23 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuz2_ror_8 + // [76] (word~) main::$23 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuz2_ror_8 ldy.z __44 lda #0 sta.z __23+1 lda balls+2+1,y sta.z __23 - // [79] (word~) main::$25 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuz2_ror_8 + // [77] (word~) main::$25 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuz2_ror_8 ldy.z __44 lda #0 sta.z __25+1 lda balls+2+1,y sta.z __25 - // [80] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 -- vbuz1=vbuz2_plus_vbuc1 + // [78] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 -- vbuz1=vbuz2_plus_vbuc1 lax.z h_bar axs #-[8] stx.z __26 - // [81] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 -- vwuz1_lt_vbuz2_then_la1 + // [79] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 -- vwuz1_lt_vbuz2_then_la1 lda.z __23+1 bne !+ lda.z __23 @@ -3133,7 +3102,7 @@ main: { jmp __b24 // main::@24 __b24: - // [82] if((word~) main::$25>=(byte~) main::$26) goto main::@10 -- vwuz1_ge_vbuz2_then_la1 + // [80] if((word~) main::$25>=(byte~) main::$26) goto main::@10 -- vwuz1_ge_vbuz2_then_la1 lda.z __25+1 bne __b10 lda.z __25 @@ -3143,37 +3112,31 @@ main: { jmp __b12 // main::@12 __b12: - // [83] (byte~) main::$53 ← (byte) main::i#10 << (byte) 3 -- vbuz1=vbuz2_rol_3 - lda.z i_1 - asl - asl - asl - sta.z __53 - // [84] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$53) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$53) ^ (word) $ffff -- pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_bxor_vwuc2 - ldy.z __53 + // [81] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ^ (word) $ffff -- pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_bxor_vwuc2 + ldy.z __44 lda balls+6,y eor #<$ffff sta balls+6,y lda balls+6+1,y eor #>$ffff sta balls+6+1,y - // [85] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2 -- vbuz1=vbuz2_minus_2 + // [82] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2 -- vbuz1=vbuz2_minus_2 lda.z h_bar sec sbc #2 sta.z __30 - // [86] (word~) main::$56 ← (word)(byte~) main::$30 -- vwuz1=_word_vbuz2 + // [83] (word~) main::$56 ← (word)(byte~) main::$30 -- vwuz1=_word_vbuz2 lda.z __30 sta.z __56 lda #0 sta.z __56+1 - // [87] (word~) main::$31 ← (word~) main::$56 << (byte) 8 -- vwuz1=vwuz2_rol_8 + // [84] (word~) main::$31 ← (word~) main::$56 << (byte) 8 -- vwuz1=vwuz2_rol_8 lda.z __56 sta.z __31+1 lda #0 sta.z __31 - // [88] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$53) ← (word~) main::$31 -- pwuc1_derefidx_vbuz1=vwuz2 - ldy.z __53 + // [85] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) ← (word~) main::$31 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy.z __44 lda.z __31 sta balls+2,y lda.z __31+1 @@ -3181,48 +3144,42 @@ main: { jmp __b10 // main::@10 __b10: - // [89] (byte~) main::$50 ← (byte) main::i#10 << (byte) 3 -- vbuz1=vbuz2_rol_3 - lda.z i_1 - asl - asl - asl - sta.z __50 - // [90] (word~) main::$32 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$50) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuz2_ror_8 - ldy.z __50 + // [86] (word~) main::$32 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuz2_ror_8 + ldy.z __44 lda #0 sta.z __32+1 lda balls+2+1,y sta.z __32 - // [91] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 -- vbuz1=vbuz2_rol_2 + // [87] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 -- vbuz1=vbuz2_rol_2 lda.z sprite_idx asl asl sta.z __48 - // [92] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 -- pbuc1_derefidx_vbuz1=_byte_vwuz2 + // [88] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 -- pbuc1_derefidx_vbuz1=_byte_vwuz2 ldy.z __48 lda.z __32 sta SPRITE_BUFFER,y - // [93] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a -- pbuc1_derefidx_vbuz1=vbuc2 + // [89] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a -- pbuc1_derefidx_vbuz1=vbuc2 lda #$a ldy.z __48 sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_TILE,y - // [94] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 -- pbuc1_derefidx_vbuz1=vbuc2 + // [90] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 -- pbuc1_derefidx_vbuz1=vbuc2 lda #3 ldy.z __48 sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES,y - // [95] (word~) main::$33 ← *((word*)(const struct $0*) balls + (byte~) main::$50) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuz2_ror_8 - ldy.z __50 + // [91] (word~) main::$33 ← *((word*)(const struct $0*) balls + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuz2_ror_8 + ldy.z __44 lda #0 sta.z __33+1 lda balls+1,y sta.z __33 - // [96] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 -- pbuc1_derefidx_vbuz1=_byte_vwuz2 + // [92] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 -- pbuc1_derefidx_vbuz1=_byte_vwuz2 ldy.z __48 lda.z __33 sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_X,y - // [97] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3 -- vbuz1=_inc_vbuz1 + // [93] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3 -- vbuz1=_inc_vbuz1 inc.z sprite_idx - // [98] (byte) main::i#4 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + // [94] (byte) main::i#4 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 inc.z i_1 // [63] phi from main::@10 to main::@6 [phi:main::@10->main::@6] __b6_from___b10: @@ -3231,21 +3188,21 @@ main: { jmp __b6 // main::@25 __b25: - // [99] (byte) main::timer#21 ← (byte) main::timer#1 -- vbuz1=vbuz2 + // [95] (byte) main::timer#21 ← (byte) main::timer#1 -- vbuz1=vbuz2 lda.z timer sta.z timer_1 jmp __b5_from___b25 - // [100] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + // [96] phi from main::@1 to main::@2 [phi:main::@1->main::@2] __b2_from___b1: jmp __b2 // main::@2 __b2: - // [101] call rand - // [137] phi from main::@2 to rand [phi:main::@2->rand] + // [97] call rand + // [132] phi from main::@2 to rand [phi:main::@2->rand] rand_from___b2: - // [137] phi (word) rand_state#10 = (word) rand_state#17 [phi:main::@2->rand#0] -- register_copy + // [132] phi (word) rand_state#10 = (word) rand_state#17 [phi:main::@2->rand#0] -- register_copy jsr rand - // [102] (word) rand::return#2 ← (word) rand::return#0 -- vwuz1=vwuz2 + // [98] (word) rand::return#2 ← (word) rand::return#0 -- vwuz1=vwuz2 lda.z rand.return sta.z rand.return_1 lda.z rand.return+1 @@ -3253,36 +3210,36 @@ main: { jmp __b22 // main::@22 __b22: - // [103] (word~) main::$9 ← (word) rand::return#2 -- vwuz1=vwuz2 + // [99] (word~) main::$9 ← (word) rand::return#2 -- vwuz1=vwuz2 lda.z rand.return_1 sta.z __9 lda.z rand.return_1+1 sta.z __9+1 - // [104] (word~) main::$10 ← (word~) main::$9 & (word) $3ff -- vwuz1=vwuz2_band_vwuc1 + // [100] (word~) main::$10 ← (word~) main::$9 & (word) $3ff -- vwuz1=vwuz2_band_vwuc1 lda.z __9 and #<$3ff sta.z __10 lda.z __9+1 and #>$3ff sta.z __10+1 - // [105] (byte~) main::$35 ← (byte) main::i#14 << (byte) 3 -- vbuz1=vbuz2_rol_3 + // [101] (byte~) main::$36 ← (byte) main::i#14 << (byte) 3 -- vbuz1=vbuz2_rol_3 lda.z i asl asl asl - sta.z __35 - // [106] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$35) ← (word~) main::$10 -- pwuc1_derefidx_vbuz1=vwuz2 - ldy.z __35 + sta.z __36 + // [102] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$36) ← (word~) main::$10 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy.z __36 lda.z __10 sta balls+4,y lda.z __10+1 sta balls+4+1,y - // [107] call rand - // [137] phi from main::@22 to rand [phi:main::@22->rand] + // [103] call rand + // [132] phi from main::@22 to rand [phi:main::@22->rand] rand_from___b22: - // [137] phi (word) rand_state#10 = (word) rand_state#11 [phi:main::@22->rand#0] -- register_copy + // [132] phi (word) rand_state#10 = (word) rand_state#11 [phi:main::@22->rand#0] -- register_copy jsr rand - // [108] (word) rand::return#3 ← (word) rand::return#0 -- vwuz1=vwuz2 + // [104] (word) rand::return#3 ← (word) rand::return#0 -- vwuz1=vwuz2 lda.z rand.return sta.z rand.return_2 lda.z rand.return+1 @@ -3290,28 +3247,22 @@ main: { jmp __b23 // main::@23 __b23: - // [109] (word~) main::$11 ← (word) rand::return#3 -- vwuz1=vwuz2 + // [105] (word~) main::$11 ← (word) rand::return#3 -- vwuz1=vwuz2 lda.z rand.return_2 sta.z __11 lda.z rand.return_2+1 sta.z __11+1 - // [110] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff -- vbuz1=vwuz2_band_vbuc1 + // [106] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff -- vbuz1=vwuz2_band_vbuc1 lda #$ff and.z __11 sta.z __12 - // [111] (byte~) main::$36 ← (byte) main::i#14 << (byte) 3 -- vbuz1=vbuz2_rol_3 - lda.z i - asl - asl - asl - sta.z __36 - // [112] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$36) ← (byte~) main::$12 -- pwuc1_derefidx_vbuz1=vbuz2 + // [107] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$36) ← (byte~) main::$12 -- pwuc1_derefidx_vbuz1=vbuz2 lda.z __12 ldy.z __36 sta balls+6,y lda #0 sta balls+6+1,y - // [113] (byte) main::i#2 ← ++ (byte) main::i#14 -- vbuz1=_inc_vbuz1 + // [108] (byte) main::i#2 ← ++ (byte) main::i#14 -- vbuz1=_inc_vbuz1 inc.z i // [48] phi from main::@23 to main::@1 [phi:main::@23->main::@1] __b1_from___b23: @@ -3326,40 +3277,40 @@ main: { // - size : The number of bytes to transfer // ppuDataTransfer(void* zp($b) cpuData) ppuDataTransfer: { - .label ppuDataPrepare1___0 = $44 - .label ppuDataPrepare1___1 = $45 + .label ppuDataPrepare1___0 = $3f + .label ppuDataPrepare1___1 = $40 .label ppuDataPrepare1_ppuData = 9 - .label ppuDataPut1_val = $46 + .label ppuDataPut1_val = $41 .label cpuSrc = $f .label i = $d .label cpuData = $b jmp ppuDataPrepare1 // ppuDataTransfer::ppuDataPrepare1 ppuDataPrepare1: - // [115] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuz1=_hi_pvoz2 + // [110] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuz1=_hi_pvoz2 lda.z ppuDataPrepare1_ppuData+1 sta.z ppuDataPrepare1___0 - // [116] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuz1 + // [111] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuz1 lda.z ppuDataPrepare1___0 sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR - // [117] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuz1=_lo_pvoz2 + // [112] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuz1=_lo_pvoz2 lda.z ppuDataPrepare1_ppuData sta.z ppuDataPrepare1___1 - // [118] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuz1 + // [113] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuz1 lda.z ppuDataPrepare1___1 sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR jmp __b3 // ppuDataTransfer::@3 __b3: - // [119] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 -- pbuz1=pbuz2 + // [114] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 -- pbuz1=pbuz2 lda.z cpuData sta.z cpuSrc lda.z cpuData+1 sta.z cpuSrc+1 - // [120] phi from ppuDataTransfer::@3 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1] + // [115] phi from ppuDataTransfer::@3 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1] __b1_from___b3: - // [120] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#6 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#0] -- register_copy - // [120] phi (word) ppuDataTransfer::i#2 = (word) 0 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#1] -- vwuz1=vwuc1 + // [115] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#6 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#0] -- register_copy + // [115] phi (word) ppuDataTransfer::i#2 = (word) 0 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#1] -- vwuz1=vwuc1 lda #<0 sta.z i lda #>0 @@ -3367,7 +3318,7 @@ ppuDataTransfer: { jmp __b1 // ppuDataTransfer::@1 __b1: - // [121] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 -- vwuz1_lt_vbuc1_then_la1 + // [116] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 -- vwuz1_lt_vbuc1_then_la1 lda.z i+1 bne !+ lda.z i @@ -3377,37 +3328,37 @@ ppuDataTransfer: { jmp __breturn // ppuDataTransfer::@return __breturn: - // [122] return + // [117] return rts // ppuDataTransfer::@2 __b2: - // [123] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) -- vbuz1=_deref_pbuz2 + // [118] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) -- vbuz1=_deref_pbuz2 ldy #0 lda (cpuSrc),y sta.z ppuDataPut1_val jmp ppuDataPut1 // ppuDataTransfer::ppuDataPut1 ppuDataPut1: - // [124] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0 -- _deref_pbuc1=vbuz1 + // [119] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0 -- _deref_pbuc1=vbuz1 lda.z ppuDataPut1_val sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA jmp __b4 // ppuDataTransfer::@4 __b4: - // [125] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2 -- pbuz1=_inc_pbuz1 + // [120] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2 -- pbuz1=_inc_pbuz1 inc.z cpuSrc bne !+ inc.z cpuSrc+1 !: - // [126] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2 -- vwuz1=_inc_vwuz1 + // [121] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2 -- vwuz1=_inc_vwuz1 inc.z i bne !+ inc.z i+1 !: - // [120] phi from ppuDataTransfer::@4 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1] + // [115] phi from ppuDataTransfer::@4 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1] __b1_from___b4: - // [120] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#0] -- register_copy - // [120] phi (word) ppuDataTransfer::i#2 = (word) ppuDataTransfer::i#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#1] -- register_copy + // [115] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#0] -- register_copy + // [115] phi (word) ppuDataTransfer::i#2 = (word) ppuDataTransfer::i#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#1] -- register_copy jmp __b1 } // ppuDataFill @@ -3416,29 +3367,29 @@ ppuDataTransfer: { // - size : The number of bytes to transfer // ppuDataFill(word zp($13) size) ppuDataFill: { - .label ppuDataPrepare1___0 = $47 - .label ppuDataPrepare1___1 = $48 + .label ppuDataPrepare1___0 = $42 + .label ppuDataPrepare1___1 = $43 .label ppuDataPrepare1_ppuData = $11 .label i = $15 .label size = $13 jmp ppuDataPrepare1 // ppuDataFill::ppuDataPrepare1 ppuDataPrepare1: - // [128] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuz1=_hi_pvoz2 + // [123] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuz1=_hi_pvoz2 lda.z ppuDataPrepare1_ppuData+1 sta.z ppuDataPrepare1___0 - // [129] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuz1 + // [124] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuz1 lda.z ppuDataPrepare1___0 sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR - // [130] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuz1=_lo_pvoz2 + // [125] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuz1=_lo_pvoz2 lda.z ppuDataPrepare1_ppuData sta.z ppuDataPrepare1___1 - // [131] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuz1 + // [126] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuz1 lda.z ppuDataPrepare1___1 sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR - // [132] phi from ppuDataFill::ppuDataPrepare1 to ppuDataFill::@1 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1] + // [127] phi from ppuDataFill::ppuDataPrepare1 to ppuDataFill::@1 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1] __b1_from_ppuDataPrepare1: - // [132] phi (word) ppuDataFill::i#2 = (word) 0 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1#0] -- vwuz1=vwuc1 + // [127] phi (word) ppuDataFill::i#2 = (word) 0 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1#0] -- vwuz1=vwuc1 lda #<0 sta.z i lda #>0 @@ -3447,7 +3398,7 @@ ppuDataFill: { // Transfer to PPU // ppuDataFill::@1 __b1: - // [133] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 -- vwuz1_lt_vwuz2_then_la1 + // [128] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 -- vwuz1_lt_vwuz2_then_la1 lda.z i+1 cmp.z size+1 bcc ppuDataPut1 @@ -3459,24 +3410,24 @@ ppuDataFill: { jmp __breturn // ppuDataFill::@return __breturn: - // [134] return + // [129] return rts // ppuDataFill::ppuDataPut1 ppuDataPut1: - // [135] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [130] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA jmp __b2 // ppuDataFill::@2 __b2: - // [136] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2 -- vwuz1=_inc_vwuz1 + // [131] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2 -- vwuz1=_inc_vwuz1 inc.z i bne !+ inc.z i+1 !: - // [132] phi from ppuDataFill::@2 to ppuDataFill::@1 [phi:ppuDataFill::@2->ppuDataFill::@1] + // [127] phi from ppuDataFill::@2 to ppuDataFill::@1 [phi:ppuDataFill::@2->ppuDataFill::@1] __b1_from___b2: - // [132] phi (word) ppuDataFill::i#2 = (word) ppuDataFill::i#1 [phi:ppuDataFill::@2->ppuDataFill::@1#0] -- register_copy + // [127] phi (word) ppuDataFill::i#2 = (word) ppuDataFill::i#1 [phi:ppuDataFill::@2->ppuDataFill::@1#0] -- register_copy jmp __b1 } // rand @@ -3485,13 +3436,13 @@ ppuDataFill: { // Information https://en.wikipedia.org/wiki/Xorshift // Source http://www.retroprogramming.com/2017/07/xorshift-pseudorandom-numbers-in-z80.html rand: { - .label __0 = $49 - .label __1 = $4d - .label __2 = $51 - .label return = $53 - .label return_1 = $37 - .label return_2 = $3e - // [138] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 -- vwuz1=vwuz2_rol_7 + .label __0 = $44 + .label __1 = $48 + .label __2 = $4c + .label return = $4e + .label return_1 = $33 + .label return_2 = $3a + // [133] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 -- vwuz1=vwuz2_rol_7 lda.z rand_state_2+1 lsr lda.z rand_state_2 @@ -3500,39 +3451,39 @@ rand: { lda #0 ror sta.z __0 - // [139] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 -- vwuz1=vwuz2_bxor_vwuz3 + // [134] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 -- vwuz1=vwuz2_bxor_vwuz3 lda.z rand_state_2 eor.z __0 sta.z rand_state lda.z rand_state_2+1 eor.z __0+1 sta.z rand_state+1 - // [140] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 -- vwuz1=vwuz2_ror_9 + // [135] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 -- vwuz1=vwuz2_ror_9 lda.z rand_state+1 lsr sta.z __1 lda #0 sta.z __1+1 - // [141] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 -- vwuz1=vwuz2_bxor_vwuz3 + // [136] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 -- vwuz1=vwuz2_bxor_vwuz3 lda.z rand_state eor.z __1 sta.z rand_state_1 lda.z rand_state+1 eor.z __1+1 sta.z rand_state_1+1 - // [142] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 -- vwuz1=vwuz2_rol_8 + // [137] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 -- vwuz1=vwuz2_rol_8 lda.z rand_state_1 sta.z __2+1 lda #0 sta.z __2 - // [143] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 -- vwuz1=vwuz2_bxor_vwuz3 + // [138] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 -- vwuz1=vwuz2_bxor_vwuz3 lda.z rand_state_1 eor.z __2 sta.z rand_state_2 lda.z rand_state_1+1 eor.z __2+1 sta.z rand_state_2+1 - // [144] (word) rand::return#0 ← (word) rand_state#11 -- vwuz1=vwuz2 + // [139] (word) rand::return#0 ← (word) rand_state#11 -- vwuz1=vwuz2 lda.z rand_state_2 sta.z return lda.z rand_state_2+1 @@ -3540,7 +3491,7 @@ rand: { jmp __breturn // rand::@return __breturn: - // [145] return + // [140] return rts } // File Data @@ -3604,65 +3555,57 @@ Statement [65] *((byte*) 8193) ← (byte) $98 [ vblank_hit main::timer_2#1 main: Statement [66] if((byte) 0==(volatile byte) vblank_hit) goto main::@13 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { } ) always clobbers reg byte a Statement [67] (volatile byte) vblank_hit ← (byte) 0 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { } ) always clobbers reg byte a Statement [68] *((byte*) 8193) ← (byte) $18 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { } ) always clobbers reg byte a -Statement [69] (byte~) main::$40 ← (byte) main::i#10 << (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] { } ) always clobbers reg byte a +Statement [69] (byte~) main::$44 ← (byte) main::i#10 << (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::i#10 main::i#4 ] Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::sprite_idx#3 main::sprite_idx#2 ] -Statement [70] *((word*)(const struct $0*) balls + (byte~) main::$40) ← *((word*)(const struct $0*) balls + (byte~) main::$40) + *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$40) [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] { } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:33 [ main::$40 ] -Statement [71] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) + (byte) $10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] { } ) always clobbers reg byte a -Statement [72] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$40) ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$40) + *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] { } ) always clobbers reg byte a -Statement [73] (word~) main::$20 ← *((word*)(const struct $0*) balls + (byte~) main::$40) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$20 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$20 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$20 ] { } ) always clobbers reg byte a -Statement [74] if((word~) main::$20>=(byte) 8) goto main::@9 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } ) always clobbers reg byte a -Statement [75] (byte~) main::$45 ← (byte) main::i#10 << (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$45 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$45 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$45 ] { } ) always clobbers reg byte a -Statement [76] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$45) ← *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$45) ^ (word) $ffff [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } ) always clobbers reg byte a -Statement [77] (byte~) main::$44 ← (byte) main::i#10 << (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a -Statement [78] (word~) main::$23 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] { } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:37 [ main::$44 ] -Statement [79] (word~) main::$25 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$23 main::$25 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$23 main::$25 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$23 main::$25 ] { } ) always clobbers reg byte a -Statement [80] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$23 main::$25 main::$26 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$23 main::$25 main::$26 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$23 main::$25 main::$26 ] { } ) always clobbers reg byte a -Statement [81] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$25 main::$26 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$25 main::$26 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$25 main::$26 ] { } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:42 [ main::$26 ] -Statement [82] if((word~) main::$25>=(byte~) main::$26) goto main::@10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } ) always clobbers reg byte a -Statement [83] (byte~) main::$53 ← (byte) main::i#10 << (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 ] { } ) always clobbers reg byte a -Statement [84] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$53) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$53) ^ (word) $ffff [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 ] { } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:43 [ main::$53 ] -Statement [86] (word~) main::$56 ← (word)(byte~) main::$30 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 main::$56 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 main::$56 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 main::$56 ] { } ) always clobbers reg byte a -Statement [87] (word~) main::$31 ← (word~) main::$56 << (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 main::$31 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 main::$31 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 main::$31 ] { } ) always clobbers reg byte a -Statement [88] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$53) ← (word~) main::$31 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } ) always clobbers reg byte a -Statement [89] (byte~) main::$50 ← (byte) main::i#10 << (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 ] { } ) always clobbers reg byte a -Statement [90] (word~) main::$32 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$50) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$32 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$32 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$32 ] { } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:49 [ main::$50 ] -Statement [91] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$32 main::$48 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$32 main::$48 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$32 main::$48 ] { } ) always clobbers reg byte a -Statement [92] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] { } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:52 [ main::$48 ] -Statement [93] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] { } ) always clobbers reg byte a -Statement [94] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] { } ) always clobbers reg byte a -Statement [95] (word~) main::$33 ← *((word*)(const struct $0*) balls + (byte~) main::$50) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] { } ) always clobbers reg byte a -Statement [96] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } ) always clobbers reg byte a -Statement [102] (word) rand::return#2 ← (word) rand::return#0 [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] ( [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4 [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a +Statement [70] *((word*)(const struct $0*) balls + (byte~) main::$44) ← *((word*)(const struct $0*) balls + (byte~) main::$44) + *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:33 [ main::$44 ] +Statement [71] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) + (byte) $10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Statement [72] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) + *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Statement [73] (word~) main::$20 ← *((word*)(const struct $0*) balls + (byte~) main::$44) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] { } ) always clobbers reg byte a +Statement [74] if((word~) main::$20>=(byte) 8) goto main::@9 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Statement [75] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) ^ (word) $ffff [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Statement [76] (word~) main::$23 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] { } ) always clobbers reg byte a +Statement [77] (word~) main::$25 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] { } ) always clobbers reg byte a +Statement [78] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] { } ) always clobbers reg byte a +Statement [79] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:40 [ main::$26 ] +Statement [80] if((word~) main::$25>=(byte~) main::$26) goto main::@10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Statement [81] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ^ (word) $ffff [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Statement [83] (word~) main::$56 ← (word)(byte~) main::$30 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] { } ) always clobbers reg byte a +Statement [84] (word~) main::$31 ← (word~) main::$56 << (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] { } ) always clobbers reg byte a +Statement [85] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) ← (word~) main::$31 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Statement [86] (word~) main::$32 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] { } ) always clobbers reg byte a +Statement [87] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] { } ) always clobbers reg byte a +Statement [88] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:48 [ main::$48 ] +Statement [89] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { } ) always clobbers reg byte a +Statement [90] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { } ) always clobbers reg byte a +Statement [91] (word~) main::$33 ← *((word*)(const struct $0*) balls + (byte~) main::$44) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] { } ) always clobbers reg byte a +Statement [92] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } ) always clobbers reg byte a +Statement [98] (word) rand::return#2 ← (word) rand::return#0 [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] ( [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4 [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i#14 main::i#2 ] -Statement [103] (word~) main::$9 ← (word) rand::return#2 [ vblank_hit main::i#14 rand_state#11 main::$9 ] ( [ vblank_hit main::i#14 rand_state#11 main::$9 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 main::$9 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [104] (word~) main::$10 ← (word~) main::$9 & (word) $3ff [ vblank_hit main::i#14 rand_state#11 main::$10 ] ( [ vblank_hit main::i#14 rand_state#11 main::$10 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [105] (byte~) main::$35 ← (byte) main::i#14 << (byte) 3 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$35 ] ( [ vblank_hit main::i#14 rand_state#11 main::$10 main::$35 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$35 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [106] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$35) ← (word~) main::$10 [ vblank_hit main::i#14 rand_state#11 ] ( [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [108] (word) rand::return#3 ← (word) rand::return#0 [ vblank_hit main::i#14 rand_state#11 rand::return#3 ] ( [ vblank_hit main::i#14 rand_state#11 rand::return#3 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 rand::return#3 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [109] (word~) main::$11 ← (word) rand::return#3 [ vblank_hit main::i#14 rand_state#11 main::$11 ] ( [ vblank_hit main::i#14 rand_state#11 main::$11 ] { } main:4 [ vblank_hit main::i#14 rand_state#11 main::$11 ] { } ) always clobbers reg byte a -Statement [110] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff [ vblank_hit main::i#14 rand_state#11 main::$12 ] ( [ vblank_hit main::i#14 rand_state#11 main::$12 ] { } main:4 [ vblank_hit main::i#14 rand_state#11 main::$12 ] { } ) always clobbers reg byte a -Statement [111] (byte~) main::$36 ← (byte) main::i#14 << (byte) 3 [ vblank_hit main::i#14 rand_state#11 main::$12 main::$36 ] ( [ vblank_hit main::i#14 rand_state#11 main::$12 main::$36 ] { } main:4 [ vblank_hit main::i#14 rand_state#11 main::$12 main::$36 ] { } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:66 [ main::$12 ] -Statement [112] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$36) ← (byte~) main::$12 [ vblank_hit main::i#14 rand_state#11 ] ( [ vblank_hit main::i#14 rand_state#11 ] { } main:4 [ vblank_hit main::i#14 rand_state#11 ] { } ) always clobbers reg byte a -Statement [119] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 [ ppuDataTransfer::cpuSrc#6 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { } main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { } ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { } main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { } ) always clobbers reg byte a -Statement [121] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 [ ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { } main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { } ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { } main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { } ) always clobbers reg byte a -Statement [123] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) [ ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { } main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { } ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { } main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { } ) always clobbers reg byte a reg byte y -Statement [133] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 [ ppuDataFill::size#3 ppuDataFill::i#2 ] ( ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } main:4::ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } main:4::ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } ) always clobbers reg byte a -Statement [135] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 [ ppuDataFill::size#3 ppuDataFill::i#2 ] ( ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } main:4::ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } main:4::ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } ) always clobbers reg byte a -Statement [138] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 [ rand_state#10 rand::$0 ] ( rand:101 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:101 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:107 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:107 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [139] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 [ rand_state#0 ] ( rand:101 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:101 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:107 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:107 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [140] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 [ rand_state#0 rand::$1 ] ( rand:101 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:101 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:107 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:107 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [141] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 [ rand_state#1 ] ( rand:101 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:101 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:107 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:107 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [142] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 [ rand_state#1 rand::$2 ] ( rand:101 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:101 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:107 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:107 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [143] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 [ rand_state#11 ] ( rand:101 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:101 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:107 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:107 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [144] (word) rand::return#0 ← (word) rand_state#11 [ rand_state#11 rand::return#0 ] ( rand:101 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:101 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:107 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:107 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [99] (word~) main::$9 ← (word) rand::return#2 [ vblank_hit main::i#14 rand_state#11 main::$9 ] ( [ vblank_hit main::i#14 rand_state#11 main::$9 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 main::$9 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [100] (word~) main::$10 ← (word~) main::$9 & (word) $3ff [ vblank_hit main::i#14 rand_state#11 main::$10 ] ( [ vblank_hit main::i#14 rand_state#11 main::$10 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [101] (byte~) main::$36 ← (byte) main::i#14 << (byte) 3 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] ( [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [102] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$36) ← (word~) main::$10 [ vblank_hit main::i#14 rand_state#11 main::$36 ] ( [ vblank_hit main::i#14 rand_state#11 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:57 [ main::$36 ] +Statement [104] (word) rand::return#3 ← (word) rand::return#0 [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] ( [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [105] (word~) main::$11 ← (word) rand::return#3 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] ( [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] { } main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] { } ) always clobbers reg byte a +Statement [106] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] ( [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] { } main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] { } ) always clobbers reg byte a +Statement [107] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$36) ← (byte~) main::$12 [ vblank_hit main::i#14 rand_state#11 ] ( [ vblank_hit main::i#14 rand_state#11 ] { } main:4 [ vblank_hit main::i#14 rand_state#11 ] { } ) always clobbers reg byte a +Statement [114] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 [ ppuDataTransfer::cpuSrc#6 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { } main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { } ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { } main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { } ) always clobbers reg byte a +Statement [116] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 [ ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { } main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { } ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { } main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { } ) always clobbers reg byte a +Statement [118] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) [ ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { } main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { } ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { } main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { } ) always clobbers reg byte a reg byte y +Statement [128] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 [ ppuDataFill::size#3 ppuDataFill::i#2 ] ( ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } main:4::ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } main:4::ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } ) always clobbers reg byte a +Statement [130] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 [ ppuDataFill::size#3 ppuDataFill::i#2 ] ( ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } main:4::ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } main:4::ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } ) always clobbers reg byte a +Statement [133] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 [ rand_state#10 rand::$0 ] ( rand:97 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:97 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:103 [ vblank_hit main::i#14 main::$36 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:103 [ vblank_hit main::i#14 main::$36 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [134] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 [ rand_state#0 ] ( rand:97 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:97 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:103 [ vblank_hit main::i#14 main::$36 rand_state#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:103 [ vblank_hit main::i#14 main::$36 rand_state#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [135] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 [ rand_state#0 rand::$1 ] ( rand:97 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:97 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:103 [ vblank_hit main::i#14 main::$36 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:103 [ vblank_hit main::i#14 main::$36 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [136] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 [ rand_state#1 ] ( rand:97 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:97 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:103 [ vblank_hit main::i#14 main::$36 rand_state#1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:103 [ vblank_hit main::i#14 main::$36 rand_state#1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [137] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 [ rand_state#1 rand::$2 ] ( rand:97 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:97 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:103 [ vblank_hit main::i#14 main::$36 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:103 [ vblank_hit main::i#14 main::$36 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [138] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 [ rand_state#11 ] ( rand:97 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:97 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:103 [ vblank_hit main::i#14 main::$36 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:103 [ vblank_hit main::i#14 main::$36 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [139] (word) rand::return#0 ← (word) rand_state#11 [ rand_state#11 rand::return#0 ] ( rand:97 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:97 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:103 [ vblank_hit main::i#14 main::$36 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:103 [ vblank_hit main::i#14 main::$36 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a Statement [1] (volatile byte) scroll_y ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a Statement [2] (volatile byte) vblank_hit ← (byte) 0 [ vblank_hit ] ( [ vblank_hit ] { } ) always clobbers reg byte a Statement [6] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) ← (byte) 0 [ scroll_y vblank_hit ] ( [ scroll_y vblank_hit ] { } ) always clobbers reg byte a @@ -3699,55 +3642,50 @@ Statement [65] *((byte*) 8193) ← (byte) $98 [ vblank_hit main::timer_2#1 main: Statement [66] if((byte) 0==(volatile byte) vblank_hit) goto main::@13 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { } ) always clobbers reg byte a Statement [67] (volatile byte) vblank_hit ← (byte) 0 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { } ) always clobbers reg byte a Statement [68] *((byte*) 8193) ← (byte) $18 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 ] { } ) always clobbers reg byte a -Statement [69] (byte~) main::$40 ← (byte) main::i#10 << (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] { } ) always clobbers reg byte a -Statement [70] *((word*)(const struct $0*) balls + (byte~) main::$40) ← *((word*)(const struct $0*) balls + (byte~) main::$40) + *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$40) [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] { } ) always clobbers reg byte a -Statement [71] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) + (byte) $10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] { } ) always clobbers reg byte a -Statement [72] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$40) ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$40) + *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$40 ] { } ) always clobbers reg byte a -Statement [73] (word~) main::$20 ← *((word*)(const struct $0*) balls + (byte~) main::$40) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$20 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$20 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$20 ] { } ) always clobbers reg byte a -Statement [74] if((word~) main::$20>=(byte) 8) goto main::@9 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } ) always clobbers reg byte a -Statement [75] (byte~) main::$45 ← (byte) main::i#10 << (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$45 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$45 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$45 ] { } ) always clobbers reg byte a -Statement [76] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$45) ← *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$45) ^ (word) $ffff [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } ) always clobbers reg byte a -Statement [77] (byte~) main::$44 ← (byte) main::i#10 << (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a -Statement [78] (word~) main::$23 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] { } ) always clobbers reg byte a -Statement [79] (word~) main::$25 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$23 main::$25 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$23 main::$25 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$23 main::$25 ] { } ) always clobbers reg byte a -Statement [80] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$23 main::$25 main::$26 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$23 main::$25 main::$26 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$23 main::$25 main::$26 ] { } ) always clobbers reg byte a -Statement [81] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$25 main::$26 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$25 main::$26 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$25 main::$26 ] { } ) always clobbers reg byte a -Statement [82] if((word~) main::$25>=(byte~) main::$26) goto main::@10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } ) always clobbers reg byte a -Statement [83] (byte~) main::$53 ← (byte) main::i#10 << (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 ] { } ) always clobbers reg byte a -Statement [84] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$53) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$53) ^ (word) $ffff [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 ] { } ) always clobbers reg byte a -Statement [86] (word~) main::$56 ← (word)(byte~) main::$30 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 main::$56 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 main::$56 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 main::$56 ] { } ) always clobbers reg byte a -Statement [87] (word~) main::$31 ← (word~) main::$56 << (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 main::$31 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 main::$31 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$53 main::$31 ] { } ) always clobbers reg byte a -Statement [88] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$53) ← (word~) main::$31 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } ) always clobbers reg byte a -Statement [89] (byte~) main::$50 ← (byte) main::i#10 << (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 ] { } ) always clobbers reg byte a -Statement [90] (word~) main::$32 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$50) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$32 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$32 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$32 ] { } ) always clobbers reg byte a -Statement [91] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$32 main::$48 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$32 main::$48 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$32 main::$48 ] { } ) always clobbers reg byte a -Statement [92] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] { } ) always clobbers reg byte a -Statement [93] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] { } ) always clobbers reg byte a -Statement [94] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$50 main::$48 ] { } ) always clobbers reg byte a -Statement [95] (word~) main::$33 ← *((word*)(const struct $0*) balls + (byte~) main::$50) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] { } ) always clobbers reg byte a -Statement [96] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } ) always clobbers reg byte a -Statement [102] (word) rand::return#2 ← (word) rand::return#0 [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] ( [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4 [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a -Statement [103] (word~) main::$9 ← (word) rand::return#2 [ vblank_hit main::i#14 rand_state#11 main::$9 ] ( [ vblank_hit main::i#14 rand_state#11 main::$9 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 main::$9 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [104] (word~) main::$10 ← (word~) main::$9 & (word) $3ff [ vblank_hit main::i#14 rand_state#11 main::$10 ] ( [ vblank_hit main::i#14 rand_state#11 main::$10 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [105] (byte~) main::$35 ← (byte) main::i#14 << (byte) 3 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$35 ] ( [ vblank_hit main::i#14 rand_state#11 main::$10 main::$35 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$35 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [106] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$35) ← (word~) main::$10 [ vblank_hit main::i#14 rand_state#11 ] ( [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [108] (word) rand::return#3 ← (word) rand::return#0 [ vblank_hit main::i#14 rand_state#11 rand::return#3 ] ( [ vblank_hit main::i#14 rand_state#11 rand::return#3 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 rand::return#3 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [109] (word~) main::$11 ← (word) rand::return#3 [ vblank_hit main::i#14 rand_state#11 main::$11 ] ( [ vblank_hit main::i#14 rand_state#11 main::$11 ] { } main:4 [ vblank_hit main::i#14 rand_state#11 main::$11 ] { } ) always clobbers reg byte a -Statement [110] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff [ vblank_hit main::i#14 rand_state#11 main::$12 ] ( [ vblank_hit main::i#14 rand_state#11 main::$12 ] { } main:4 [ vblank_hit main::i#14 rand_state#11 main::$12 ] { } ) always clobbers reg byte a -Statement [111] (byte~) main::$36 ← (byte) main::i#14 << (byte) 3 [ vblank_hit main::i#14 rand_state#11 main::$12 main::$36 ] ( [ vblank_hit main::i#14 rand_state#11 main::$12 main::$36 ] { } main:4 [ vblank_hit main::i#14 rand_state#11 main::$12 main::$36 ] { } ) always clobbers reg byte a -Statement [112] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$36) ← (byte~) main::$12 [ vblank_hit main::i#14 rand_state#11 ] ( [ vblank_hit main::i#14 rand_state#11 ] { } main:4 [ vblank_hit main::i#14 rand_state#11 ] { } ) always clobbers reg byte a -Statement [119] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 [ ppuDataTransfer::cpuSrc#6 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { } main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { } ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { } main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { } ) always clobbers reg byte a -Statement [121] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 [ ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { } main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { } ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { } main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { } ) always clobbers reg byte a -Statement [123] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) [ ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { } main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { } ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { } main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { } ) always clobbers reg byte a reg byte y -Statement [133] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 [ ppuDataFill::size#3 ppuDataFill::i#2 ] ( ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } main:4::ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } main:4::ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } ) always clobbers reg byte a -Statement [135] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 [ ppuDataFill::size#3 ppuDataFill::i#2 ] ( ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } main:4::ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } main:4::ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } ) always clobbers reg byte a -Statement [138] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 [ rand_state#10 rand::$0 ] ( rand:101 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:101 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:107 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:107 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [139] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 [ rand_state#0 ] ( rand:101 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:101 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:107 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:107 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [140] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 [ rand_state#0 rand::$1 ] ( rand:101 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:101 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:107 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:107 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [141] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 [ rand_state#1 ] ( rand:101 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:101 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:107 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:107 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [142] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 [ rand_state#1 rand::$2 ] ( rand:101 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:101 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:107 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:107 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [143] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 [ rand_state#11 ] ( rand:101 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:101 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:107 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:107 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a -Statement [144] (word) rand::return#0 ← (word) rand_state#11 [ rand_state#11 rand::return#0 ] ( rand:101 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:101 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:107 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:107 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [69] (byte~) main::$44 ← (byte) main::i#10 << (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Statement [70] *((word*)(const struct $0*) balls + (byte~) main::$44) ← *((word*)(const struct $0*) balls + (byte~) main::$44) + *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Statement [71] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) + (byte) $10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Statement [72] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) + *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Statement [73] (word~) main::$20 ← *((word*)(const struct $0*) balls + (byte~) main::$44) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$20 ] { } ) always clobbers reg byte a +Statement [74] if((word~) main::$20>=(byte) 8) goto main::@9 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Statement [75] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) ^ (word) $ffff [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Statement [76] (word~) main::$23 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 ] { } ) always clobbers reg byte a +Statement [77] (word~) main::$25 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 ] { } ) always clobbers reg byte a +Statement [78] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$23 main::$25 main::$26 ] { } ) always clobbers reg byte a +Statement [79] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$25 main::$26 ] { } ) always clobbers reg byte a +Statement [80] if((word~) main::$25>=(byte~) main::$26) goto main::@10 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Statement [81] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ^ (word) $ffff [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Statement [83] (word~) main::$56 ← (word)(byte~) main::$30 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$56 ] { } ) always clobbers reg byte a +Statement [84] (word~) main::$31 ← (word~) main::$56 << (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$31 ] { } ) always clobbers reg byte a +Statement [85] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) ← (word~) main::$31 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 ] { } ) always clobbers reg byte a +Statement [86] (word~) main::$32 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 ] { } ) always clobbers reg byte a +Statement [87] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$32 main::$48 ] { } ) always clobbers reg byte a +Statement [88] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { } ) always clobbers reg byte a +Statement [89] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { } ) always clobbers reg byte a +Statement [90] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$44 main::$48 ] { } ) always clobbers reg byte a +Statement [91] (word~) main::$33 ← *((word*)(const struct $0*) balls + (byte~) main::$44) >> (byte) 8 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 main::$48 main::$33 ] { } ) always clobbers reg byte a +Statement [92] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] ( [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } main:4 [ vblank_hit main::timer_2#1 main::active_balls#8 main::timer#15 main::h_bar#1 main::i#10 main::sprite_idx#3 ] { } ) always clobbers reg byte a +Statement [98] (word) rand::return#2 ← (word) rand::return#0 [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] ( [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4 [ vblank_hit main::i#14 rand_state#11 rand::return#2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } ) always clobbers reg byte a +Statement [99] (word~) main::$9 ← (word) rand::return#2 [ vblank_hit main::i#14 rand_state#11 main::$9 ] ( [ vblank_hit main::i#14 rand_state#11 main::$9 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 main::$9 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [100] (word~) main::$10 ← (word~) main::$9 & (word) $3ff [ vblank_hit main::i#14 rand_state#11 main::$10 ] ( [ vblank_hit main::i#14 rand_state#11 main::$10 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [101] (byte~) main::$36 ← (byte) main::i#14 << (byte) 3 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] ( [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 main::$10 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [102] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$36) ← (word~) main::$10 [ vblank_hit main::i#14 rand_state#11 main::$36 ] ( [ vblank_hit main::i#14 rand_state#11 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [104] (word) rand::return#3 ← (word) rand::return#0 [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] ( [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 rand::return#3 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [105] (word~) main::$11 ← (word) rand::return#3 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] ( [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] { } main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$11 ] { } ) always clobbers reg byte a +Statement [106] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] ( [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] { } main:4 [ vblank_hit main::i#14 rand_state#11 main::$36 main::$12 ] { } ) always clobbers reg byte a +Statement [107] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$36) ← (byte~) main::$12 [ vblank_hit main::i#14 rand_state#11 ] ( [ vblank_hit main::i#14 rand_state#11 ] { } main:4 [ vblank_hit main::i#14 rand_state#11 ] { } ) always clobbers reg byte a +Statement [114] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 [ ppuDataTransfer::cpuSrc#6 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { } main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { } ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { } main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::cpuSrc#6 ] { } ) always clobbers reg byte a +Statement [116] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 [ ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { } main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { } ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { } main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { } ) always clobbers reg byte a +Statement [118] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) [ ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] ( ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { } main:4::ppuDataTransfer:38 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { } ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { } main:4::ppuDataTransfer:44 [ vblank_hit ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { } ) always clobbers reg byte a reg byte y +Statement [128] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 [ ppuDataFill::size#3 ppuDataFill::i#2 ] ( ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } main:4::ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } main:4::ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } ) always clobbers reg byte a +Statement [130] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 [ ppuDataFill::size#3 ppuDataFill::i#2 ] ( ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } main:4::ppuDataFill:40 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } main:4::ppuDataFill:42 [ vblank_hit ppuDataFill::size#3 ppuDataFill::i#2 ] { } ) always clobbers reg byte a +Statement [133] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 [ rand_state#10 rand::$0 ] ( rand:97 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:97 [ vblank_hit main::i#14 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:103 [ vblank_hit main::i#14 main::$36 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:103 [ vblank_hit main::i#14 main::$36 rand_state#10 rand::$0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [134] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 [ rand_state#0 ] ( rand:97 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:97 [ vblank_hit main::i#14 rand_state#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:103 [ vblank_hit main::i#14 main::$36 rand_state#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:103 [ vblank_hit main::i#14 main::$36 rand_state#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [135] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 [ rand_state#0 rand::$1 ] ( rand:97 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:97 [ vblank_hit main::i#14 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:103 [ vblank_hit main::i#14 main::$36 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:103 [ vblank_hit main::i#14 main::$36 rand_state#0 rand::$1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [136] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 [ rand_state#1 ] ( rand:97 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:97 [ vblank_hit main::i#14 rand_state#1 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:103 [ vblank_hit main::i#14 main::$36 rand_state#1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:103 [ vblank_hit main::i#14 main::$36 rand_state#1 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [137] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 [ rand_state#1 rand::$2 ] ( rand:97 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:97 [ vblank_hit main::i#14 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:103 [ vblank_hit main::i#14 main::$36 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:103 [ vblank_hit main::i#14 main::$36 rand_state#1 rand::$2 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [138] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 [ rand_state#11 ] ( rand:97 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:97 [ vblank_hit main::i#14 rand_state#11 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:103 [ vblank_hit main::i#14 main::$36 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:103 [ vblank_hit main::i#14 main::$36 rand_state#11 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a +Statement [139] (word) rand::return#0 ← (word) rand_state#11 [ rand_state#11 rand::return#0 ] ( rand:97 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } main:4::rand:97 [ vblank_hit main::i#14 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#17 } { rand::return#0 = rand::return#2 } } rand:103 [ vblank_hit main::i#14 main::$36 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } main:4::rand:103 [ vblank_hit main::i#14 main::$36 rand_state#11 rand::return#0 ] { { rand_state#10 = rand_state#11 } { rand::return#0 = rand::return#3 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::initNES1_i#2 main::initNES1_i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::i#14 main::i#2 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::timer_2#2 main::timer_2#1 ] : zp[1]:4 , reg byte x , reg byte y , @@ -3771,47 +3709,42 @@ Potential registers zp[1]:29 [ main::h_bar#1 ] : zp[1]:29 , reg byte x , reg byt Potential registers zp[1]:30 [ main::$14 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:31 [ main::timer#1 ] : zp[1]:31 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:32 [ main::$38 ] : zp[1]:32 , reg byte x , reg byte y , -Potential registers zp[1]:33 [ main::$40 ] : zp[1]:33 , reg byte x , reg byte y , +Potential registers zp[1]:33 [ main::$44 ] : zp[1]:33 , reg byte x , reg byte y , Potential registers zp[2]:34 [ main::$20 ] : zp[2]:34 , -Potential registers zp[1]:36 [ main::$45 ] : zp[1]:36 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:37 [ main::$44 ] : zp[1]:37 , reg byte x , reg byte y , -Potential registers zp[2]:38 [ main::$23 ] : zp[2]:38 , -Potential registers zp[2]:40 [ main::$25 ] : zp[2]:40 , -Potential registers zp[1]:42 [ main::$26 ] : zp[1]:42 , reg byte x , reg byte y , -Potential registers zp[1]:43 [ main::$53 ] : zp[1]:43 , reg byte x , reg byte y , -Potential registers zp[1]:44 [ main::$30 ] : zp[1]:44 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:45 [ main::$56 ] : zp[2]:45 , -Potential registers zp[2]:47 [ main::$31 ] : zp[2]:47 , -Potential registers zp[1]:49 [ main::$50 ] : zp[1]:49 , reg byte x , reg byte y , -Potential registers zp[2]:50 [ main::$32 ] : zp[2]:50 , -Potential registers zp[1]:52 [ main::$48 ] : zp[1]:52 , reg byte x , reg byte y , -Potential registers zp[2]:53 [ main::$33 ] : zp[2]:53 , -Potential registers zp[2]:55 [ rand::return#2 ] : zp[2]:55 , -Potential registers zp[2]:57 [ main::$9 ] : zp[2]:57 , -Potential registers zp[2]:59 [ main::$10 ] : zp[2]:59 , -Potential registers zp[1]:61 [ main::$35 ] : zp[1]:61 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:62 [ rand::return#3 ] : zp[2]:62 , -Potential registers zp[2]:64 [ main::$11 ] : zp[2]:64 , -Potential registers zp[1]:66 [ main::$12 ] : zp[1]:66 , reg byte x , reg byte y , -Potential registers zp[1]:67 [ main::$36 ] : zp[1]:67 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:68 [ ppuDataTransfer::ppuDataPrepare1_$0 ] : zp[1]:68 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:69 [ ppuDataTransfer::ppuDataPrepare1_$1 ] : zp[1]:69 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:70 [ ppuDataTransfer::ppuDataPut1_val#0 ] : zp[1]:70 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:71 [ ppuDataFill::ppuDataPrepare1_$0 ] : zp[1]:71 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:72 [ ppuDataFill::ppuDataPrepare1_$1 ] : zp[1]:72 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:73 [ rand::$0 ] : zp[2]:73 , -Potential registers zp[2]:75 [ rand_state#0 ] : zp[2]:75 , -Potential registers zp[2]:77 [ rand::$1 ] : zp[2]:77 , -Potential registers zp[2]:79 [ rand_state#1 ] : zp[2]:79 , -Potential registers zp[2]:81 [ rand::$2 ] : zp[2]:81 , -Potential registers zp[2]:83 [ rand::return#0 ] : zp[2]:83 , +Potential registers zp[2]:36 [ main::$23 ] : zp[2]:36 , +Potential registers zp[2]:38 [ main::$25 ] : zp[2]:38 , +Potential registers zp[1]:40 [ main::$26 ] : zp[1]:40 , reg byte x , reg byte y , +Potential registers zp[1]:41 [ main::$30 ] : zp[1]:41 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:42 [ main::$56 ] : zp[2]:42 , +Potential registers zp[2]:44 [ main::$31 ] : zp[2]:44 , +Potential registers zp[2]:46 [ main::$32 ] : zp[2]:46 , +Potential registers zp[1]:48 [ main::$48 ] : zp[1]:48 , reg byte x , reg byte y , +Potential registers zp[2]:49 [ main::$33 ] : zp[2]:49 , +Potential registers zp[2]:51 [ rand::return#2 ] : zp[2]:51 , +Potential registers zp[2]:53 [ main::$9 ] : zp[2]:53 , +Potential registers zp[2]:55 [ main::$10 ] : zp[2]:55 , +Potential registers zp[1]:57 [ main::$36 ] : zp[1]:57 , reg byte x , reg byte y , +Potential registers zp[2]:58 [ rand::return#3 ] : zp[2]:58 , +Potential registers zp[2]:60 [ main::$11 ] : zp[2]:60 , +Potential registers zp[1]:62 [ main::$12 ] : zp[1]:62 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:63 [ ppuDataTransfer::ppuDataPrepare1_$0 ] : zp[1]:63 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:64 [ ppuDataTransfer::ppuDataPrepare1_$1 ] : zp[1]:64 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:65 [ ppuDataTransfer::ppuDataPut1_val#0 ] : zp[1]:65 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:66 [ ppuDataFill::ppuDataPrepare1_$0 ] : zp[1]:66 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:67 [ ppuDataFill::ppuDataPrepare1_$1 ] : zp[1]:67 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:68 [ rand::$0 ] : zp[2]:68 , +Potential registers zp[2]:70 [ rand_state#0 ] : zp[2]:70 , +Potential registers zp[2]:72 [ rand::$1 ] : zp[2]:72 , +Potential registers zp[2]:74 [ rand_state#1 ] : zp[2]:74 , +Potential registers zp[2]:76 [ rand::$2 ] : zp[2]:76 , +Potential registers zp[2]:78 [ rand::return#0 ] : zp[2]:78 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 3,003: zp[1]:36 [ main::$45 ] 2,502.5: zp[1]:33 [ main::$40 ] 2,260.32: zp[1]:7 [ main::i#10 main::i#4 ] 2,002: zp[2]:34 [ main::$20 ] 2,002: zp[2]:45 [ main::$56 ] 2,002: zp[2]:47 [ main::$31 ] 1,501.5: zp[1]:37 [ main::$44 ] 1,101.1: zp[1]:8 [ main::sprite_idx#3 main::sprite_idx#2 ] 1,001: zp[1]:42 [ main::$26 ] 1,001: zp[1]:44 [ main::$30 ] 1,001: zp[1]:52 [ main::$48 ] 1,001: zp[2]:53 [ main::$33 ] 800.8: zp[1]:43 [ main::$53 ] 667.33: zp[2]:38 [ main::$23 ] 667.33: zp[2]:40 [ main::$25 ] 500.5: zp[1]:49 [ main::$50 ] 500.5: zp[2]:50 [ main::$32 ] 267.9: zp[1]:6 [ main::timer#3 main::timer#15 main::timer#21 ] 263.72: zp[1]:2 [ main::initNES1_i#2 main::initNES1_i#1 ] 235.67: zp[1]:3 [ main::i#14 main::i#2 ] 208.18: zp[1]:4 [ main::timer_2#2 main::timer_2#1 ] 202: zp[1]:27 [ main::initNES1_waitForVBlank1_$0 ] 202: zp[1]:28 [ main::initNES1_waitForVBlank2_$0 ] 202: zp[1]:30 [ main::$14 ] 202: zp[2]:57 [ main::$9 ] 202: zp[1]:61 [ main::$35 ] 202: zp[2]:64 [ main::$11 ] 202: zp[1]:67 [ main::$36 ] 169.83: zp[1]:5 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ] 151.5: zp[1]:32 [ main::$38 ] 101: zp[1]:31 [ main::timer#1 ] 101: zp[2]:59 [ main::$10 ] 101: zp[1]:66 [ main::$12 ] 72.84: zp[1]:29 [ main::h_bar#1 ] -Uplift Scope [ppuDataTransfer] 2,602.6: zp[2]:13 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] 2,002: zp[1]:70 [ ppuDataTransfer::ppuDataPut1_val#0 ] 1,979: zp[2]:15 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] 202: zp[1]:68 [ ppuDataTransfer::ppuDataPrepare1_$0 ] 202: zp[1]:69 [ ppuDataTransfer::ppuDataPrepare1_$1 ] 67.33: zp[2]:9 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] 0: zp[2]:11 [ ppuDataTransfer::cpuData#2 ] -Uplift Scope [rand] 2,002: zp[2]:73 [ rand::$0 ] 2,002: zp[2]:77 [ rand::$1 ] 2,002: zp[2]:81 [ rand::$2 ] 300.75: zp[2]:83 [ rand::return#0 ] 202: zp[2]:55 [ rand::return#2 ] 202: zp[2]:62 [ rand::return#3 ] -Uplift Scope [] 1,501.5: zp[2]:75 [ rand_state#0 ] 1,501.5: zp[2]:79 [ rand_state#1 ] 1,307.08: zp[2]:23 [ rand_state#10 rand_state#17 rand_state#11 ] 105: zp[1]:25 [ scroll_y ] 10.26: zp[1]:26 [ vblank_hit ] -Uplift Scope [ppuDataFill] 3,003: zp[2]:21 [ ppuDataFill::i#2 ppuDataFill::i#1 ] 202: zp[1]:71 [ ppuDataFill::ppuDataPrepare1_$0 ] 202: zp[1]:72 [ ppuDataFill::ppuDataPrepare1_$1 ] 111.22: zp[2]:19 [ ppuDataFill::size#3 ] 67.33: zp[2]:17 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] +Uplift Scope [main] 2,150.3: zp[1]:7 [ main::i#10 main::i#4 ] 2,002: zp[2]:34 [ main::$20 ] 2,002: zp[2]:42 [ main::$56 ] 2,002: zp[2]:44 [ main::$31 ] 1,116.5: zp[1]:8 [ main::sprite_idx#3 main::sprite_idx#2 ] 1,001: zp[1]:40 [ main::$26 ] 1,001: zp[1]:41 [ main::$30 ] 1,001: zp[1]:48 [ main::$48 ] 1,001: zp[2]:49 [ main::$33 ] 864.5: zp[1]:33 [ main::$44 ] 667.33: zp[2]:36 [ main::$23 ] 667.33: zp[2]:38 [ main::$25 ] 500.5: zp[2]:46 [ main::$32 ] 268.9: zp[1]:6 [ main::timer#3 main::timer#15 main::timer#21 ] 263.72: zp[1]:2 [ main::initNES1_i#2 main::initNES1_i#1 ] 230.86: zp[1]:3 [ main::i#14 main::i#2 ] 208.73: zp[1]:4 [ main::timer_2#2 main::timer_2#1 ] 202: zp[1]:27 [ main::initNES1_waitForVBlank1_$0 ] 202: zp[1]:28 [ main::initNES1_waitForVBlank2_$0 ] 202: zp[1]:30 [ main::$14 ] 202: zp[2]:53 [ main::$9 ] 202: zp[2]:60 [ main::$11 ] 202: zp[1]:62 [ main::$12 ] 174.44: zp[1]:5 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ] 151.5: zp[1]:32 [ main::$38 ] 101: zp[1]:31 [ main::timer#1 ] 101: zp[2]:55 [ main::$10 ] 80.12: zp[1]:29 [ main::h_bar#1 ] 50.5: zp[1]:57 [ main::$36 ] +Uplift Scope [ppuDataTransfer] 2,602.6: zp[2]:13 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] 2,002: zp[1]:65 [ ppuDataTransfer::ppuDataPut1_val#0 ] 1,979: zp[2]:15 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] 202: zp[1]:63 [ ppuDataTransfer::ppuDataPrepare1_$0 ] 202: zp[1]:64 [ ppuDataTransfer::ppuDataPrepare1_$1 ] 67.33: zp[2]:9 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] 0: zp[2]:11 [ ppuDataTransfer::cpuData#2 ] +Uplift Scope [rand] 2,002: zp[2]:68 [ rand::$0 ] 2,002: zp[2]:72 [ rand::$1 ] 2,002: zp[2]:76 [ rand::$2 ] 300.75: zp[2]:78 [ rand::return#0 ] 202: zp[2]:51 [ rand::return#2 ] 202: zp[2]:58 [ rand::return#3 ] +Uplift Scope [] 1,501.5: zp[2]:70 [ rand_state#0 ] 1,501.5: zp[2]:74 [ rand_state#1 ] 1,316.27: zp[2]:23 [ rand_state#10 rand_state#17 rand_state#11 ] 105: zp[1]:25 [ scroll_y ] 10.76: zp[1]:26 [ vblank_hit ] +Uplift Scope [ppuDataFill] 3,003: zp[2]:21 [ ppuDataFill::i#2 ppuDataFill::i#1 ] 202: zp[1]:66 [ ppuDataFill::ppuDataPrepare1_$0 ] 202: zp[1]:67 [ ppuDataFill::ppuDataPrepare1_$1 ] 111.22: zp[2]:19 [ ppuDataFill::size#3 ] 67.33: zp[2]:17 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] Uplift Scope [RICOH_2C02] Uplift Scope [RICOH_2A03] Uplift Scope [SpriteData] @@ -3823,87 +3756,77 @@ Uplift Scope [$0] Uplift Scope [vblank] Uplift Scope [__start] -Uplifting [ppuDataTransfer] best 56910 combination zp[2]:13 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] reg byte a [ ppuDataTransfer::ppuDataPut1_val#0 ] zp[2]:15 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] reg byte a [ ppuDataTransfer::ppuDataPrepare1_$0 ] reg byte a [ ppuDataTransfer::ppuDataPrepare1_$1 ] zp[2]:9 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] zp[2]:11 [ ppuDataTransfer::cpuData#2 ] -Uplifting [rand] best 56910 combination zp[2]:73 [ rand::$0 ] zp[2]:77 [ rand::$1 ] zp[2]:81 [ rand::$2 ] zp[2]:83 [ rand::return#0 ] zp[2]:55 [ rand::return#2 ] zp[2]:62 [ rand::return#3 ] -Uplifting [] best 56910 combination zp[2]:75 [ rand_state#0 ] zp[2]:79 [ rand_state#1 ] zp[2]:23 [ rand_state#10 rand_state#17 rand_state#11 ] zp[1]:25 [ scroll_y ] zp[1]:26 [ vblank_hit ] -Uplifting [ppuDataFill] best 56898 combination zp[2]:21 [ ppuDataFill::i#2 ppuDataFill::i#1 ] reg byte a [ ppuDataFill::ppuDataPrepare1_$0 ] reg byte a [ ppuDataFill::ppuDataPrepare1_$1 ] zp[2]:19 [ ppuDataFill::size#3 ] zp[2]:17 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] -Uplifting [RICOH_2C02] best 56898 combination -Uplifting [RICOH_2A03] best 56898 combination -Uplifting [SpriteData] best 56898 combination -Uplifting [RADIX] best 56898 combination -Uplifting [printf_format_number] best 56898 combination -Uplifting [printf_buffer_number] best 56898 combination -Uplifting [printf_format_string] best 56898 combination -Uplifting [$0] best 56898 combination -Uplifting [vblank] best 56898 combination -Uplifting [__start] best 56898 combination -Attempting to uplift remaining variables inzp[1]:36 [ main::$45 ] -Uplifting [main] best 56498 combination reg byte a [ main::$45 ] -Attempting to uplift remaining variables inzp[1]:33 [ main::$40 ] -Uplifting [main] best 55198 combination reg byte y [ main::$40 ] +Uplifting [ppuDataTransfer] best 51990 combination zp[2]:13 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] reg byte a [ ppuDataTransfer::ppuDataPut1_val#0 ] zp[2]:15 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] reg byte a [ ppuDataTransfer::ppuDataPrepare1_$0 ] reg byte a [ ppuDataTransfer::ppuDataPrepare1_$1 ] zp[2]:9 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] zp[2]:11 [ ppuDataTransfer::cpuData#2 ] +Uplifting [rand] best 51990 combination zp[2]:68 [ rand::$0 ] zp[2]:72 [ rand::$1 ] zp[2]:76 [ rand::$2 ] zp[2]:78 [ rand::return#0 ] zp[2]:51 [ rand::return#2 ] zp[2]:58 [ rand::return#3 ] +Uplifting [] best 51990 combination zp[2]:70 [ rand_state#0 ] zp[2]:74 [ rand_state#1 ] zp[2]:23 [ rand_state#10 rand_state#17 rand_state#11 ] zp[1]:25 [ scroll_y ] zp[1]:26 [ vblank_hit ] +Uplifting [ppuDataFill] best 51978 combination zp[2]:21 [ ppuDataFill::i#2 ppuDataFill::i#1 ] reg byte a [ ppuDataFill::ppuDataPrepare1_$0 ] reg byte a [ ppuDataFill::ppuDataPrepare1_$1 ] zp[2]:19 [ ppuDataFill::size#3 ] zp[2]:17 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] +Uplifting [RICOH_2C02] best 51978 combination +Uplifting [RICOH_2A03] best 51978 combination +Uplifting [SpriteData] best 51978 combination +Uplifting [RADIX] best 51978 combination +Uplifting [printf_format_number] best 51978 combination +Uplifting [printf_buffer_number] best 51978 combination +Uplifting [printf_format_string] best 51978 combination +Uplifting [$0] best 51978 combination +Uplifting [vblank] best 51978 combination +Uplifting [__start] best 51978 combination Attempting to uplift remaining variables inzp[1]:7 [ main::i#10 main::i#4 ] -Uplifting [main] best 55198 combination zp[1]:7 [ main::i#10 main::i#4 ] -Attempting to uplift remaining variables inzp[1]:37 [ main::$44 ] -Uplifting [main] best 54498 combination reg byte y [ main::$44 ] +Uplifting [main] best 51978 combination zp[1]:7 [ main::i#10 main::i#4 ] Attempting to uplift remaining variables inzp[1]:8 [ main::sprite_idx#3 main::sprite_idx#2 ] -Uplifting [main] best 54498 combination zp[1]:8 [ main::sprite_idx#3 main::sprite_idx#2 ] -Attempting to uplift remaining variables inzp[1]:42 [ main::$26 ] -Uplifting [main] best 54498 combination zp[1]:42 [ main::$26 ] -Attempting to uplift remaining variables inzp[1]:44 [ main::$30 ] -Uplifting [main] best 53898 combination reg byte a [ main::$30 ] -Attempting to uplift remaining variables inzp[1]:52 [ main::$48 ] -Uplifting [main] best 52598 combination reg byte x [ main::$48 ] -Attempting to uplift remaining variables inzp[1]:43 [ main::$53 ] -Uplifting [main] best 51898 combination reg byte y [ main::$53 ] -Attempting to uplift remaining variables inzp[1]:49 [ main::$50 ] -Uplifting [main] best 51198 combination reg byte y [ main::$50 ] +Uplifting [main] best 51978 combination zp[1]:8 [ main::sprite_idx#3 main::sprite_idx#2 ] +Attempting to uplift remaining variables inzp[1]:40 [ main::$26 ] +Uplifting [main] best 51978 combination zp[1]:40 [ main::$26 ] +Attempting to uplift remaining variables inzp[1]:41 [ main::$30 ] +Uplifting [main] best 51378 combination reg byte a [ main::$30 ] +Attempting to uplift remaining variables inzp[1]:48 [ main::$48 ] +Uplifting [main] best 50078 combination reg byte x [ main::$48 ] +Attempting to uplift remaining variables inzp[1]:33 [ main::$44 ] +Uplifting [main] best 46678 combination reg byte y [ main::$44 ] Attempting to uplift remaining variables inzp[1]:6 [ main::timer#3 main::timer#15 main::timer#21 ] -Uplifting [main] best 51198 combination zp[1]:6 [ main::timer#3 main::timer#15 main::timer#21 ] +Uplifting [main] best 46678 combination zp[1]:6 [ main::timer#3 main::timer#15 main::timer#21 ] Attempting to uplift remaining variables inzp[1]:2 [ main::initNES1_i#2 main::initNES1_i#1 ] -Uplifting [main] best 50868 combination reg byte x [ main::initNES1_i#2 main::initNES1_i#1 ] +Uplifting [main] best 46348 combination reg byte x [ main::initNES1_i#2 main::initNES1_i#1 ] Attempting to uplift remaining variables inzp[1]:3 [ main::i#14 main::i#2 ] -Uplifting [main] best 50758 combination reg byte x [ main::i#14 main::i#2 ] +Uplifting [main] best 46248 combination reg byte x [ main::i#14 main::i#2 ] Attempting to uplift remaining variables inzp[1]:4 [ main::timer_2#2 main::timer_2#1 ] -Uplifting [main] best 50758 combination zp[1]:4 [ main::timer_2#2 main::timer_2#1 ] +Uplifting [main] best 46248 combination zp[1]:4 [ main::timer_2#2 main::timer_2#1 ] Attempting to uplift remaining variables inzp[1]:27 [ main::initNES1_waitForVBlank1_$0 ] -Uplifting [main] best 50698 combination reg byte a [ main::initNES1_waitForVBlank1_$0 ] +Uplifting [main] best 46188 combination reg byte a [ main::initNES1_waitForVBlank1_$0 ] Attempting to uplift remaining variables inzp[1]:28 [ main::initNES1_waitForVBlank2_$0 ] -Uplifting [main] best 50638 combination reg byte a [ main::initNES1_waitForVBlank2_$0 ] +Uplifting [main] best 46128 combination reg byte a [ main::initNES1_waitForVBlank2_$0 ] Attempting to uplift remaining variables inzp[1]:30 [ main::$14 ] -Uplifting [main] best 50578 combination reg byte a [ main::$14 ] -Attempting to uplift remaining variables inzp[1]:61 [ main::$35 ] -Uplifting [main] best 50538 combination reg byte a [ main::$35 ] -Attempting to uplift remaining variables inzp[1]:67 [ main::$36 ] -Uplifting [main] best 50498 combination reg byte a [ main::$36 ] +Uplifting [main] best 46068 combination reg byte a [ main::$14 ] +Attempting to uplift remaining variables inzp[1]:62 [ main::$12 ] +Uplifting [main] best 46008 combination reg byte a [ main::$12 ] Attempting to uplift remaining variables inzp[1]:5 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ] -Uplifting [main] best 50498 combination zp[1]:5 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ] +Uplifting [main] best 46008 combination zp[1]:5 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ] Attempting to uplift remaining variables inzp[1]:32 [ main::$38 ] -Uplifting [main] best 50428 combination reg byte x [ main::$38 ] +Uplifting [main] best 45938 combination reg byte x [ main::$38 ] Attempting to uplift remaining variables inzp[1]:25 [ scroll_y ] -Uplifting [] best 50428 combination zp[1]:25 [ scroll_y ] +Uplifting [] best 45938 combination zp[1]:25 [ scroll_y ] Attempting to uplift remaining variables inzp[1]:31 [ main::timer#1 ] -Uplifting [main] best 50368 combination reg byte x [ main::timer#1 ] -Attempting to uplift remaining variables inzp[1]:66 [ main::$12 ] -Uplifting [main] best 50368 combination zp[1]:66 [ main::$12 ] +Uplifting [main] best 45878 combination reg byte x [ main::timer#1 ] Attempting to uplift remaining variables inzp[1]:29 [ main::h_bar#1 ] -Uplifting [main] best 50368 combination zp[1]:29 [ main::h_bar#1 ] +Uplifting [main] best 45878 combination zp[1]:29 [ main::h_bar#1 ] +Attempting to uplift remaining variables inzp[1]:57 [ main::$36 ] +Uplifting [main] best 45808 combination reg byte y [ main::$36 ] Attempting to uplift remaining variables inzp[1]:26 [ vblank_hit ] -Uplifting [] best 50368 combination zp[1]:26 [ vblank_hit ] +Uplifting [] best 45808 combination zp[1]:26 [ vblank_hit ] Coalescing zero page register [ zp[2]:11 [ ppuDataTransfer::cpuData#2 ] ] with [ zp[2]:15 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:23 [ rand_state#10 rand_state#17 rand_state#11 ] ] with [ zp[2]:75 [ rand_state#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:23 [ rand_state#10 rand_state#17 rand_state#11 rand_state#0 ] ] with [ zp[2]:79 [ rand_state#1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:45 [ main::$56 ] ] with [ zp[2]:47 [ main::$31 ] ] - score: 1 -Coalescing zero page register [ zp[2]:55 [ rand::return#2 ] ] with [ zp[2]:57 [ main::$9 ] ] - score: 1 -Coalescing zero page register [ zp[2]:55 [ rand::return#2 main::$9 ] ] with [ zp[2]:83 [ rand::return#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:62 [ rand::return#3 ] ] with [ zp[2]:64 [ main::$11 ] ] - score: 1 -Coalescing zero page register [ zp[2]:55 [ rand::return#2 main::$9 rand::return#0 ] ] with [ zp[2]:59 [ main::$10 ] ] - score: 1 -Coalescing zero page register [ zp[2]:55 [ rand::return#2 main::$9 rand::return#0 main::$10 ] ] with [ zp[2]:62 [ rand::return#3 main::$11 ] ] - score: 1 +Coalescing zero page register [ zp[2]:23 [ rand_state#10 rand_state#17 rand_state#11 ] ] with [ zp[2]:70 [ rand_state#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:23 [ rand_state#10 rand_state#17 rand_state#11 rand_state#0 ] ] with [ zp[2]:74 [ rand_state#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:42 [ main::$56 ] ] with [ zp[2]:44 [ main::$31 ] ] - score: 1 +Coalescing zero page register [ zp[2]:51 [ rand::return#2 ] ] with [ zp[2]:53 [ main::$9 ] ] - score: 1 +Coalescing zero page register [ zp[2]:51 [ rand::return#2 main::$9 ] ] with [ zp[2]:78 [ rand::return#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:58 [ rand::return#3 ] ] with [ zp[2]:60 [ main::$11 ] ] - score: 1 +Coalescing zero page register [ zp[2]:51 [ rand::return#2 main::$9 rand::return#0 ] ] with [ zp[2]:55 [ main::$10 ] ] - score: 1 +Coalescing zero page register [ zp[2]:51 [ rand::return#2 main::$9 rand::return#0 main::$10 ] ] with [ zp[2]:58 [ rand::return#3 main::$11 ] ] - score: 1 Coalescing zero page register [ zp[2]:17 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] ] with [ zp[2]:9 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] ] Coalescing zero page register [ zp[2]:19 [ ppuDataFill::size#3 ] ] with [ zp[2]:11 [ ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] ] Coalescing zero page register [ zp[2]:21 [ ppuDataFill::i#2 ppuDataFill::i#1 ] ] with [ zp[2]:13 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] ] Coalescing zero page register [ zp[2]:34 [ main::$20 ] ] with [ zp[2]:17 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] ] -Coalescing zero page register [ zp[2]:38 [ main::$23 ] ] with [ zp[2]:19 [ ppuDataFill::size#3 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] ] -Coalescing zero page register [ zp[2]:40 [ main::$25 ] ] with [ zp[2]:21 [ ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] ] +Coalescing zero page register [ zp[2]:36 [ main::$23 ] ] with [ zp[2]:19 [ ppuDataFill::size#3 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] ] +Coalescing zero page register [ zp[2]:38 [ main::$25 ] ] with [ zp[2]:21 [ ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] ] Allocated (was zp[1]:4) zp[1]:2 [ main::timer_2#2 main::timer_2#1 ] Allocated (was zp[1]:5) zp[1]:3 [ main::active_balls#2 main::active_balls#8 main::active_balls#1 ] Allocated (was zp[1]:6) zp[1]:4 [ main::timer#3 main::timer#15 main::timer#21 ] @@ -3914,17 +3837,16 @@ Allocated (was zp[1]:25) zp[1]:9 [ scroll_y ] Allocated (was zp[1]:26) zp[1]:10 [ vblank_hit ] Allocated (was zp[1]:29) zp[1]:11 [ main::h_bar#1 ] Allocated (was zp[2]:34) zp[2]:12 [ main::$20 ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] -Allocated (was zp[2]:38) zp[2]:14 [ main::$23 ppuDataFill::size#3 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] -Allocated (was zp[2]:40) zp[2]:16 [ main::$25 ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] -Allocated (was zp[1]:42) zp[1]:18 [ main::$26 ] -Allocated (was zp[2]:45) zp[2]:19 [ main::$56 main::$31 ] -Allocated (was zp[2]:50) zp[2]:21 [ main::$32 ] -Allocated (was zp[2]:53) zp[2]:23 [ main::$33 ] -Allocated (was zp[2]:55) zp[2]:25 [ rand::return#2 main::$9 rand::return#0 main::$10 rand::return#3 main::$11 ] -Allocated (was zp[1]:66) zp[1]:27 [ main::$12 ] -Allocated (was zp[2]:73) zp[2]:28 [ rand::$0 ] -Allocated (was zp[2]:77) zp[2]:30 [ rand::$1 ] -Allocated (was zp[2]:81) zp[2]:32 [ rand::$2 ] +Allocated (was zp[2]:36) zp[2]:14 [ main::$23 ppuDataFill::size#3 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] +Allocated (was zp[2]:38) zp[2]:16 [ main::$25 ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] +Allocated (was zp[1]:40) zp[1]:18 [ main::$26 ] +Allocated (was zp[2]:42) zp[2]:19 [ main::$56 main::$31 ] +Allocated (was zp[2]:46) zp[2]:21 [ main::$32 ] +Allocated (was zp[2]:49) zp[2]:23 [ main::$33 ] +Allocated (was zp[2]:51) zp[2]:25 [ rand::return#2 main::$9 rand::return#0 main::$10 rand::return#3 main::$11 ] +Allocated (was zp[2]:68) zp[2]:27 [ rand::$0 ] +Allocated (was zp[2]:72) zp[2]:29 [ rand::$1 ] +Allocated (was zp[2]:76) zp[2]:31 [ rand::$2 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -4085,7 +4007,6 @@ main: { .label __9 = $19 .label __10 = $19 .label __11 = $19 - .label __12 = $1b .label __20 = $c .label __23 = $e .label __25 = $10 @@ -4210,14 +4131,14 @@ main: { __b17: // [38] call ppuDataTransfer // Transfer the palette - // [114] phi from main::@17 to ppuDataTransfer [phi:main::@17->ppuDataTransfer] + // [109] phi from main::@17 to ppuDataTransfer [phi:main::@17->ppuDataTransfer] ppuDataTransfer_from___b17: - // [114] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) palette [phi:main::@17->ppuDataTransfer#0] -- pvoz1=pvoc1 + // [109] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) palette [phi:main::@17->ppuDataTransfer#0] -- pvoz1=pvoc1 lda #palette sta.z ppuDataTransfer.cpuData+1 - // [114] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_PALETTE [phi:main::@17->ppuDataTransfer#1] -- pvoz1=pvoc1 + // [109] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_PALETTE [phi:main::@17->ppuDataTransfer#1] -- pvoz1=pvoc1 lda #PPU_PALETTE @@ -4230,14 +4151,14 @@ main: { __b19: // [40] call ppuDataFill // Fill the PPU attribute table - // [127] phi from main::@19 to ppuDataFill [phi:main::@19->ppuDataFill] + // [122] phi from main::@19 to ppuDataFill [phi:main::@19->ppuDataFill] ppuDataFill_from___b19: - // [127] phi (word) ppuDataFill::size#3 = (word)(number) $20*(number) $1e [phi:main::@19->ppuDataFill#0] -- vwuz1=vwuc1 + // [122] phi (word) ppuDataFill::size#3 = (word)(number) $20*(number) $1e [phi:main::@19->ppuDataFill#0] -- vwuz1=vwuc1 lda #<$20*$1e sta.z ppuDataFill.size lda #>$20*$1e sta.z ppuDataFill.size+1 - // [127] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_NAME_TABLE_0 [phi:main::@19->ppuDataFill#1] -- pvoz1=pvoc1 + // [122] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_NAME_TABLE_0 [phi:main::@19->ppuDataFill#1] -- pvoz1=pvoc1 lda #PPU_NAME_TABLE_0 @@ -4249,14 +4170,14 @@ main: { // main::@20 __b20: // [42] call ppuDataFill - // [127] phi from main::@20 to ppuDataFill [phi:main::@20->ppuDataFill] + // [122] phi from main::@20 to ppuDataFill [phi:main::@20->ppuDataFill] ppuDataFill_from___b20: - // [127] phi (word) ppuDataFill::size#3 = (byte) $40 [phi:main::@20->ppuDataFill#0] -- vwuz1=vbuc1 + // [122] phi (word) ppuDataFill::size#3 = (byte) $40 [phi:main::@20->ppuDataFill#0] -- vwuz1=vbuc1 lda #<$40 sta.z ppuDataFill.size lda #>$40 sta.z ppuDataFill.size+1 - // [127] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 [phi:main::@20->ppuDataFill#1] -- pvoz1=pvoc1 + // [122] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 [phi:main::@20->ppuDataFill#1] -- pvoz1=pvoc1 lda #PPU_ATTRIBUTE_TABLE_0 @@ -4268,14 +4189,14 @@ main: { // main::@21 __b21: // [44] call ppuDataTransfer - // [114] phi from main::@21 to ppuDataTransfer [phi:main::@21->ppuDataTransfer] + // [109] phi from main::@21 to ppuDataTransfer [phi:main::@21->ppuDataTransfer] ppuDataTransfer_from___b21: - // [114] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) h_bar_tilemap [phi:main::@21->ppuDataTransfer#0] -- pvoz1=pvoc1 + // [109] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) h_bar_tilemap [phi:main::@21->ppuDataTransfer#0] -- pvoz1=pvoc1 lda #h_bar_tilemap sta.z ppuDataTransfer.cpuData+1 - // [114] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*) 8256 [phi:main::@21->ppuDataTransfer#1] -- pvoz1=pvoc1 + // [109] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*) 8256 [phi:main::@21->ppuDataTransfer#1] -- pvoz1=pvoc1 lda #<$2040 sta.z ppuDataTransfer.ppuDataPrepare1_ppuData lda #>$2040 @@ -4438,13 +4359,13 @@ main: { jmp __b3 // main::@7 __b7: - // [69] (byte~) main::$40 ← (byte) main::i#10 << (byte) 3 -- vbuyy=vbuz1_rol_3 + // [69] (byte~) main::$44 ← (byte) main::i#10 << (byte) 3 -- vbuyy=vbuz1_rol_3 lda.z i asl asl asl tay - // [70] *((word*)(const struct $0*) balls + (byte~) main::$40) ← *((word*)(const struct $0*) balls + (byte~) main::$40) + *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$40) -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_pwuc2_derefidx_vbuyy + // [70] *((word*)(const struct $0*) balls + (byte~) main::$44) ← *((word*)(const struct $0*) balls + (byte~) main::$44) + *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_pwuc2_derefidx_vbuyy clc lda balls,y adc balls+4,y @@ -4452,7 +4373,7 @@ main: { lda balls+1,y adc balls+4+1,y sta balls+1,y - // [71] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) + (byte) $10 -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_vbuc2 + // [71] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) + (byte) $10 -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_vbuc2 clc lda balls+6,y adc #$10 @@ -4460,7 +4381,7 @@ main: { lda balls+6+1,y adc #0 sta balls+6+1,y - // [72] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$40) ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$40) + *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_pwuc2_derefidx_vbuyy + // [72] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) + *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_pwuc2_derefidx_vbuyy clc lda balls+2,y adc balls+6,y @@ -4468,7 +4389,7 @@ main: { lda balls+2+1,y adc balls+6+1,y sta balls+2+1,y - // [73] (word~) main::$20 ← *((word*)(const struct $0*) balls + (byte~) main::$40) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 + // [73] (word~) main::$20 ← *((word*)(const struct $0*) balls + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 lda #0 sta.z __20+1 lda balls+1,y @@ -4483,13 +4404,7 @@ main: { jmp __b11 // main::@11 __b11: - // [75] (byte~) main::$45 ← (byte) main::i#10 << (byte) 3 -- vbuaa=vbuz1_rol_3 - lda.z i - asl - asl - asl - // [76] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$45) ← *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$45) ^ (word) $ffff -- pwuc1_derefidx_vbuaa=pwuc1_derefidx_vbuaa_bxor_vwuc2 - tay + // [75] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) ^ (word) $ffff -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_bxor_vwuc2 lda balls+4,y eor #<$ffff sta balls+4,y @@ -4499,27 +4414,21 @@ main: { jmp __b9 // main::@9 __b9: - // [77] (byte~) main::$44 ← (byte) main::i#10 << (byte) 3 -- vbuyy=vbuz1_rol_3 - lda.z i - asl - asl - asl - tay - // [78] (word~) main::$23 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 + // [76] (word~) main::$23 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 lda #0 sta.z __23+1 lda balls+2+1,y sta.z __23 - // [79] (word~) main::$25 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 + // [77] (word~) main::$25 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 lda #0 sta.z __25+1 lda balls+2+1,y sta.z __25 - // [80] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 -- vbuz1=vbuz2_plus_vbuc1 + // [78] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 -- vbuz1=vbuz2_plus_vbuc1 lax.z h_bar axs #-[8] stx.z __26 - // [81] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 -- vwuz1_lt_vbuz2_then_la1 + // [79] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 -- vwuz1_lt_vbuz2_then_la1 lda.z __23+1 bne !+ lda.z __23 @@ -4529,7 +4438,7 @@ main: { jmp __b24 // main::@24 __b24: - // [82] if((word~) main::$25>=(byte~) main::$26) goto main::@10 -- vwuz1_ge_vbuz2_then_la1 + // [80] if((word~) main::$25>=(byte~) main::$26) goto main::@10 -- vwuz1_ge_vbuz2_then_la1 lda.z __25+1 bne __b10 lda.z __25 @@ -4539,33 +4448,27 @@ main: { jmp __b12 // main::@12 __b12: - // [83] (byte~) main::$53 ← (byte) main::i#10 << (byte) 3 -- vbuyy=vbuz1_rol_3 - lda.z i - asl - asl - asl - tay - // [84] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$53) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$53) ^ (word) $ffff -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_bxor_vwuc2 + // [81] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ^ (word) $ffff -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_bxor_vwuc2 lda balls+6,y eor #<$ffff sta balls+6,y lda balls+6+1,y eor #>$ffff sta balls+6+1,y - // [85] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2 -- vbuaa=vbuz1_minus_2 + // [82] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2 -- vbuaa=vbuz1_minus_2 lda.z h_bar sec sbc #2 - // [86] (word~) main::$56 ← (word)(byte~) main::$30 -- vwuz1=_word_vbuaa + // [83] (word~) main::$56 ← (word)(byte~) main::$30 -- vwuz1=_word_vbuaa sta.z __56 lda #0 sta.z __56+1 - // [87] (word~) main::$31 ← (word~) main::$56 << (byte) 8 -- vwuz1=vwuz1_rol_8 + // [84] (word~) main::$31 ← (word~) main::$56 << (byte) 8 -- vwuz1=vwuz1_rol_8 lda.z __31 sta.z __31+1 lda #0 sta.z __31 - // [88] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$53) ← (word~) main::$31 -- pwuc1_derefidx_vbuyy=vwuz1 + // [85] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) ← (word~) main::$31 -- pwuc1_derefidx_vbuyy=vwuz1 lda.z __31 sta balls+2,y lda.z __31+1 @@ -4573,42 +4476,36 @@ main: { jmp __b10 // main::@10 __b10: - // [89] (byte~) main::$50 ← (byte) main::i#10 << (byte) 3 -- vbuyy=vbuz1_rol_3 - lda.z i - asl - asl - asl - tay - // [90] (word~) main::$32 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$50) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 + // [86] (word~) main::$32 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 lda #0 sta.z __32+1 lda balls+2+1,y sta.z __32 - // [91] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 -- vbuxx=vbuz1_rol_2 + // [87] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 -- vbuxx=vbuz1_rol_2 lda.z sprite_idx asl asl tax - // [92] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 + // [88] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 lda.z __32 sta SPRITE_BUFFER,x - // [93] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a -- pbuc1_derefidx_vbuxx=vbuc2 + // [89] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a -- pbuc1_derefidx_vbuxx=vbuc2 lda #$a sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_TILE,x - // [94] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 -- pbuc1_derefidx_vbuxx=vbuc2 + // [90] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 -- pbuc1_derefidx_vbuxx=vbuc2 lda #3 sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES,x - // [95] (word~) main::$33 ← *((word*)(const struct $0*) balls + (byte~) main::$50) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 + // [91] (word~) main::$33 ← *((word*)(const struct $0*) balls + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 lda #0 sta.z __33+1 lda balls+1,y sta.z __33 - // [96] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 + // [92] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 lda.z __33 sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_X,x - // [97] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3 -- vbuz1=_inc_vbuz1 + // [93] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3 -- vbuz1=_inc_vbuz1 inc.z sprite_idx - // [98] (byte) main::i#4 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + // [94] (byte) main::i#4 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 inc.z i // [63] phi from main::@10 to main::@6 [phi:main::@10->main::@6] __b6_from___b10: @@ -4617,68 +4514,60 @@ main: { jmp __b6 // main::@25 __b25: - // [99] (byte) main::timer#21 ← (byte) main::timer#1 -- vbuz1=vbuxx + // [95] (byte) main::timer#21 ← (byte) main::timer#1 -- vbuz1=vbuxx stx.z timer jmp __b5_from___b25 - // [100] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + // [96] phi from main::@1 to main::@2 [phi:main::@1->main::@2] __b2_from___b1: jmp __b2 // main::@2 __b2: - // [101] call rand - // [137] phi from main::@2 to rand [phi:main::@2->rand] + // [97] call rand + // [132] phi from main::@2 to rand [phi:main::@2->rand] rand_from___b2: - // [137] phi (word) rand_state#10 = (word) rand_state#17 [phi:main::@2->rand#0] -- register_copy + // [132] phi (word) rand_state#10 = (word) rand_state#17 [phi:main::@2->rand#0] -- register_copy jsr rand - // [102] (word) rand::return#2 ← (word) rand::return#0 + // [98] (word) rand::return#2 ← (word) rand::return#0 jmp __b22 // main::@22 __b22: - // [103] (word~) main::$9 ← (word) rand::return#2 - // [104] (word~) main::$10 ← (word~) main::$9 & (word) $3ff -- vwuz1=vwuz1_band_vwuc1 + // [99] (word~) main::$9 ← (word) rand::return#2 + // [100] (word~) main::$10 ← (word~) main::$9 & (word) $3ff -- vwuz1=vwuz1_band_vwuc1 lda.z __10 and #<$3ff sta.z __10 lda.z __10+1 and #>$3ff sta.z __10+1 - // [105] (byte~) main::$35 ← (byte) main::i#14 << (byte) 3 -- vbuaa=vbuxx_rol_3 + // [101] (byte~) main::$36 ← (byte) main::i#14 << (byte) 3 -- vbuyy=vbuxx_rol_3 txa asl asl asl - // [106] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$35) ← (word~) main::$10 -- pwuc1_derefidx_vbuaa=vwuz1 tay + // [102] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$36) ← (word~) main::$10 -- pwuc1_derefidx_vbuyy=vwuz1 lda.z __10 sta balls+4,y lda.z __10+1 sta balls+4+1,y - // [107] call rand - // [137] phi from main::@22 to rand [phi:main::@22->rand] + // [103] call rand + // [132] phi from main::@22 to rand [phi:main::@22->rand] rand_from___b22: - // [137] phi (word) rand_state#10 = (word) rand_state#11 [phi:main::@22->rand#0] -- register_copy + // [132] phi (word) rand_state#10 = (word) rand_state#11 [phi:main::@22->rand#0] -- register_copy jsr rand - // [108] (word) rand::return#3 ← (word) rand::return#0 + // [104] (word) rand::return#3 ← (word) rand::return#0 jmp __b23 // main::@23 __b23: - // [109] (word~) main::$11 ← (word) rand::return#3 - // [110] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff -- vbuz1=vwuz2_band_vbuc1 + // [105] (word~) main::$11 ← (word) rand::return#3 + // [106] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff -- vbuaa=vwuz1_band_vbuc1 lda #$ff and.z __11 - sta.z __12 - // [111] (byte~) main::$36 ← (byte) main::i#14 << (byte) 3 -- vbuaa=vbuxx_rol_3 - txa - asl - asl - asl - // [112] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$36) ← (byte~) main::$12 -- pwuc1_derefidx_vbuaa=vbuz1 - tay - lda.z __12 + // [107] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$36) ← (byte~) main::$12 -- pwuc1_derefidx_vbuyy=vbuaa sta balls+6,y lda #0 sta balls+6+1,y - // [113] (byte) main::i#2 ← ++ (byte) main::i#14 -- vbuxx=_inc_vbuxx + // [108] (byte) main::i#2 ← ++ (byte) main::i#14 -- vbuxx=_inc_vbuxx inx // [48] phi from main::@23 to main::@1 [phi:main::@23->main::@1] __b1_from___b23: @@ -4700,22 +4589,22 @@ ppuDataTransfer: { jmp ppuDataPrepare1 // ppuDataTransfer::ppuDataPrepare1 ppuDataPrepare1: - // [115] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_hi_pvoz1 + // [110] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_hi_pvoz1 lda.z ppuDataPrepare1_ppuData+1 - // [116] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa + // [111] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR - // [117] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_lo_pvoz1 + // [112] (byte~) ppuDataTransfer::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_lo_pvoz1 lda.z ppuDataPrepare1_ppuData - // [118] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa + // [113] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR jmp __b3 // ppuDataTransfer::@3 __b3: - // [119] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 - // [120] phi from ppuDataTransfer::@3 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1] + // [114] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 + // [115] phi from ppuDataTransfer::@3 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1] __b1_from___b3: - // [120] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#6 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#0] -- register_copy - // [120] phi (word) ppuDataTransfer::i#2 = (word) 0 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#1] -- vwuz1=vwuc1 + // [115] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#6 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#0] -- register_copy + // [115] phi (word) ppuDataTransfer::i#2 = (word) 0 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#1] -- vwuz1=vwuc1 lda #<0 sta.z i lda #>0 @@ -4723,7 +4612,7 @@ ppuDataTransfer: { jmp __b1 // ppuDataTransfer::@1 __b1: - // [121] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 -- vwuz1_lt_vbuc1_then_la1 + // [116] if((word) ppuDataTransfer::i#2<(byte) $20*(const byte) SIZEOF_BYTE) goto ppuDataTransfer::@2 -- vwuz1_lt_vbuc1_then_la1 lda.z i+1 bne !+ lda.z i @@ -4733,35 +4622,35 @@ ppuDataTransfer: { jmp __breturn // ppuDataTransfer::@return __breturn: - // [122] return + // [117] return rts // ppuDataTransfer::@2 __b2: - // [123] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) -- vbuaa=_deref_pbuz1 + // [118] (byte) ppuDataTransfer::ppuDataPut1_val#0 ← *((byte*) ppuDataTransfer::cpuSrc#2) -- vbuaa=_deref_pbuz1 ldy #0 lda (cpuSrc),y jmp ppuDataPut1 // ppuDataTransfer::ppuDataPut1 ppuDataPut1: - // [124] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0 -- _deref_pbuc1=vbuaa + // [119] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0 -- _deref_pbuc1=vbuaa sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA jmp __b4 // ppuDataTransfer::@4 __b4: - // [125] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2 -- pbuz1=_inc_pbuz1 + // [120] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2 -- pbuz1=_inc_pbuz1 inc.z cpuSrc bne !+ inc.z cpuSrc+1 !: - // [126] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2 -- vwuz1=_inc_vwuz1 + // [121] (word) ppuDataTransfer::i#1 ← ++ (word) ppuDataTransfer::i#2 -- vwuz1=_inc_vwuz1 inc.z i bne !+ inc.z i+1 !: - // [120] phi from ppuDataTransfer::@4 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1] + // [115] phi from ppuDataTransfer::@4 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1] __b1_from___b4: - // [120] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#0] -- register_copy - // [120] phi (word) ppuDataTransfer::i#2 = (word) ppuDataTransfer::i#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#1] -- register_copy + // [115] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#0] -- register_copy + // [115] phi (word) ppuDataTransfer::i#2 = (word) ppuDataTransfer::i#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#1] -- register_copy jmp __b1 } // ppuDataFill @@ -4776,17 +4665,17 @@ ppuDataFill: { jmp ppuDataPrepare1 // ppuDataFill::ppuDataPrepare1 ppuDataPrepare1: - // [128] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_hi_pvoz1 + // [123] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_hi_pvoz1 lda.z ppuDataPrepare1_ppuData+1 - // [129] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa + // [124] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR - // [130] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_lo_pvoz1 + // [125] (byte~) ppuDataFill::ppuDataPrepare1_$1 ← < (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_lo_pvoz1 lda.z ppuDataPrepare1_ppuData - // [131] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa + // [126] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR - // [132] phi from ppuDataFill::ppuDataPrepare1 to ppuDataFill::@1 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1] + // [127] phi from ppuDataFill::ppuDataPrepare1 to ppuDataFill::@1 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1] __b1_from_ppuDataPrepare1: - // [132] phi (word) ppuDataFill::i#2 = (word) 0 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1#0] -- vwuz1=vwuc1 + // [127] phi (word) ppuDataFill::i#2 = (word) 0 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1#0] -- vwuz1=vwuc1 lda #<0 sta.z i lda #>0 @@ -4795,7 +4684,7 @@ ppuDataFill: { // Transfer to PPU // ppuDataFill::@1 __b1: - // [133] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 -- vwuz1_lt_vwuz2_then_la1 + // [128] if((word) ppuDataFill::i#2<(word) ppuDataFill::size#3) goto ppuDataFill::ppuDataPut1 -- vwuz1_lt_vwuz2_then_la1 lda.z i+1 cmp.z size+1 bcc ppuDataPut1 @@ -4807,24 +4696,24 @@ ppuDataFill: { jmp __breturn // ppuDataFill::@return __breturn: - // [134] return + // [129] return rts // ppuDataFill::ppuDataPut1 ppuDataPut1: - // [135] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [130] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA jmp __b2 // ppuDataFill::@2 __b2: - // [136] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2 -- vwuz1=_inc_vwuz1 + // [131] (word) ppuDataFill::i#1 ← ++ (word) ppuDataFill::i#2 -- vwuz1=_inc_vwuz1 inc.z i bne !+ inc.z i+1 !: - // [132] phi from ppuDataFill::@2 to ppuDataFill::@1 [phi:ppuDataFill::@2->ppuDataFill::@1] + // [127] phi from ppuDataFill::@2 to ppuDataFill::@1 [phi:ppuDataFill::@2->ppuDataFill::@1] __b1_from___b2: - // [132] phi (word) ppuDataFill::i#2 = (word) ppuDataFill::i#1 [phi:ppuDataFill::@2->ppuDataFill::@1#0] -- register_copy + // [127] phi (word) ppuDataFill::i#2 = (word) ppuDataFill::i#1 [phi:ppuDataFill::@2->ppuDataFill::@1#0] -- register_copy jmp __b1 } // rand @@ -4833,11 +4722,11 @@ ppuDataFill: { // Information https://en.wikipedia.org/wiki/Xorshift // Source http://www.retroprogramming.com/2017/07/xorshift-pseudorandom-numbers-in-z80.html rand: { - .label __0 = $1c - .label __1 = $1e - .label __2 = $20 + .label __0 = $1b + .label __1 = $1d + .label __2 = $1f .label return = $19 - // [138] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 -- vwuz1=vwuz2_rol_7 + // [133] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 -- vwuz1=vwuz2_rol_7 lda.z rand_state+1 lsr lda.z rand_state @@ -4846,39 +4735,39 @@ rand: { lda #0 ror sta.z __0 - // [139] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 -- vwuz1=vwuz1_bxor_vwuz2 + // [134] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 -- vwuz1=vwuz1_bxor_vwuz2 lda.z rand_state eor.z __0 sta.z rand_state lda.z rand_state+1 eor.z __0+1 sta.z rand_state+1 - // [140] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 -- vwuz1=vwuz2_ror_9 + // [135] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 -- vwuz1=vwuz2_ror_9 lda.z rand_state+1 lsr sta.z __1 lda #0 sta.z __1+1 - // [141] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 -- vwuz1=vwuz1_bxor_vwuz2 + // [136] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 -- vwuz1=vwuz1_bxor_vwuz2 lda.z rand_state eor.z __1 sta.z rand_state lda.z rand_state+1 eor.z __1+1 sta.z rand_state+1 - // [142] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 -- vwuz1=vwuz2_rol_8 + // [137] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 -- vwuz1=vwuz2_rol_8 lda.z rand_state sta.z __2+1 lda #0 sta.z __2 - // [143] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 -- vwuz1=vwuz1_bxor_vwuz2 + // [138] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 -- vwuz1=vwuz1_bxor_vwuz2 lda.z rand_state eor.z __2 sta.z rand_state lda.z rand_state+1 eor.z __2+1 sta.z rand_state+1 - // [144] (word) rand::return#0 ← (word) rand_state#11 -- vwuz1=vwuz2 + // [139] (word) rand::return#0 ← (word) rand_state#11 -- vwuz1=vwuz2 lda.z rand_state sta.z return lda.z rand_state+1 @@ -4886,7 +4775,7 @@ rand: { jmp __breturn // rand::@return __breturn: - // [145] return + // [140] return rts } // File Data @@ -5066,8 +4955,8 @@ Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #0 Removing instruction lda #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination -Fixing long branch [220] bcc __b2 to bcs -Fixing long branch [244] bne __b25 to beq +Fixing long branch [219] bcc __b2 to bcs +Fixing long branch [243] bne __b25 to beq FINAL SYMBOL TABLE (word) $0::x_position @@ -5147,7 +5036,7 @@ FINAL SYMBOL TABLE (signed word()) main() (word~) main::$10 zp[2]:25 101.0 (word~) main::$11 zp[2]:25 202.0 -(byte~) main::$12 zp[1]:27 101.0 +(byte~) main::$12 reg byte a 202.0 (byte~) main::$14 reg byte a 202.0 (word~) main::$20 zp[2]:12 2002.0 (word~) main::$23 zp[2]:14 667.3333333333334 @@ -5157,15 +5046,10 @@ FINAL SYMBOL TABLE (word~) main::$31 zp[2]:19 2002.0 (word~) main::$32 zp[2]:21 500.5 (word~) main::$33 zp[2]:23 1001.0 -(byte~) main::$35 reg byte a 202.0 -(byte~) main::$36 reg byte a 202.0 +(byte~) main::$36 reg byte y 50.5 (byte~) main::$38 reg byte x 151.5 -(byte~) main::$40 reg byte y 2502.5 -(byte~) main::$44 reg byte y 1501.5 -(byte~) main::$45 reg byte a 3003.0 +(byte~) main::$44 reg byte y 864.5 (byte~) main::$48 reg byte x 1001.0 -(byte~) main::$50 reg byte y 500.5 -(byte~) main::$53 reg byte y 800.8 (word~) main::$56 zp[2]:19 2002.0 (word~) main::$9 zp[2]:25 202.0 (label) main::@1 @@ -5196,13 +5080,13 @@ FINAL SYMBOL TABLE (byte) main::active_balls (byte) main::active_balls#1 active_balls zp[1]:3 75.75 (byte) main::active_balls#2 active_balls zp[1]:3 56.11111111111111 -(byte) main::active_balls#8 active_balls zp[1]:3 37.97297297297297 +(byte) main::active_balls#8 active_balls zp[1]:3 42.57575757575758 (label) main::enableVideoOutput1 (byte) main::h_bar -(byte) main::h_bar#1 h_bar zp[1]:11 72.8409090909091 +(byte) main::h_bar#1 h_bar zp[1]:11 80.125 (byte) main::i -(byte) main::i#10 i zp[1]:5 258.3225806451613 -(byte) main::i#14 reg byte x 33.666666666666664 +(byte) main::i#10 i zp[1]:5 148.2962962962963 +(byte) main::i#14 reg byte x 28.857142857142858 (byte) main::i#2 reg byte x 202.0 (byte) main::i#4 i zp[1]:5 2002.0 (label) main::initNES1 @@ -5223,14 +5107,14 @@ FINAL SYMBOL TABLE (signed word) main::return (byte) main::sprite_idx (byte) main::sprite_idx#2 sprite_idx zp[1]:6 1001.0 -(byte) main::sprite_idx#3 sprite_idx zp[1]:6 100.1 +(byte) main::sprite_idx#3 sprite_idx zp[1]:6 115.5 (byte) main::timer (byte) main::timer#1 reg byte x 101.0 -(byte) main::timer#15 timer zp[1]:4 8.18918918918919 +(byte) main::timer#15 timer zp[1]:4 9.181818181818182 (byte) main::timer#21 timer zp[1]:4 202.0 (byte) main::timer#3 timer zp[1]:4 57.714285714285715 (byte) main::timer_2 -(byte) main::timer_2#1 timer_2 zp[1]:2 6.183673469387754 +(byte) main::timer_2#1 timer_2 zp[1]:2 6.733333333333333 (byte) main::timer_2#2 timer_2 zp[1]:2 202.0 (const to_nomodify byte*) palette[] = { (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4 } (void()) ppuDataFill((nomodify void*) ppuDataFill::ppuData , (byte) ppuDataFill::val , (word) ppuDataFill::size) @@ -5287,9 +5171,9 @@ FINAL SYMBOL TABLE (byte) printf_format_string::justify_left (byte) printf_format_string::min_length (word()) rand() -(word~) rand::$0 zp[2]:28 2002.0 -(word~) rand::$1 zp[2]:30 2002.0 -(word~) rand::$2 zp[2]:32 2002.0 +(word~) rand::$0 zp[2]:27 2002.0 +(word~) rand::$1 zp[2]:29 2002.0 +(word~) rand::$2 zp[2]:31 2002.0 (label) rand::@return (word) rand::return (word) rand::return#0 return zp[2]:25 300.75 @@ -5299,7 +5183,7 @@ FINAL SYMBOL TABLE (word) rand_state#0 rand_state zp[2]:7 1501.5 (word) rand_state#1 rand_state zp[2]:7 1501.5 (word) rand_state#10 rand_state zp[2]:7 1102.0 -(word) rand_state#11 rand_state zp[2]:7 137.75 +(word) rand_state#11 rand_state zp[2]:7 146.93333333333334 (word) rand_state#17 rand_state zp[2]:7 67.33333333333333 (volatile byte) scroll_y loadstore zp[1]:9 105.0 (const to_nomodify byte*) sine_table[(number) $100] = { (byte) $40, (byte) $42, (byte) $43, (byte) $45, (byte) $46, (byte) $48, (byte) $49, (byte) $4b, (byte) $4c, (byte) $4e, (byte) $50, (byte) $51, (byte) $53, (byte) $54, (byte) $56, (byte) $57, (byte) $58, (byte) $5a, (byte) $5b, (byte) $5d, (byte) $5e, (byte) $60, (byte) $61, (byte) $62, (byte) $64, (byte) $65, (byte) $66, (byte) $67, (byte) $69, (byte) $6a, (byte) $6b, (byte) $6c, (byte) $6d, (byte) $6e, (byte) $6f, (byte) $70, (byte) $71, (byte) $72, (byte) $73, (byte) $74, (byte) $75, (byte) $76, (byte) $77, (byte) $78, (byte) $78, (byte) $79, (byte) $7a, (byte) $7b, (byte) $7b, (byte) $7c, (byte) $7c, (byte) $7d, (byte) $7d, (byte) $7e, (byte) $7e, (byte) $7e, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $7e, (byte) $7e, (byte) $7e, (byte) $7d, (byte) $7d, (byte) $7c, (byte) $7c, (byte) $7b, (byte) $7b, (byte) $7a, (byte) $79, (byte) $78, (byte) $78, (byte) $77, (byte) $76, (byte) $75, (byte) $74, (byte) $73, (byte) $72, (byte) $71, (byte) $70, (byte) $6f, (byte) $6e, (byte) $6d, (byte) $6c, (byte) $6b, (byte) $6a, (byte) $69, (byte) $67, (byte) $66, (byte) $65, (byte) $64, (byte) $62, (byte) $61, (byte) $60, (byte) $5e, (byte) $5d, (byte) $5b, (byte) $5a, (byte) $58, (byte) $57, (byte) $56, (byte) $54, (byte) $53, (byte) $51, (byte) $50, (byte) $4e, (byte) $4c, (byte) $4b, (byte) $49, (byte) $48, (byte) $46, (byte) $45, (byte) $43, (byte) $42, (byte) $40, (byte) $3e, (byte) $3d, (byte) $3b, (byte) $3a, (byte) $38, (byte) $37, (byte) $35, (byte) $34, (byte) $32, (byte) $30, (byte) $2f, (byte) $2d, (byte) $2c, (byte) $2a, (byte) $29, (byte) $28, (byte) $26, (byte) $25, (byte) $23, (byte) $22, (byte) $20, (byte) $1f, (byte) $1e, (byte) $1c, (byte) $1b, (byte) $1a, (byte) $19, (byte) $17, (byte) $16, (byte) $15, (byte) $14, (byte) $13, (byte) $12, (byte) $11, (byte) $10, (byte) $f, (byte) $e, (byte) $d, (byte) $c, (byte) $b, (byte) $a, (byte) 9, (byte) 8, (byte) 8, (byte) 7, (byte) 6, (byte) 5, (byte) 5, (byte) 4, (byte) 4, (byte) 3, (byte) 3, (byte) 2, (byte) 2, (byte) 2, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 2, (byte) 2, (byte) 3, (byte) 3, (byte) 4, (byte) 4, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) $e, (byte) $f, (byte) $10, (byte) $11, (byte) $12, (byte) $13, (byte) $14, (byte) $15, (byte) $16, (byte) $17, (byte) $19, (byte) $1a, (byte) $1b, (byte) $1c, (byte) $1e, (byte) $1f, (byte) $20, (byte) $22, (byte) $23, (byte) $25, (byte) $26, (byte) $28, (byte) $29, (byte) $2a, (byte) $2c, (byte) $2d, (byte) $2f, (byte) $30, (byte) $32, (byte) $34, (byte) $35, (byte) $37, (byte) $38, (byte) $3a, (byte) $3b, (byte) $3d, (byte) $3e } @@ -5308,7 +5192,7 @@ interrupt(HARDWARE_STACK)(void()) vblank() (label) vblank::@return (label) vblank::ppuSpriteBufferDmaTransfer1 (struct SpriteData*) vblank::ppuSpriteBufferDmaTransfer1_spriteBuffer -(volatile byte) vblank_hit loadstore zp[1]:10 10.25925925925926 +(volatile byte) vblank_hit loadstore zp[1]:10 10.757281553398059 reg byte x [ main::initNES1_i#2 main::initNES1_i#1 ] reg byte x [ main::i#14 main::i#2 ] @@ -5326,36 +5210,31 @@ zp[1]:11 [ main::h_bar#1 ] reg byte a [ main::$14 ] reg byte x [ main::timer#1 ] reg byte x [ main::$38 ] -reg byte y [ main::$40 ] -zp[2]:12 [ main::$20 ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] -reg byte a [ main::$45 ] reg byte y [ main::$44 ] +zp[2]:12 [ main::$20 ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] zp[2]:14 [ main::$23 ppuDataFill::size#3 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] zp[2]:16 [ main::$25 ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] zp[1]:18 [ main::$26 ] -reg byte y [ main::$53 ] reg byte a [ main::$30 ] zp[2]:19 [ main::$56 main::$31 ] -reg byte y [ main::$50 ] zp[2]:21 [ main::$32 ] reg byte x [ main::$48 ] zp[2]:23 [ main::$33 ] zp[2]:25 [ rand::return#2 main::$9 rand::return#0 main::$10 rand::return#3 main::$11 ] -reg byte a [ main::$35 ] -zp[1]:27 [ main::$12 ] -reg byte a [ main::$36 ] +reg byte y [ main::$36 ] +reg byte a [ main::$12 ] reg byte a [ ppuDataTransfer::ppuDataPrepare1_$0 ] reg byte a [ ppuDataTransfer::ppuDataPrepare1_$1 ] reg byte a [ ppuDataTransfer::ppuDataPut1_val#0 ] reg byte a [ ppuDataFill::ppuDataPrepare1_$0 ] reg byte a [ ppuDataFill::ppuDataPrepare1_$1 ] -zp[2]:28 [ rand::$0 ] -zp[2]:30 [ rand::$1 ] -zp[2]:32 [ rand::$2 ] +zp[2]:27 [ rand::$0 ] +zp[2]:29 [ rand::$1 ] +zp[2]:31 [ rand::$2 ] FINAL ASSEMBLER -Score: 45543 +Score: 40983 // File Comments //#pragma emulator("java -jar /Applications/Nintaco_bin_2020-05-01/Nintaco.jar") @@ -5508,7 +5387,6 @@ main: { .label __9 = $19 .label __10 = $19 .label __11 = $19 - .label __12 = $1b .label __20 = $c .label __23 = $e .label __25 = $10 @@ -5620,13 +5498,13 @@ main: { // ppuDataTransfer(PPU_PALETTE, palette, sizeof(palette)) // [38] call ppuDataTransfer // Transfer the palette - // [114] phi from main::@17 to ppuDataTransfer [phi:main::@17->ppuDataTransfer] - // [114] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) palette [phi:main::@17->ppuDataTransfer#0] -- pvoz1=pvoc1 + // [109] phi from main::@17 to ppuDataTransfer [phi:main::@17->ppuDataTransfer] + // [109] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) palette [phi:main::@17->ppuDataTransfer#0] -- pvoz1=pvoc1 lda #palette sta.z ppuDataTransfer.cpuData+1 - // [114] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_PALETTE [phi:main::@17->ppuDataTransfer#1] -- pvoz1=pvoc1 + // [109] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_PALETTE [phi:main::@17->ppuDataTransfer#1] -- pvoz1=pvoc1 lda #PPU_PALETTE @@ -5637,13 +5515,13 @@ main: { // ppuDataFill(PPU_NAME_TABLE_0, 0, 32*30) // [40] call ppuDataFill // Fill the PPU attribute table - // [127] phi from main::@19 to ppuDataFill [phi:main::@19->ppuDataFill] - // [127] phi (word) ppuDataFill::size#3 = (word)(number) $20*(number) $1e [phi:main::@19->ppuDataFill#0] -- vwuz1=vwuc1 + // [122] phi from main::@19 to ppuDataFill [phi:main::@19->ppuDataFill] + // [122] phi (word) ppuDataFill::size#3 = (word)(number) $20*(number) $1e [phi:main::@19->ppuDataFill#0] -- vwuz1=vwuc1 lda #<$20*$1e sta.z ppuDataFill.size lda #>$20*$1e sta.z ppuDataFill.size+1 - // [127] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_NAME_TABLE_0 [phi:main::@19->ppuDataFill#1] -- pvoz1=pvoc1 + // [122] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_NAME_TABLE_0 [phi:main::@19->ppuDataFill#1] -- pvoz1=pvoc1 lda #PPU_NAME_TABLE_0 @@ -5653,13 +5531,13 @@ main: { // main::@20 // ppuDataFill(PPU_ATTRIBUTE_TABLE_0, 0, 0x40) // [42] call ppuDataFill - // [127] phi from main::@20 to ppuDataFill [phi:main::@20->ppuDataFill] - // [127] phi (word) ppuDataFill::size#3 = (byte) $40 [phi:main::@20->ppuDataFill#0] -- vwuz1=vbuc1 + // [122] phi from main::@20 to ppuDataFill [phi:main::@20->ppuDataFill] + // [122] phi (word) ppuDataFill::size#3 = (byte) $40 [phi:main::@20->ppuDataFill#0] -- vwuz1=vbuc1 lda #<$40 sta.z ppuDataFill.size lda #>$40 sta.z ppuDataFill.size+1 - // [127] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 [phi:main::@20->ppuDataFill#1] -- pvoz1=pvoc1 + // [122] phi (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 = (void*)(const nomodify byte*) PPU_ATTRIBUTE_TABLE_0 [phi:main::@20->ppuDataFill#1] -- pvoz1=pvoc1 lda #PPU_ATTRIBUTE_TABLE_0 @@ -5669,13 +5547,13 @@ main: { // main::@21 // ppuDataTransfer(0x2040, h_bar_tilemap, sizeof(h_bar_tilemap)) // [44] call ppuDataTransfer - // [114] phi from main::@21 to ppuDataTransfer [phi:main::@21->ppuDataTransfer] - // [114] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) h_bar_tilemap [phi:main::@21->ppuDataTransfer#0] -- pvoz1=pvoc1 + // [109] phi from main::@21 to ppuDataTransfer [phi:main::@21->ppuDataTransfer] + // [109] phi (nomodify void*) ppuDataTransfer::cpuData#2 = (void*)(const to_nomodify byte*) h_bar_tilemap [phi:main::@21->ppuDataTransfer#0] -- pvoz1=pvoc1 lda #h_bar_tilemap sta.z ppuDataTransfer.cpuData+1 - // [114] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*) 8256 [phi:main::@21->ppuDataTransfer#1] -- pvoz1=pvoc1 + // [109] phi (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void*) 8256 [phi:main::@21->ppuDataTransfer#1] -- pvoz1=pvoc1 lda #<$2040 sta.z ppuDataTransfer.ppuDataPrepare1_ppuData lda #>$2040 @@ -5826,13 +5704,13 @@ main: { // main::@7 __b7: // balls[i].x_position += balls[i].x_velocity - // [69] (byte~) main::$40 ← (byte) main::i#10 << (byte) 3 -- vbuyy=vbuz1_rol_3 + // [69] (byte~) main::$44 ← (byte) main::i#10 << (byte) 3 -- vbuyy=vbuz1_rol_3 lda.z i asl asl asl tay - // [70] *((word*)(const struct $0*) balls + (byte~) main::$40) ← *((word*)(const struct $0*) balls + (byte~) main::$40) + *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$40) -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_pwuc2_derefidx_vbuyy + // [70] *((word*)(const struct $0*) balls + (byte~) main::$44) ← *((word*)(const struct $0*) balls + (byte~) main::$44) + *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_pwuc2_derefidx_vbuyy clc lda balls,y adc balls+4,y @@ -5841,7 +5719,7 @@ main: { adc balls+4+1,y sta balls+1,y // balls[i].y_velocity += WEIGHT - // [71] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) + (byte) $10 -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_vbuc2 + // [71] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) + (byte) $10 -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_vbuc2 clc lda balls+6,y adc #$10 @@ -5850,7 +5728,7 @@ main: { adc #0 sta balls+6+1,y // balls[i].y_position += (balls[i].y_velocity += WEIGHT) - // [72] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$40) ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$40) + *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$40) -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_pwuc2_derefidx_vbuyy + // [72] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) + *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_plus_pwuc2_derefidx_vbuyy clc lda balls+2,y adc balls+6,y @@ -5859,7 +5737,7 @@ main: { adc balls+6+1,y sta balls+2+1,y // balls[i].x_position >> 8 - // [73] (word~) main::$20 ← *((word*)(const struct $0*) balls + (byte~) main::$40) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 + // [73] (word~) main::$20 ← *((word*)(const struct $0*) balls + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 lda #0 sta.z __20+1 lda balls+1,y @@ -5874,13 +5752,7 @@ main: { !: // main::@11 // balls[i].x_velocity ^= 0xFFFF - // [75] (byte~) main::$45 ← (byte) main::i#10 << (byte) 3 -- vbuaa=vbuz1_rol_3 - lda.z i - asl - asl - asl - // [76] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$45) ← *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$45) ^ (word) $ffff -- pwuc1_derefidx_vbuaa=pwuc1_derefidx_vbuaa_bxor_vwuc2 - tay + // [75] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$44) ^ (word) $ffff -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_bxor_vwuc2 lda balls+4,y eor #<$ffff sta balls+4,y @@ -5890,29 +5762,23 @@ main: { // main::@9 __b9: // balls[i].y_position >> 8 - // [77] (byte~) main::$44 ← (byte) main::i#10 << (byte) 3 -- vbuyy=vbuz1_rol_3 - lda.z i - asl - asl - asl - tay - // [78] (word~) main::$23 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 + // [76] (word~) main::$23 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 lda #0 sta.z __23+1 lda balls+2+1,y sta.z __23 - // [79] (word~) main::$25 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 + // [77] (word~) main::$25 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 lda #0 sta.z __25+1 lda balls+2+1,y sta.z __25 // h_bar + 8 - // [80] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 -- vbuz1=vbuz2_plus_vbuc1 + // [78] (byte~) main::$26 ← (byte) main::h_bar#1 + (byte) 8 -- vbuz1=vbuz2_plus_vbuc1 lax.z h_bar axs #-[8] stx.z __26 // if (((balls[i].y_position >> 8) >= h_bar) && (balls[i].y_position >> 8) < h_bar + 8) - // [81] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 -- vwuz1_lt_vbuz2_then_la1 + // [79] if((word~) main::$23<(byte) main::h_bar#1) goto main::@10 -- vwuz1_lt_vbuz2_then_la1 lda.z __23+1 bne !+ lda.z __23 @@ -5920,7 +5786,7 @@ main: { bcc __b10 !: // main::@24 - // [82] if((word~) main::$25>=(byte~) main::$26) goto main::@10 -- vwuz1_ge_vbuz2_then_la1 + // [80] if((word~) main::$25>=(byte~) main::$26) goto main::@10 -- vwuz1_ge_vbuz2_then_la1 lda.z __25+1 bne __b10 lda.z __25 @@ -5929,13 +5795,7 @@ main: { !: // main::@12 // balls[i].y_velocity ^= 0xFFFF - // [83] (byte~) main::$53 ← (byte) main::i#10 << (byte) 3 -- vbuyy=vbuz1_rol_3 - lda.z i - asl - asl - asl - tay - // [84] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$53) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$53) ^ (word) $ffff -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_bxor_vwuc2 + // [81] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ← *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$44) ^ (word) $ffff -- pwuc1_derefidx_vbuyy=pwuc1_derefidx_vbuyy_bxor_vwuc2 lda balls+6,y eor #<$ffff sta balls+6,y @@ -5943,70 +5803,64 @@ main: { eor #>$ffff sta balls+6+1,y // h_bar - 2 - // [85] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2 -- vbuaa=vbuz1_minus_2 + // [82] (byte~) main::$30 ← (byte) main::h_bar#1 - (byte) 2 -- vbuaa=vbuz1_minus_2 lda.z h_bar sec sbc #2 // (unsigned short)(h_bar - 2) << 8 - // [86] (word~) main::$56 ← (word)(byte~) main::$30 -- vwuz1=_word_vbuaa + // [83] (word~) main::$56 ← (word)(byte~) main::$30 -- vwuz1=_word_vbuaa sta.z __56 lda #0 sta.z __56+1 - // [87] (word~) main::$31 ← (word~) main::$56 << (byte) 8 -- vwuz1=vwuz1_rol_8 + // [84] (word~) main::$31 ← (word~) main::$56 << (byte) 8 -- vwuz1=vwuz1_rol_8 lda.z __31 sta.z __31+1 lda #0 sta.z __31 // balls[i].y_position = ((unsigned short)(h_bar - 2) << 8) - // [88] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$53) ← (word~) main::$31 -- pwuc1_derefidx_vbuyy=vwuz1 + // [85] *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) ← (word~) main::$31 -- pwuc1_derefidx_vbuyy=vwuz1 sta balls+2,y lda.z __31+1 sta balls+2+1,y // main::@10 __b10: // balls[i].y_position >> 8 - // [89] (byte~) main::$50 ← (byte) main::i#10 << (byte) 3 -- vbuyy=vbuz1_rol_3 - lda.z i - asl - asl - asl - tay - // [90] (word~) main::$32 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$50) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 + // [86] (word~) main::$32 ← *((word*)(const struct $0*) balls+(byte) 2 + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 lda #0 sta.z __32+1 lda balls+2+1,y sta.z __32 // SPRITE_BUFFER[sprite_idx].y = (unsigned char) (balls[i].y_position >> 8) - // [91] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 -- vbuxx=vbuz1_rol_2 + // [87] (byte~) main::$48 ← (byte) main::sprite_idx#3 << (byte) 2 -- vbuxx=vbuz1_rol_2 lda.z sprite_idx asl asl tax - // [92] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 + // [88] *((byte*)(const struct SpriteData*) SPRITE_BUFFER + (byte~) main::$48) ← (byte)(word~) main::$32 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 lda.z __32 sta SPRITE_BUFFER,x // SPRITE_BUFFER[sprite_idx].tile = 0x0a - // [93] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a -- pbuc1_derefidx_vbuxx=vbuc2 + // [89] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_TILE + (byte~) main::$48) ← (byte) $a -- pbuc1_derefidx_vbuxx=vbuc2 lda #$a sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_TILE,x // SPRITE_BUFFER[sprite_idx].attributes = 3 - // [94] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 -- pbuc1_derefidx_vbuxx=vbuc2 + // [90] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES + (byte~) main::$48) ← (byte) 3 -- pbuc1_derefidx_vbuxx=vbuc2 lda #3 sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_ATTRIBUTES,x // balls[i].x_position >> 8 - // [95] (word~) main::$33 ← *((word*)(const struct $0*) balls + (byte~) main::$50) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 + // [91] (word~) main::$33 ← *((word*)(const struct $0*) balls + (byte~) main::$44) >> (byte) 8 -- vwuz1=pwuc1_derefidx_vbuyy_ror_8 lda #0 sta.z __33+1 lda balls+1,y sta.z __33 // SPRITE_BUFFER[sprite_idx].x = (unsigned char) (balls[i].x_position >> 8) - // [96] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 + // [92] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X + (byte~) main::$48) ← (byte)(word~) main::$33 -- pbuc1_derefidx_vbuxx=_byte_vwuz1 sta SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_X,x // sprite_idx++; - // [97] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3 -- vbuz1=_inc_vbuz1 + // [93] (byte) main::sprite_idx#2 ← ++ (byte) main::sprite_idx#3 -- vbuz1=_inc_vbuz1 inc.z sprite_idx // for (i = 0; i < active_balls; i++) - // [98] (byte) main::i#4 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + // [94] (byte) main::i#4 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 inc.z i // [63] phi from main::@10 to main::@6 [phi:main::@10->main::@6] // [63] phi (byte) main::sprite_idx#3 = (byte) main::sprite_idx#2 [phi:main::@10->main::@6#0] -- register_copy @@ -6014,23 +5868,23 @@ main: { jmp __b6 // main::@25 __b25: - // [99] (byte) main::timer#21 ← (byte) main::timer#1 -- vbuz1=vbuxx + // [95] (byte) main::timer#21 ← (byte) main::timer#1 -- vbuz1=vbuxx stx.z timer jmp __b5 - // [100] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + // [96] phi from main::@1 to main::@2 [phi:main::@1->main::@2] // main::@2 __b2: // rand() - // [101] call rand - // [137] phi from main::@2 to rand [phi:main::@2->rand] - // [137] phi (word) rand_state#10 = (word) rand_state#17 [phi:main::@2->rand#0] -- register_copy + // [97] call rand + // [132] phi from main::@2 to rand [phi:main::@2->rand] + // [132] phi (word) rand_state#10 = (word) rand_state#17 [phi:main::@2->rand#0] -- register_copy jsr rand // rand() - // [102] (word) rand::return#2 ← (word) rand::return#0 + // [98] (word) rand::return#2 ← (word) rand::return#0 // main::@22 - // [103] (word~) main::$9 ← (word) rand::return#2 + // [99] (word~) main::$9 ← (word) rand::return#2 // rand() & 0x3FF - // [104] (word~) main::$10 ← (word~) main::$9 & (word) $3ff -- vwuz1=vwuz1_band_vwuc1 + // [100] (word~) main::$10 ← (word~) main::$9 & (word) $3ff -- vwuz1=vwuz1_band_vwuc1 lda.z __10 and #<$3ff sta.z __10 @@ -6038,45 +5892,37 @@ main: { and #>$3ff sta.z __10+1 // balls[i].x_velocity = rand() & 0x3FF - // [105] (byte~) main::$35 ← (byte) main::i#14 << (byte) 3 -- vbuaa=vbuxx_rol_3 + // [101] (byte~) main::$36 ← (byte) main::i#14 << (byte) 3 -- vbuyy=vbuxx_rol_3 txa asl asl asl - // [106] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$35) ← (word~) main::$10 -- pwuc1_derefidx_vbuaa=vwuz1 tay + // [102] *((word*)(const struct $0*) balls+(byte) 4 + (byte~) main::$36) ← (word~) main::$10 -- pwuc1_derefidx_vbuyy=vwuz1 lda.z __10 sta balls+4,y lda.z __10+1 sta balls+4+1,y // rand() - // [107] call rand - // [137] phi from main::@22 to rand [phi:main::@22->rand] - // [137] phi (word) rand_state#10 = (word) rand_state#11 [phi:main::@22->rand#0] -- register_copy + // [103] call rand + // [132] phi from main::@22 to rand [phi:main::@22->rand] + // [132] phi (word) rand_state#10 = (word) rand_state#11 [phi:main::@22->rand#0] -- register_copy jsr rand // rand() - // [108] (word) rand::return#3 ← (word) rand::return#0 + // [104] (word) rand::return#3 ← (word) rand::return#0 // main::@23 - // [109] (word~) main::$11 ← (word) rand::return#3 + // [105] (word~) main::$11 ← (word) rand::return#3 // rand() & 0x0FF - // [110] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff -- vbuz1=vwuz2_band_vbuc1 + // [106] (byte~) main::$12 ← (word~) main::$11 & (byte) $ff -- vbuaa=vwuz1_band_vbuc1 lda #$ff and.z __11 - sta.z __12 // balls[i].y_velocity = rand() & 0x0FF - // [111] (byte~) main::$36 ← (byte) main::i#14 << (byte) 3 -- vbuaa=vbuxx_rol_3 - txa - asl - asl - asl - // [112] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$36) ← (byte~) main::$12 -- pwuc1_derefidx_vbuaa=vbuz1 - tay - lda.z __12 + // [107] *((word*)(const struct $0*) balls+(byte) 6 + (byte~) main::$36) ← (byte~) main::$12 -- pwuc1_derefidx_vbuyy=vbuaa sta balls+6,y lda #0 sta balls+6+1,y // for (i = 0; i < MAX_BALLS; i++) - // [113] (byte) main::i#2 ← ++ (byte) main::i#14 -- vbuxx=_inc_vbuxx + // [108] (byte) main::i#2 ← ++ (byte) main::i#14 -- vbuxx=_inc_vbuxx inx // [48] phi from main::@23 to main::@1 [phi:main::@23->main::@1] // [48] phi (word) rand_state#17 = (word) rand_state#11 [phi:main::@23->main::@1#0] -- register_copy @@ -6096,29 +5942,29 @@ ppuDataTransfer: { .label cpuData = $e // ppuDataTransfer::ppuDataPrepare1 // >ppuData - // [115] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_hi_pvoz1 + // [110] (byte~) ppuDataTransfer::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_hi_pvoz1 lda.z ppuDataPrepare1_ppuData+1 // PPU->PPUADDR = >ppuData - // [116] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa + // [111] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataTransfer::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR // PPUADDR = ppuDataTransfer::@1] - // [120] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#6 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#0] -- register_copy - // [120] phi (word) ppuDataTransfer::i#2 = (word) 0 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#1] -- vwuz1=vwuc1 + // [114] (byte*) ppuDataTransfer::cpuSrc#6 ← (byte*)(nomodify void*) ppuDataTransfer::cpuData#2 + // [115] phi from ppuDataTransfer::@3 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1] + // [115] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#6 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#0] -- register_copy + // [115] phi (word) ppuDataTransfer::i#2 = (word) 0 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#1] -- vwuz1=vwuc1 lda #<0 sta.z i sta.z i+1 // ppuDataTransfer::@1 __b1: // for(unsigned int i=0;iPPUDATA = val - // [124] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0 -- _deref_pbuc1=vbuaa + // [119] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) ppuDataTransfer::ppuDataPut1_val#0 -- _deref_pbuc1=vbuaa sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA // ppuDataTransfer::@4 // ppuDataPut(*cpuSrc++); - // [125] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2 -- pbuz1=_inc_pbuz1 + // [120] (byte*) ppuDataTransfer::cpuSrc#1 ← ++ (byte*) ppuDataTransfer::cpuSrc#2 -- pbuz1=_inc_pbuz1 inc.z cpuSrc bne !+ inc.z cpuSrc+1 !: // for(unsigned int i=0;ippuDataTransfer::@1] - // [120] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#0] -- register_copy - // [120] phi (word) ppuDataTransfer::i#2 = (word) ppuDataTransfer::i#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#1] -- register_copy + // [115] phi from ppuDataTransfer::@4 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1] + // [115] phi (byte*) ppuDataTransfer::cpuSrc#2 = (byte*) ppuDataTransfer::cpuSrc#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#0] -- register_copy + // [115] phi (word) ppuDataTransfer::i#2 = (word) ppuDataTransfer::i#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#1] -- register_copy jmp __b1 } // ppuDataFill @@ -6168,19 +6014,19 @@ ppuDataFill: { .label size = $e // ppuDataFill::ppuDataPrepare1 // >ppuData - // [128] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_hi_pvoz1 + // [123] (byte~) ppuDataFill::ppuDataPrepare1_$0 ← > (nomodify void*) ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_hi_pvoz1 lda.z ppuDataPrepare1_ppuData+1 // PPU->PPUADDR = >ppuData - // [129] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa + // [124] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUADDR) ← (byte~) ppuDataFill::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR // PPUADDR = ppuDataFill::@1] - // [132] phi (word) ppuDataFill::i#2 = (word) 0 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1#0] -- vwuz1=vwuc1 + // [127] phi from ppuDataFill::ppuDataPrepare1 to ppuDataFill::@1 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1] + // [127] phi (word) ppuDataFill::i#2 = (word) 0 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1#0] -- vwuz1=vwuc1 lda #<0 sta.z i sta.z i+1 @@ -6188,7 +6034,7 @@ ppuDataFill: { // ppuDataFill::@1 __b1: // for(unsigned int i=0;iPPUDATA = val - // [135] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [130] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUDATA) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA // ppuDataFill::@2 // for(unsigned int i=0;ippuDataFill::@1] - // [132] phi (word) ppuDataFill::i#2 = (word) ppuDataFill::i#1 [phi:ppuDataFill::@2->ppuDataFill::@1#0] -- register_copy + // [127] phi from ppuDataFill::@2 to ppuDataFill::@1 [phi:ppuDataFill::@2->ppuDataFill::@1] + // [127] phi (word) ppuDataFill::i#2 = (word) ppuDataFill::i#1 [phi:ppuDataFill::@2->ppuDataFill::@1#0] -- register_copy jmp __b1 } // rand @@ -6224,12 +6070,12 @@ ppuDataFill: { // Information https://en.wikipedia.org/wiki/Xorshift // Source http://www.retroprogramming.com/2017/07/xorshift-pseudorandom-numbers-in-z80.html rand: { - .label __0 = $1c - .label __1 = $1e - .label __2 = $20 + .label __0 = $1b + .label __1 = $1d + .label __2 = $1f .label return = $19 // rand_state << 7 - // [138] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 -- vwuz1=vwuz2_rol_7 + // [133] (word~) rand::$0 ← (word) rand_state#10 << (byte) 7 -- vwuz1=vwuz2_rol_7 lda.z rand_state+1 lsr lda.z rand_state @@ -6239,7 +6085,7 @@ rand: { ror sta.z __0 // rand_state ^= rand_state << 7 - // [139] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 -- vwuz1=vwuz1_bxor_vwuz2 + // [134] (word) rand_state#0 ← (word) rand_state#10 ^ (word~) rand::$0 -- vwuz1=vwuz1_bxor_vwuz2 lda.z rand_state eor.z __0 sta.z rand_state @@ -6247,13 +6093,13 @@ rand: { eor.z __0+1 sta.z rand_state+1 // rand_state >> 9 - // [140] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 -- vwuz1=vwuz2_ror_9 + // [135] (word~) rand::$1 ← (word) rand_state#0 >> (byte) 9 -- vwuz1=vwuz2_ror_9 lsr sta.z __1 lda #0 sta.z __1+1 // rand_state ^= rand_state >> 9 - // [141] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 -- vwuz1=vwuz1_bxor_vwuz2 + // [136] (word) rand_state#1 ← (word) rand_state#0 ^ (word~) rand::$1 -- vwuz1=vwuz1_bxor_vwuz2 lda.z rand_state eor.z __1 sta.z rand_state @@ -6261,13 +6107,13 @@ rand: { eor.z __1+1 sta.z rand_state+1 // rand_state << 8 - // [142] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 -- vwuz1=vwuz2_rol_8 + // [137] (word~) rand::$2 ← (word) rand_state#1 << (byte) 8 -- vwuz1=vwuz2_rol_8 lda.z rand_state sta.z __2+1 lda #0 sta.z __2 // rand_state ^= rand_state << 8 - // [143] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 -- vwuz1=vwuz1_bxor_vwuz2 + // [138] (word) rand_state#11 ← (word) rand_state#1 ^ (word~) rand::$2 -- vwuz1=vwuz1_bxor_vwuz2 lda.z rand_state eor.z __2 sta.z rand_state @@ -6275,14 +6121,14 @@ rand: { eor.z __2+1 sta.z rand_state+1 // return rand_state; - // [144] (word) rand::return#0 ← (word) rand_state#11 -- vwuz1=vwuz2 + // [139] (word) rand::return#0 ← (word) rand_state#11 -- vwuz1=vwuz2 lda.z rand_state sta.z return lda.z rand_state+1 sta.z return+1 // rand::@return // } - // [145] return + // [140] return rts } // File Data diff --git a/src/test/ref/complex/nes-balls/kickballs-2.sym b/src/test/ref/complex/nes-balls/kickballs-2.sym index 510774c21..791ead17b 100644 --- a/src/test/ref/complex/nes-balls/kickballs-2.sym +++ b/src/test/ref/complex/nes-balls/kickballs-2.sym @@ -75,7 +75,7 @@ (signed word()) main() (word~) main::$10 zp[2]:25 101.0 (word~) main::$11 zp[2]:25 202.0 -(byte~) main::$12 zp[1]:27 101.0 +(byte~) main::$12 reg byte a 202.0 (byte~) main::$14 reg byte a 202.0 (word~) main::$20 zp[2]:12 2002.0 (word~) main::$23 zp[2]:14 667.3333333333334 @@ -85,15 +85,10 @@ (word~) main::$31 zp[2]:19 2002.0 (word~) main::$32 zp[2]:21 500.5 (word~) main::$33 zp[2]:23 1001.0 -(byte~) main::$35 reg byte a 202.0 -(byte~) main::$36 reg byte a 202.0 +(byte~) main::$36 reg byte y 50.5 (byte~) main::$38 reg byte x 151.5 -(byte~) main::$40 reg byte y 2502.5 -(byte~) main::$44 reg byte y 1501.5 -(byte~) main::$45 reg byte a 3003.0 +(byte~) main::$44 reg byte y 864.5 (byte~) main::$48 reg byte x 1001.0 -(byte~) main::$50 reg byte y 500.5 -(byte~) main::$53 reg byte y 800.8 (word~) main::$56 zp[2]:19 2002.0 (word~) main::$9 zp[2]:25 202.0 (label) main::@1 @@ -124,13 +119,13 @@ (byte) main::active_balls (byte) main::active_balls#1 active_balls zp[1]:3 75.75 (byte) main::active_balls#2 active_balls zp[1]:3 56.11111111111111 -(byte) main::active_balls#8 active_balls zp[1]:3 37.97297297297297 +(byte) main::active_balls#8 active_balls zp[1]:3 42.57575757575758 (label) main::enableVideoOutput1 (byte) main::h_bar -(byte) main::h_bar#1 h_bar zp[1]:11 72.8409090909091 +(byte) main::h_bar#1 h_bar zp[1]:11 80.125 (byte) main::i -(byte) main::i#10 i zp[1]:5 258.3225806451613 -(byte) main::i#14 reg byte x 33.666666666666664 +(byte) main::i#10 i zp[1]:5 148.2962962962963 +(byte) main::i#14 reg byte x 28.857142857142858 (byte) main::i#2 reg byte x 202.0 (byte) main::i#4 i zp[1]:5 2002.0 (label) main::initNES1 @@ -151,14 +146,14 @@ (signed word) main::return (byte) main::sprite_idx (byte) main::sprite_idx#2 sprite_idx zp[1]:6 1001.0 -(byte) main::sprite_idx#3 sprite_idx zp[1]:6 100.1 +(byte) main::sprite_idx#3 sprite_idx zp[1]:6 115.5 (byte) main::timer (byte) main::timer#1 reg byte x 101.0 -(byte) main::timer#15 timer zp[1]:4 8.18918918918919 +(byte) main::timer#15 timer zp[1]:4 9.181818181818182 (byte) main::timer#21 timer zp[1]:4 202.0 (byte) main::timer#3 timer zp[1]:4 57.714285714285715 (byte) main::timer_2 -(byte) main::timer_2#1 timer_2 zp[1]:2 6.183673469387754 +(byte) main::timer_2#1 timer_2 zp[1]:2 6.733333333333333 (byte) main::timer_2#2 timer_2 zp[1]:2 202.0 (const to_nomodify byte*) palette[] = { (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4, (byte) $34, (byte) $24, (byte) $14, (byte) 4 } (void()) ppuDataFill((nomodify void*) ppuDataFill::ppuData , (byte) ppuDataFill::val , (word) ppuDataFill::size) @@ -215,9 +210,9 @@ (byte) printf_format_string::justify_left (byte) printf_format_string::min_length (word()) rand() -(word~) rand::$0 zp[2]:28 2002.0 -(word~) rand::$1 zp[2]:30 2002.0 -(word~) rand::$2 zp[2]:32 2002.0 +(word~) rand::$0 zp[2]:27 2002.0 +(word~) rand::$1 zp[2]:29 2002.0 +(word~) rand::$2 zp[2]:31 2002.0 (label) rand::@return (word) rand::return (word) rand::return#0 return zp[2]:25 300.75 @@ -227,7 +222,7 @@ (word) rand_state#0 rand_state zp[2]:7 1501.5 (word) rand_state#1 rand_state zp[2]:7 1501.5 (word) rand_state#10 rand_state zp[2]:7 1102.0 -(word) rand_state#11 rand_state zp[2]:7 137.75 +(word) rand_state#11 rand_state zp[2]:7 146.93333333333334 (word) rand_state#17 rand_state zp[2]:7 67.33333333333333 (volatile byte) scroll_y loadstore zp[1]:9 105.0 (const to_nomodify byte*) sine_table[(number) $100] = { (byte) $40, (byte) $42, (byte) $43, (byte) $45, (byte) $46, (byte) $48, (byte) $49, (byte) $4b, (byte) $4c, (byte) $4e, (byte) $50, (byte) $51, (byte) $53, (byte) $54, (byte) $56, (byte) $57, (byte) $58, (byte) $5a, (byte) $5b, (byte) $5d, (byte) $5e, (byte) $60, (byte) $61, (byte) $62, (byte) $64, (byte) $65, (byte) $66, (byte) $67, (byte) $69, (byte) $6a, (byte) $6b, (byte) $6c, (byte) $6d, (byte) $6e, (byte) $6f, (byte) $70, (byte) $71, (byte) $72, (byte) $73, (byte) $74, (byte) $75, (byte) $76, (byte) $77, (byte) $78, (byte) $78, (byte) $79, (byte) $7a, (byte) $7b, (byte) $7b, (byte) $7c, (byte) $7c, (byte) $7d, (byte) $7d, (byte) $7e, (byte) $7e, (byte) $7e, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $80, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $7e, (byte) $7e, (byte) $7e, (byte) $7d, (byte) $7d, (byte) $7c, (byte) $7c, (byte) $7b, (byte) $7b, (byte) $7a, (byte) $79, (byte) $78, (byte) $78, (byte) $77, (byte) $76, (byte) $75, (byte) $74, (byte) $73, (byte) $72, (byte) $71, (byte) $70, (byte) $6f, (byte) $6e, (byte) $6d, (byte) $6c, (byte) $6b, (byte) $6a, (byte) $69, (byte) $67, (byte) $66, (byte) $65, (byte) $64, (byte) $62, (byte) $61, (byte) $60, (byte) $5e, (byte) $5d, (byte) $5b, (byte) $5a, (byte) $58, (byte) $57, (byte) $56, (byte) $54, (byte) $53, (byte) $51, (byte) $50, (byte) $4e, (byte) $4c, (byte) $4b, (byte) $49, (byte) $48, (byte) $46, (byte) $45, (byte) $43, (byte) $42, (byte) $40, (byte) $3e, (byte) $3d, (byte) $3b, (byte) $3a, (byte) $38, (byte) $37, (byte) $35, (byte) $34, (byte) $32, (byte) $30, (byte) $2f, (byte) $2d, (byte) $2c, (byte) $2a, (byte) $29, (byte) $28, (byte) $26, (byte) $25, (byte) $23, (byte) $22, (byte) $20, (byte) $1f, (byte) $1e, (byte) $1c, (byte) $1b, (byte) $1a, (byte) $19, (byte) $17, (byte) $16, (byte) $15, (byte) $14, (byte) $13, (byte) $12, (byte) $11, (byte) $10, (byte) $f, (byte) $e, (byte) $d, (byte) $c, (byte) $b, (byte) $a, (byte) 9, (byte) 8, (byte) 8, (byte) 7, (byte) 6, (byte) 5, (byte) 5, (byte) 4, (byte) 4, (byte) 3, (byte) 3, (byte) 2, (byte) 2, (byte) 2, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 2, (byte) 2, (byte) 3, (byte) 3, (byte) 4, (byte) 4, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) $e, (byte) $f, (byte) $10, (byte) $11, (byte) $12, (byte) $13, (byte) $14, (byte) $15, (byte) $16, (byte) $17, (byte) $19, (byte) $1a, (byte) $1b, (byte) $1c, (byte) $1e, (byte) $1f, (byte) $20, (byte) $22, (byte) $23, (byte) $25, (byte) $26, (byte) $28, (byte) $29, (byte) $2a, (byte) $2c, (byte) $2d, (byte) $2f, (byte) $30, (byte) $32, (byte) $34, (byte) $35, (byte) $37, (byte) $38, (byte) $3a, (byte) $3b, (byte) $3d, (byte) $3e } @@ -236,7 +231,7 @@ interrupt(HARDWARE_STACK)(void()) vblank() (label) vblank::@return (label) vblank::ppuSpriteBufferDmaTransfer1 (struct SpriteData*) vblank::ppuSpriteBufferDmaTransfer1_spriteBuffer -(volatile byte) vblank_hit loadstore zp[1]:10 10.25925925925926 +(volatile byte) vblank_hit loadstore zp[1]:10 10.757281553398059 reg byte x [ main::initNES1_i#2 main::initNES1_i#1 ] reg byte x [ main::i#14 main::i#2 ] @@ -254,29 +249,24 @@ zp[1]:11 [ main::h_bar#1 ] reg byte a [ main::$14 ] reg byte x [ main::timer#1 ] reg byte x [ main::$38 ] -reg byte y [ main::$40 ] -zp[2]:12 [ main::$20 ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] -reg byte a [ main::$45 ] reg byte y [ main::$44 ] +zp[2]:12 [ main::$20 ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ] zp[2]:14 [ main::$23 ppuDataFill::size#3 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] zp[2]:16 [ main::$25 ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] zp[1]:18 [ main::$26 ] -reg byte y [ main::$53 ] reg byte a [ main::$30 ] zp[2]:19 [ main::$56 main::$31 ] -reg byte y [ main::$50 ] zp[2]:21 [ main::$32 ] reg byte x [ main::$48 ] zp[2]:23 [ main::$33 ] zp[2]:25 [ rand::return#2 main::$9 rand::return#0 main::$10 rand::return#3 main::$11 ] -reg byte a [ main::$35 ] -zp[1]:27 [ main::$12 ] -reg byte a [ main::$36 ] +reg byte y [ main::$36 ] +reg byte a [ main::$12 ] reg byte a [ ppuDataTransfer::ppuDataPrepare1_$0 ] reg byte a [ ppuDataTransfer::ppuDataPrepare1_$1 ] reg byte a [ ppuDataTransfer::ppuDataPut1_val#0 ] reg byte a [ ppuDataFill::ppuDataPrepare1_$0 ] reg byte a [ ppuDataFill::ppuDataPrepare1_$1 ] -zp[2]:28 [ rand::$0 ] -zp[2]:30 [ rand::$1 ] -zp[2]:32 [ rand::$2 ] +zp[2]:27 [ rand::$0 ] +zp[2]:29 [ rand::$1 ] +zp[2]:31 [ rand::$2 ] diff --git a/src/test/ref/complex/splines/truetype-splines.asm b/src/test/ref/complex/splines/truetype-splines.asm index fee254d44..9d5c7e0ae 100644 --- a/src/test/ref/complex/splines/truetype-splines.asm +++ b/src/test/ref/complex/splines/truetype-splines.asm @@ -75,17 +75,17 @@ main: { // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { // x/2 - .label c = $18 + .label c = 3 // Counter used for determining x%2==0 - .label sqr1_hi = 3 + .label sqr1_hi = 4 // Fill mulf_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4 - .label sqr = $b - .label sqr1_lo = 7 + .label sqr = $c + .label sqr1_lo = 8 // Decrease or increase x_255 - initially we decrease - .label sqr2_hi = 9 - .label sqr2_lo = 5 + .label sqr2_hi = $a + .label sqr2_lo = 6 //Start with g(0)=f(255) - .label dir = $f + .label dir = $18 ldx #0 lda #$64 sta.z current_y_1+1 // via = letter_c[i].via - lda.z i - asl - asl - asl + lda.z __21 clc adc.z i tax @@ -428,10 +427,7 @@ show_letter: { adc #>$64 sta.z segment_via_y+1 // segment = { letter_c[i].type, to, via} - lda.z i - asl - asl - asl + lda.z __21 clc adc.z i tay @@ -478,12 +474,12 @@ show_letter: { jmp __b3 } // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. -// memset(void* zp($b) str, byte register(X) c, word zp(9) num) +// memset(void* zp($c) str, byte register(X) c, word zp($a) num) memset: { - .label end = 9 - .label dst = $b - .label num = 9 - .label str = $b + .label end = $a + .label dst = $c + .label num = $a + .label str = $c // if(num>0) lda.z num bne !+ @@ -522,7 +518,7 @@ memset: { jmp __b2 } // 2D-rotate a vector by an angle -// rotate(signed word zp(7) vector_x, signed word zp(9) vector_y, byte register(Y) angle) +// rotate(signed word zp(8) vector_x, signed word zp($a) vector_y, byte register(Y) angle) rotate: { .label __0 = $14 .label __2 = $14 @@ -531,16 +527,16 @@ rotate: { .label __6 = $14 .label __7 = $21 .label __10 = $1d - .label __11 = $2b + .label __11 = $2c .label __12 = $1f .label __13 = $21 - .label vector_x = 7 - .label vector_y = 9 - .label return_x = $b - .label return_y = $d + .label vector_x = 8 + .label vector_y = $a + .label return_x = $c + .label return_y = $e .label cos_a = $10 .label xr = $1d - .label yr = $2b + .label yr = $2c .label sin_a = $10 // cos_a = (signed int) COS[angle] lda COS,y @@ -657,20 +653,20 @@ rotate: { rts } // Draw a line on the bitmap using bresenhams algorithm -// bitmap_line(word zp(3) x1, word zp(5) y1, word zp($b) x2, word zp($d) y2) +// bitmap_line(word zp(4) x1, word zp(6) y1, word zp($c) x2, word zp($e) y2) bitmap_line: { - .label x = 3 - .label y = 5 + .label x = 4 + .label y = 6 .label dx = $21 .label dy = $1d .label sx = $23 .label sy = $1f .label e1 = $12 .label e = $10 - .label x1 = 3 - .label y1 = 5 - .label x2 = $b - .label y2 = $d + .label x1 = 4 + .label y1 = 6 + .label x2 = $c + .label y2 = $e // abs_u16(x2-x1) lda.z x2 sec @@ -882,38 +878,38 @@ bitmap_line: { // Point values must be within [-200 ; 1ff] for the calculation to not overflow. // A quadratic spline is a curve defined by 3 points: P0, P1 and P2. // The curve connects P0 to P2 through a smooth curve that moves towards P1, but does usually not touch it. -// spline_8segB(signed word zp(3) p0_x, signed word zp(5) p0_y, signed word zp($b) p1_x, signed word zp($d) p1_y, signed word zp($19) p2_x, signed word zp($1b) p2_y) +// spline_8segB(signed word zp(4) p0_x, signed word zp(6) p0_y, signed word zp($c) p1_x, signed word zp($e) p1_y, signed word zp($19) p2_x, signed word zp($1b) p2_y) spline_8segB: { .label __0 = $23 .label __1 = $23 - .label __3 = $29 - .label __4 = $29 - .label __6 = $b - .label __8 = $d - .label __10 = $b - .label __12 = $d - .label __18 = 3 - .label __19 = 3 - .label __20 = 5 - .label __21 = 5 - .label __22 = $25 - .label __23 = $25 - .label __24 = $27 - .label __25 = $27 + .label __3 = $2a + .label __4 = $2a + .label __6 = $c + .label __8 = $e + .label __10 = $c + .label __12 = $e + .label __18 = 4 + .label __19 = 4 + .label __20 = 6 + .label __21 = 6 + .label __22 = $26 + .label __23 = $26 + .label __24 = $28 + .label __25 = $28 .label a_x = $23 - .label a_y = $29 - .label b_x = $b - .label b_y = $d - .label i_x = $b - .label i_y = $d + .label a_y = $2a + .label b_x = $c + .label b_y = $e + .label i_x = $c + .label i_y = $e .label j_x = $23 - .label j_y = $29 - .label p_x = 3 - .label p_y = 5 - .label p0_x = 3 - .label p0_y = 5 - .label p1_x = $b - .label p1_y = $d + .label j_y = $2a + .label p_x = 4 + .label p_y = 6 + .label p0_x = 4 + .label p0_y = 6 + .label p1_x = $c + .label p1_y = $e .label p2_x = $19 .label p2_y = $1b // p1.x*2 @@ -1209,9 +1205,10 @@ spline_8segB: { } // Plot the spline in the SPLINE_8SEG array bitmap_plot_spline_8seg: { - .label current_x = 3 - .label current_y = 5 - .label n = $f + .label __4 = $25 + .label current_x = 4 + .label current_y = 6 + .label n = $18 // current = SPLINE_8SEG[0] lda SPLINE_8SEG sta.z current_x @@ -1228,29 +1225,27 @@ bitmap_plot_spline_8seg: { lda.z n asl asl - tax - lda SPLINE_8SEG,x + sta.z __4 + tay + lda SPLINE_8SEG,y sta.z bitmap_line.x2 - lda SPLINE_8SEG+1,x + lda SPLINE_8SEG+1,y sta.z bitmap_line.x2+1 - lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,x + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,y sta.z bitmap_line.y2 - lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y sta.z bitmap_line.y2+1 // bitmap_line((unsigned int)current.x, (unsigned int)current.y, (unsigned int)SPLINE_8SEG[n].x, (unsigned int)SPLINE_8SEG[n].y) jsr bitmap_line // current = SPLINE_8SEG[n] - lda.z n - asl - asl - tax - lda SPLINE_8SEG,x + ldy.z __4 + lda SPLINE_8SEG,y sta.z current_x - lda SPLINE_8SEG+1,x + lda SPLINE_8SEG+1,y sta.z current_x+1 - lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,x + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,y sta.z current_y - lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y sta.z current_y+1 // for(char n:1..8) inc.z n @@ -1264,10 +1259,10 @@ bitmap_plot_spline_8seg: { // Fixes offsets introduced by using unsigned multiplication // mulf16s(signed word zp($10) a, signed word zp($12) b) mulf16s: { - .label __6 = $27 - .label __9 = $29 - .label __11 = $27 - .label __12 = $29 + .label __6 = $28 + .label __9 = $2a + .label __11 = $28 + .label __12 = $2a .label m = $14 .label return = $14 .label a = $10 @@ -1356,9 +1351,9 @@ abs_u16: { } // Get the sign of a 16-bit unsigned number treated as a signed number. // Returns unsigned -1 if the number is -// sgn_u16(word zp($2b) w) +// sgn_u16(word zp($2c) w) sgn_u16: { - .label w = $2b + .label w = $2c .label return = $1f // >w lda.z w+1 @@ -1380,11 +1375,11 @@ sgn_u16: { rts } // Plot a single dot in the bitmap -// bitmap_plot(word zp(3) x, byte register(A) y) +// bitmap_plot(word zp(4) x, byte register(A) y) bitmap_plot: { - .label __0 = $2b - .label plotter = $29 - .label x = 3 + .label __0 = $2c + .label plotter = $2a + .label x = 4 // plotter = (char*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] } tay lda bitmap_plot_yhi,y @@ -1418,14 +1413,14 @@ bitmap_plot: { } // Fast multiply two unsigned ints to a double unsigned int result // Done in assembler to utilize fast addition A+X -// mulf16u(word zp($29) a, word zp($25) b) +// mulf16u(word zp($2a) a, word zp($26) b) mulf16u: { .label memA = $f8 .label memB = $fa .label memR = $fc .label return = $14 - .label a = $29 - .label b = $25 + .label a = $2a + .label b = $26 // *memA = a lda.z a sta memA diff --git a/src/test/ref/complex/splines/truetype-splines.cfg b/src/test/ref/complex/splines/truetype-splines.cfg index 24546efce..2e89890d1 100644 --- a/src/test/ref/complex/splines/truetype-splines.cfg +++ b/src/test/ref/complex/splines/truetype-splines.cfg @@ -178,8 +178,8 @@ show_letter::@1: scope:[show_letter] from show_letter show_letter::@9 [80] (signed word) show_letter::current_y#4 ← phi( show_letter/(signed word) 0 show_letter::@9/(signed word) show_letter::current_y#11 ) [80] (signed word) show_letter::current_x#4 ← phi( show_letter/(signed word) 0 show_letter::@9/(signed word) show_letter::current_x#11 ) [80] (byte) show_letter::i#10 ← phi( show_letter/(byte) 0 show_letter::@9/(byte) show_letter::i#1 ) - [81] (byte~) show_letter::$19 ← (byte) show_letter::i#10 << (byte) 3 - [82] (byte~) show_letter::$16 ← (byte~) show_letter::$19 + (byte) show_letter::i#10 + [81] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3 + [82] (byte~) show_letter::$16 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 [83] (signed word) show_letter::to_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) show_letter::$16) [84] (signed word) show_letter::to_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$16) [85] (signed word) show_letter::to_x#1 ← (signed word) show_letter::to_x#0 - (signed byte) $32 @@ -196,411 +196,408 @@ show_letter::@6: scope:[show_letter] from show_letter::@1 [94] (signed word) show_letter::to_y#2 ← (signed word) rotate::return_y#0 [95] (signed word) show_letter::current_x#10 ← (signed word) show_letter::to_x#2 + (signed byte) $64 [96] (signed word) show_letter::current_y#10 ← (signed word) show_letter::to_y#2 + (signed byte) $64 - [97] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3 - [98] (byte~) show_letter::$17 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 - [99] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$17) - [100] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17) - [101] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 - [102] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 - [103] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 - [104] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 - [105] (byte) rotate::angle#1 ← (byte) show_letter::angle#0 - [106] call rotate - [107] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 - [108] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 + [97] (byte~) show_letter::$17 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 + [98] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$17) + [99] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17) + [100] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 + [101] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 + [102] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 + [103] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 + [104] (byte) rotate::angle#1 ← (byte) show_letter::angle#0 + [105] call rotate + [106] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 + [107] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 to:show_letter::@7 show_letter::@7: scope:[show_letter] from show_letter::@6 - [109] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 - [110] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 - [111] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 - [112] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 - [113] (byte~) show_letter::$23 ← (byte) show_letter::i#10 << (byte) 3 - [114] (byte~) show_letter::$18 ← (byte~) show_letter::$23 + (byte) show_letter::i#10 - [115] (byte) show_letter::segment_type#0 ← *((byte*)(const struct Segment*) letter_c + (byte~) show_letter::$18) - [116] if((byte) show_letter::segment_type#0==(const byte) MOVE_TO) goto show_letter::@3 + [108] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 + [109] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 + [110] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 + [111] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 + [112] (byte~) show_letter::$18 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 + [113] (byte) show_letter::segment_type#0 ← *((byte*)(const struct Segment*) letter_c + (byte~) show_letter::$18) + [114] if((byte) show_letter::segment_type#0==(const byte) MOVE_TO) goto show_letter::@3 to:show_letter::@4 show_letter::@4: scope:[show_letter] from show_letter::@7 - [117] if((byte) show_letter::segment_type#0==(const byte) SPLINE_TO) goto show_letter::@2 + [115] if((byte) show_letter::segment_type#0==(const byte) SPLINE_TO) goto show_letter::@2 to:show_letter::@5 show_letter::@5: scope:[show_letter] from show_letter::@4 - [118] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 - [119] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 - [120] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 - [121] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 - [122] call bitmap_line + [116] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 + [117] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 + [118] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 + [119] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 + [120] call bitmap_line to:show_letter::@3 show_letter::@3: scope:[show_letter] from show_letter::@5 show_letter::@7 show_letter::@8 - [123] (byte) show_letter::i#1 ← ++ (byte) show_letter::i#10 - [124] if((byte) show_letter::i#1!=(byte) $16) goto show_letter::@9 + [121] (byte) show_letter::i#1 ← ++ (byte) show_letter::i#10 + [122] if((byte) show_letter::i#1!=(byte) $16) goto show_letter::@9 to:show_letter::@return show_letter::@return: scope:[show_letter] from show_letter::@3 - [125] return + [123] return to:@return show_letter::@9: scope:[show_letter] from show_letter::@3 - [126] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 - [127] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 + [124] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 + [125] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 to:show_letter::@1 show_letter::@2: scope:[show_letter] from show_letter::@4 - [128] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 - [129] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 - [130] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 - [131] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 - [132] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 - [133] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 - [134] call spline_8segB + [126] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 + [127] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 + [128] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 + [129] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 + [130] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 + [131] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 + [132] call spline_8segB to:show_letter::@8 show_letter::@8: scope:[show_letter] from show_letter::@2 - [135] phi() - [136] call bitmap_plot_spline_8seg + [133] phi() + [134] call bitmap_plot_spline_8seg to:show_letter::@3 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) memset: scope:[memset] from bitmap_clear bitmap_clear::@1 - [137] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) - [137] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const nomodify byte*) BITMAP_SCREEN bitmap_clear::@1/(void*)(const nomodify byte*) BITMAP_GRAPHICS ) - [137] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) - [138] if((word) memset::num#2<=(byte) 0) goto memset::@return + [135] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) + [135] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const nomodify byte*) BITMAP_SCREEN bitmap_clear::@1/(void*)(const nomodify byte*) BITMAP_GRAPHICS ) + [135] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) + [136] if((word) memset::num#2<=(byte) 0) goto memset::@return to:memset::@1 memset::@1: scope:[memset] from memset - [139] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 - [140] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 + [137] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 + [138] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 to:memset::@2 memset::@2: scope:[memset] from memset::@1 memset::@3 - [141] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 ) - [142] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 + [139] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 ) + [140] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 to:memset::@return memset::@return: scope:[memset] from memset memset::@2 - [143] return + [141] return to:@return memset::@3: scope:[memset] from memset::@2 - [144] *((byte*) memset::dst#2) ← (byte) memset::c#4 - [145] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + [142] *((byte*) memset::dst#2) ← (byte) memset::c#4 + [143] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 to:memset::@2 (struct SplineVector16()) rotate((signed word) rotate::vector_x , (signed word) rotate::vector_y , (byte) rotate::angle) rotate: scope:[rotate] from show_letter::@1 show_letter::@6 - [146] (signed word) rotate::vector_y#2 ← phi( show_letter::@1/(signed word) rotate::vector_y#0 show_letter::@6/(signed word) rotate::vector_y#1 ) - [146] (signed word) rotate::vector_x#2 ← phi( show_letter::@1/(signed word) rotate::vector_x#0 show_letter::@6/(signed word) rotate::vector_x#1 ) - [146] (byte) rotate::angle#2 ← phi( show_letter::@1/(byte) rotate::angle#0 show_letter::@6/(byte) rotate::angle#1 ) - [147] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) - [148] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 - [149] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 - [150] call mulf16s - [151] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 + [144] (signed word) rotate::vector_y#2 ← phi( show_letter::@1/(signed word) rotate::vector_y#0 show_letter::@6/(signed word) rotate::vector_y#1 ) + [144] (signed word) rotate::vector_x#2 ← phi( show_letter::@1/(signed word) rotate::vector_x#0 show_letter::@6/(signed word) rotate::vector_x#1 ) + [144] (byte) rotate::angle#2 ← phi( show_letter::@1/(byte) rotate::angle#0 show_letter::@6/(byte) rotate::angle#1 ) + [145] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) + [146] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 + [147] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 + [148] call mulf16s + [149] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 to:rotate::@1 rotate::@1: scope:[rotate] from rotate - [152] (signed dword~) rotate::$0 ← (signed dword) mulf16s::return#2 - [153] (signed word~) rotate::$10 ← (signed word)(signed dword~) rotate::$0 - [154] (signed word) rotate::xr#0 ← (signed word~) rotate::$10 << (byte) 1 - [155] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 - [156] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 - [157] call mulf16s - [158] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 + [150] (signed dword~) rotate::$0 ← (signed dword) mulf16s::return#2 + [151] (signed word~) rotate::$10 ← (signed word)(signed dword~) rotate::$0 + [152] (signed word) rotate::xr#0 ← (signed word~) rotate::$10 << (byte) 1 + [153] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 + [154] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 + [155] call mulf16s + [156] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 to:rotate::@2 rotate::@2: scope:[rotate] from rotate::@1 - [159] (signed dword~) rotate::$2 ← (signed dword) mulf16s::return#3 - [160] (signed word~) rotate::$11 ← (signed word)(signed dword~) rotate::$2 - [161] (signed word) rotate::yr#0 ← (signed word~) rotate::$11 << (byte) 1 - [162] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) - [163] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 - [164] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 - [165] call mulf16s - [166] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 + [157] (signed dword~) rotate::$2 ← (signed dword) mulf16s::return#3 + [158] (signed word~) rotate::$11 ← (signed word)(signed dword~) rotate::$2 + [159] (signed word) rotate::yr#0 ← (signed word~) rotate::$11 << (byte) 1 + [160] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) + [161] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 + [162] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 + [163] call mulf16s + [164] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 to:rotate::@3 rotate::@3: scope:[rotate] from rotate::@2 - [167] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#4 - [168] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$4 - [169] (signed word~) rotate::$5 ← (signed word~) rotate::$12 << (byte) 1 - [170] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$5 - [171] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 - [172] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 - [173] call mulf16s - [174] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 + [165] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#4 + [166] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$4 + [167] (signed word~) rotate::$5 ← (signed word~) rotate::$12 << (byte) 1 + [168] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$5 + [169] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 + [170] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 + [171] call mulf16s + [172] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 to:rotate::@4 rotate::@4: scope:[rotate] from rotate::@3 - [175] (signed dword~) rotate::$6 ← (signed dword) mulf16s::return#10 - [176] (signed word~) rotate::$13 ← (signed word)(signed dword~) rotate::$6 - [177] (signed word~) rotate::$7 ← (signed word~) rotate::$13 << (byte) 1 - [178] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$7 - [179] (byte~) rotate::$8 ← > (signed word) rotate::xr#1 - [180] (byte~) rotate::$9 ← > (signed word) rotate::yr#1 - [181] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$8 - [182] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$9 + [173] (signed dword~) rotate::$6 ← (signed dword) mulf16s::return#10 + [174] (signed word~) rotate::$13 ← (signed word)(signed dword~) rotate::$6 + [175] (signed word~) rotate::$7 ← (signed word~) rotate::$13 << (byte) 1 + [176] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$7 + [177] (byte~) rotate::$8 ← > (signed word) rotate::xr#1 + [178] (byte~) rotate::$9 ← > (signed word) rotate::yr#1 + [179] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$8 + [180] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$9 to:rotate::@return rotate::@return: scope:[rotate] from rotate::@4 - [183] return + [181] return to:@return (void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2) bitmap_line: scope:[bitmap_line] from bitmap_plot_spline_8seg::@1 show_letter::@5 - [184] (word) bitmap_line::y2#11 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y2#13 show_letter::@5/(word) bitmap_line::y2#0 ) - [184] (word) bitmap_line::x2#10 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x2#13 show_letter::@5/(word) bitmap_line::x2#0 ) - [184] (word) bitmap_line::y#0 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y1#1 show_letter::@5/(word) bitmap_line::y1#0 ) - [184] (word) bitmap_line::x#0 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x1#1 show_letter::@5/(word) bitmap_line::x1#0 ) - [185] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 - [186] call abs_u16 - [187] (word) abs_u16::return#0 ← (word) abs_u16::return#4 + [182] (word) bitmap_line::y2#11 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y2#13 show_letter::@5/(word) bitmap_line::y2#0 ) + [182] (word) bitmap_line::x2#10 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x2#13 show_letter::@5/(word) bitmap_line::x2#0 ) + [182] (word) bitmap_line::y#0 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y1#1 show_letter::@5/(word) bitmap_line::y1#0 ) + [182] (word) bitmap_line::x#0 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x1#1 show_letter::@5/(word) bitmap_line::x1#0 ) + [183] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 + [184] call abs_u16 + [185] (word) abs_u16::return#0 ← (word) abs_u16::return#4 to:bitmap_line::@12 bitmap_line::@12: scope:[bitmap_line] from bitmap_line - [188] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 - [189] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 - [190] call abs_u16 - [191] (word) abs_u16::return#1 ← (word) abs_u16::return#4 + [186] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 + [187] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 + [188] call abs_u16 + [189] (word) abs_u16::return#1 ← (word) abs_u16::return#4 to:bitmap_line::@13 bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@12 - [192] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 - [193] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 + [190] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 + [191] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 to:bitmap_line::@18 bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@13 - [194] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 + [192] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 to:bitmap_line::@1 bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::@18 - [195] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 - [196] call sgn_u16 - [197] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 + [193] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 + [194] call sgn_u16 + [195] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 to:bitmap_line::@14 bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@1 - [198] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 - [199] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 - [200] call sgn_u16 - [201] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 + [196] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 + [197] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 + [198] call sgn_u16 + [199] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 to:bitmap_line::@15 bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@14 - [202] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 - [203] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 + [200] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 + [201] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 to:bitmap_line::@5 bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@15 - [204] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 + [202] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 to:bitmap_line::@6 bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@5 bitmap_line::@7 - [205] (word) bitmap_line::e#3 ← phi( bitmap_line::@5/(word) bitmap_line::e#0 bitmap_line::@7/(word) bitmap_line::e#6 ) - [205] (word) bitmap_line::y#4 ← phi( bitmap_line::@5/(word) bitmap_line::y#0 bitmap_line::@7/(word) bitmap_line::y#1 ) - [205] (word) bitmap_line::x#13 ← phi( bitmap_line::@5/(word) bitmap_line::x#0 bitmap_line::@7/(word) bitmap_line::x#12 ) - [206] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 - [207] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 - [208] call bitmap_plot + [203] (word) bitmap_line::e#3 ← phi( bitmap_line::@5/(word) bitmap_line::e#0 bitmap_line::@7/(word) bitmap_line::e#6 ) + [203] (word) bitmap_line::y#4 ← phi( bitmap_line::@5/(word) bitmap_line::y#0 bitmap_line::@7/(word) bitmap_line::y#1 ) + [203] (word) bitmap_line::x#13 ← phi( bitmap_line::@5/(word) bitmap_line::x#0 bitmap_line::@7/(word) bitmap_line::x#12 ) + [204] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 + [205] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 + [206] call bitmap_plot to:bitmap_line::@16 bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@6 - [209] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 - [210] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 - [211] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 + [207] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 + [208] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 + [209] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 to:bitmap_line::@8 bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@16 - [212] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 - [213] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 + [210] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 + [211] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 to:bitmap_line::@7 bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@16 bitmap_line::@8 - [214] (word) bitmap_line::e#6 ← phi( bitmap_line::@16/(word) bitmap_line::e#1 bitmap_line::@8/(word) bitmap_line::e#2 ) - [214] (word) bitmap_line::x#12 ← phi( bitmap_line::@16/(word) bitmap_line::x#13 bitmap_line::@8/(word) bitmap_line::x#1 ) - [215] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 + [212] (word) bitmap_line::e#6 ← phi( bitmap_line::@16/(word) bitmap_line::e#1 bitmap_line::@8/(word) bitmap_line::e#2 ) + [212] (word) bitmap_line::x#12 ← phi( bitmap_line::@16/(word) bitmap_line::x#13 bitmap_line::@8/(word) bitmap_line::x#1 ) + [213] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 to:bitmap_line::@3 bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@7 - [216] (word) bitmap_line::y#7 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@7/(word) bitmap_line::y#1 ) - [216] (word) bitmap_line::x#6 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@7/(word) bitmap_line::x#12 ) - [217] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 - [218] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 - [219] call bitmap_plot + [214] (word) bitmap_line::y#7 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@7/(word) bitmap_line::y#1 ) + [214] (word) bitmap_line::x#6 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@7/(word) bitmap_line::x#12 ) + [215] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 + [216] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 + [217] call bitmap_plot to:bitmap_line::@return bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@3 bitmap_line::@4 - [220] return + [218] return to:@return bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@15 - [221] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 + [219] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 to:bitmap_line::@9 bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@2 - [222] (word) bitmap_line::e1#3 ← phi( bitmap_line::@10/(word) bitmap_line::e1#6 bitmap_line::@2/(word) bitmap_line::e1#0 ) - [222] (word) bitmap_line::y#15 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@2/(word) bitmap_line::y#0 ) - [222] (word) bitmap_line::x#7 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@2/(word) bitmap_line::x#0 ) - [223] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 - [224] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 - [225] call bitmap_plot + [220] (word) bitmap_line::e1#3 ← phi( bitmap_line::@10/(word) bitmap_line::e1#6 bitmap_line::@2/(word) bitmap_line::e1#0 ) + [220] (word) bitmap_line::y#15 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@2/(word) bitmap_line::y#0 ) + [220] (word) bitmap_line::x#7 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@2/(word) bitmap_line::x#0 ) + [221] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 + [222] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 + [223] call bitmap_plot to:bitmap_line::@17 bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@9 - [226] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 - [227] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 - [228] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 + [224] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 + [225] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 + [226] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 to:bitmap_line::@11 bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@17 - [229] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 - [230] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 + [227] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 + [228] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 to:bitmap_line::@10 bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@11 bitmap_line::@17 - [231] (word) bitmap_line::e1#6 ← phi( bitmap_line::@11/(word) bitmap_line::e1#2 bitmap_line::@17/(word) bitmap_line::e1#1 ) - [231] (word) bitmap_line::y#13 ← phi( bitmap_line::@11/(word) bitmap_line::y#2 bitmap_line::@17/(word) bitmap_line::y#15 ) - [232] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 + [229] (word) bitmap_line::e1#6 ← phi( bitmap_line::@11/(word) bitmap_line::e1#2 bitmap_line::@17/(word) bitmap_line::e1#1 ) + [229] (word) bitmap_line::y#13 ← phi( bitmap_line::@11/(word) bitmap_line::y#2 bitmap_line::@17/(word) bitmap_line::y#15 ) + [230] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 to:bitmap_line::@3 bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@18 - [233] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 - [234] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 - [235] call bitmap_plot + [231] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 + [232] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 + [233] call bitmap_plot to:bitmap_line::@return (void()) spline_8segB((signed word) spline_8segB::p0_x , (signed word) spline_8segB::p0_y , (signed word) spline_8segB::p1_x , (signed word) spline_8segB::p1_y , (signed word) spline_8segB::p2_x , (signed word) spline_8segB::p2_y) spline_8segB: scope:[spline_8segB] from show_letter::@2 - [236] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 - [237] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 - [238] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 - [239] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 - [240] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 - [241] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 - [242] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 - [243] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 - [244] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 - [245] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 - [246] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 - [247] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 - [248] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 - [249] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 - [250] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 - [251] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 - [252] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 - [253] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 + [234] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 + [235] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 + [236] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 + [237] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 + [238] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 + [239] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 + [240] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 + [241] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 + [242] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 + [243] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 + [244] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 + [245] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 + [246] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 + [247] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 + [248] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 + [249] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 + [250] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 + [251] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 to:spline_8segB::@1 spline_8segB::@1: scope:[spline_8segB] from spline_8segB spline_8segB::@1 - [254] (signed word) spline_8segB::i_y#2 ← phi( spline_8segB/(signed word) spline_8segB::i_y#0 spline_8segB::@1/(signed word) spline_8segB::i_y#1 ) - [254] (signed word) spline_8segB::i_x#2 ← phi( spline_8segB/(signed word) spline_8segB::i_x#0 spline_8segB::@1/(signed word) spline_8segB::i_x#1 ) - [254] (byte) spline_8segB::n#2 ← phi( spline_8segB/(byte) 0 spline_8segB::@1/(byte) spline_8segB::n#1 ) - [254] (signed word) spline_8segB::p_y#2 ← phi( spline_8segB/(signed word) spline_8segB::p_y#0 spline_8segB::@1/(signed word) spline_8segB::p_y#1 ) - [254] (signed word) spline_8segB::p_x#2 ← phi( spline_8segB/(signed word) spline_8segB::p_x#0 spline_8segB::@1/(signed word) spline_8segB::p_x#1 ) - [255] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 - [256] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 - [257] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 - [258] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 - [259] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 - [260] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 - [261] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 - [262] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 - [263] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 - [264] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 - [265] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 - [266] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2 - [267] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1 + [252] (signed word) spline_8segB::i_y#2 ← phi( spline_8segB/(signed word) spline_8segB::i_y#0 spline_8segB::@1/(signed word) spline_8segB::i_y#1 ) + [252] (signed word) spline_8segB::i_x#2 ← phi( spline_8segB/(signed word) spline_8segB::i_x#0 spline_8segB::@1/(signed word) spline_8segB::i_x#1 ) + [252] (byte) spline_8segB::n#2 ← phi( spline_8segB/(byte) 0 spline_8segB::@1/(byte) spline_8segB::n#1 ) + [252] (signed word) spline_8segB::p_y#2 ← phi( spline_8segB/(signed word) spline_8segB::p_y#0 spline_8segB::@1/(signed word) spline_8segB::p_y#1 ) + [252] (signed word) spline_8segB::p_x#2 ← phi( spline_8segB/(signed word) spline_8segB::p_x#0 spline_8segB::@1/(signed word) spline_8segB::p_x#1 ) + [253] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 + [254] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 + [255] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 + [256] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 + [257] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 + [258] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 + [259] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 + [260] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 + [261] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 + [262] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 + [263] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 + [264] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2 + [265] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1 to:spline_8segB::@2 spline_8segB::@2: scope:[spline_8segB] from spline_8segB::@1 - [268] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 - [269] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 - [270] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 - [271] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 - [272] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 - [273] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 + [266] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 + [267] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 + [268] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 + [269] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 + [270] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 + [271] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 to:spline_8segB::@return spline_8segB::@return: scope:[spline_8segB] from spline_8segB::@2 - [274] return + [272] return to:@return (void()) bitmap_plot_spline_8seg() bitmap_plot_spline_8seg: scope:[bitmap_plot_spline_8seg] from show_letter::@8 - [275] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) - [276] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) + [273] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) + [274] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) to:bitmap_plot_spline_8seg::@1 bitmap_plot_spline_8seg::@1: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg bitmap_plot_spline_8seg::@2 - [277] (signed word) bitmap_plot_spline_8seg::current_y#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::@2/(signed word) bitmap_plot_spline_8seg::current_y#1 ) - [277] (signed word) bitmap_plot_spline_8seg::current_x#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::@2/(signed word) bitmap_plot_spline_8seg::current_x#1 ) - [277] (byte) bitmap_plot_spline_8seg::n#2 ← phi( bitmap_plot_spline_8seg/(byte) 1 bitmap_plot_spline_8seg::@2/(byte) bitmap_plot_spline_8seg::n#1 ) - [278] (byte~) bitmap_plot_spline_8seg::$3 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 - [279] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 - [280] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 - [281] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$3) - [282] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$3) - [283] call bitmap_line + [275] (signed word) bitmap_plot_spline_8seg::current_y#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::@2/(signed word) bitmap_plot_spline_8seg::current_y#1 ) + [275] (signed word) bitmap_plot_spline_8seg::current_x#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::@2/(signed word) bitmap_plot_spline_8seg::current_x#1 ) + [275] (byte) bitmap_plot_spline_8seg::n#2 ← phi( bitmap_plot_spline_8seg/(byte) 1 bitmap_plot_spline_8seg::@2/(byte) bitmap_plot_spline_8seg::n#1 ) + [276] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 + [277] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 + [278] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 + [279] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) + [280] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) + [281] call bitmap_line to:bitmap_plot_spline_8seg::@2 bitmap_plot_spline_8seg::@2: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg::@1 - [284] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 - [285] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) - [286] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) - [287] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2 - [288] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@1 + [282] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) + [283] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) + [284] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2 + [285] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@1 to:bitmap_plot_spline_8seg::@return bitmap_plot_spline_8seg::@return: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg::@2 - [289] return + [286] return to:@return (signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b) mulf16s: scope:[mulf16s] from rotate rotate::@1 rotate::@2 rotate::@3 - [290] (signed word) mulf16s::b#4 ← phi( rotate/(signed word) mulf16s::b#0 rotate::@1/(signed word) mulf16s::b#1 rotate::@2/(signed word) mulf16s::b#2 rotate::@3/(signed word) mulf16s::b#3 ) - [290] (signed word) mulf16s::a#4 ← phi( rotate/(signed word) mulf16s::a#0 rotate::@1/(signed word) mulf16s::a#1 rotate::@2/(signed word) mulf16s::a#2 rotate::@3/(signed word) mulf16s::a#3 ) - [291] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 - [292] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 - [293] call mulf16u - [294] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 + [287] (signed word) mulf16s::b#4 ← phi( rotate/(signed word) mulf16s::b#0 rotate::@1/(signed word) mulf16s::b#1 rotate::@2/(signed word) mulf16s::b#2 rotate::@3/(signed word) mulf16s::b#3 ) + [287] (signed word) mulf16s::a#4 ← phi( rotate/(signed word) mulf16s::a#0 rotate::@1/(signed word) mulf16s::a#1 rotate::@2/(signed word) mulf16s::a#2 rotate::@3/(signed word) mulf16s::a#3 ) + [288] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 + [289] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 + [290] call mulf16u + [291] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 to:mulf16s::@5 mulf16s::@5: scope:[mulf16s] from mulf16s - [295] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 - [296] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 + [292] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 + [293] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 to:mulf16s::@3 mulf16s::@3: scope:[mulf16s] from mulf16s::@5 - [297] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 - [298] (word~) mulf16s::$11 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#4 - [299] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$11 + [294] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 + [295] (word~) mulf16s::$11 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#4 + [296] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$11 to:mulf16s::@1 mulf16s::@1: scope:[mulf16s] from mulf16s::@3 mulf16s::@5 - [300] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 ) - [301] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 + [297] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 ) + [298] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 to:mulf16s::@4 mulf16s::@4: scope:[mulf16s] from mulf16s::@1 - [302] (word~) mulf16s::$9 ← > (dword) mulf16s::m#5 - [303] (word~) mulf16s::$12 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::a#4 - [304] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$12 + [299] (word~) mulf16s::$9 ← > (dword) mulf16s::m#5 + [300] (word~) mulf16s::$12 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::a#4 + [301] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$12 to:mulf16s::@2 mulf16s::@2: scope:[mulf16s] from mulf16s::@1 mulf16s::@4 - [305] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) - [306] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 + [302] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) + [303] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 to:mulf16s::@return mulf16s::@return: scope:[mulf16s] from mulf16s::@2 - [307] return + [304] return to:@return (word()) abs_u16((word) abs_u16::w) abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@12 - [308] (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@12/(word) abs_u16::w#1 ) - [309] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 - [310] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 - [311] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 + [305] (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@12/(word) abs_u16::w#1 ) + [306] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 + [307] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 + [308] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 to:abs_u16::@return abs_u16::@1: scope:[abs_u16] from abs_u16 - [312] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 + [309] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 to:abs_u16::@return abs_u16::@return: scope:[abs_u16] from abs_u16 abs_u16::@1 - [313] (word) abs_u16::return#4 ← phi( abs_u16::@1/(word) abs_u16::return#2 abs_u16/(word) abs_u16::w#2 ) - [314] return + [310] (word) abs_u16::return#4 ← phi( abs_u16::@1/(word) abs_u16::return#2 abs_u16/(word) abs_u16::w#2 ) + [311] return to:@return (word()) sgn_u16((word) sgn_u16::w) sgn_u16: scope:[sgn_u16] from bitmap_line::@1 bitmap_line::@14 - [315] (word) sgn_u16::w#2 ← phi( bitmap_line::@1/(word) sgn_u16::w#0 bitmap_line::@14/(word) sgn_u16::w#1 ) - [316] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 - [317] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 - [318] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 + [312] (word) sgn_u16::w#2 ← phi( bitmap_line::@1/(word) sgn_u16::w#0 bitmap_line::@14/(word) sgn_u16::w#1 ) + [313] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 + [314] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 + [315] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 to:sgn_u16::@return sgn_u16::@1: scope:[sgn_u16] from sgn_u16 - [319] phi() + [316] phi() to:sgn_u16::@return sgn_u16::@return: scope:[sgn_u16] from sgn_u16 sgn_u16::@1 - [320] (word) sgn_u16::return#4 ← phi( sgn_u16::@1/(byte) -1 sgn_u16/(byte) 1 ) - [321] return + [317] (word) sgn_u16::return#4 ← phi( sgn_u16::@1/(byte) -1 sgn_u16/(byte) 1 ) + [318] return to:@return (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9 - [322] (word) bitmap_plot::x#4 ← phi( bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@6/(word) bitmap_plot::x#1 bitmap_line::@9/(word) bitmap_plot::x#3 ) - [322] (byte) bitmap_plot::y#4 ← phi( bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@6/(byte) bitmap_plot::y#1 bitmap_line::@9/(byte) bitmap_plot::y#3 ) - [323] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) - [324] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8 - [325] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 - [326] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#4 - [327] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) + [319] (word) bitmap_plot::x#4 ← phi( bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@6/(word) bitmap_plot::x#1 bitmap_line::@9/(word) bitmap_plot::x#3 ) + [319] (byte) bitmap_plot::y#4 ← phi( bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@6/(byte) bitmap_plot::y#1 bitmap_line::@9/(byte) bitmap_plot::y#3 ) + [320] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) + [321] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8 + [322] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 + [323] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#4 + [324] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot - [328] return + [325] return to:@return (dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b) mulf16u: scope:[mulf16u] from mulf16s - [329] *((const nomodify word*) mulf16u::memA) ← (word) mulf16u::a#0 - [330] *((const nomodify word*) mulf16u::memB) ← (word) mulf16u::b#0 + [326] *((const nomodify word*) mulf16u::memA) ← (word) mulf16u::a#0 + [327] *((const nomodify word*) mulf16u::memB) ← (word) mulf16u::b#0 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } - [332] (dword) mulf16u::return#0 ← *((const nomodify dword*) mulf16u::memR) + [329] (dword) mulf16u::return#0 ← *((const nomodify dword*) mulf16u::memR) to:mulf16u::@return mulf16u::@return: scope:[mulf16u] from mulf16u - [333] return + [330] return to:@return diff --git a/src/test/ref/complex/splines/truetype-splines.log b/src/test/ref/complex/splines/truetype-splines.log index 338d320d9..5b951825d 100644 --- a/src/test/ref/complex/splines/truetype-splines.log +++ b/src/test/ref/complex/splines/truetype-splines.log @@ -3374,6 +3374,10 @@ Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) bitmap_clear::fgcol#2 (const nomodify byte) WHITE Identical Phi Values (byte) bitmap_clear::bgcol#2 (const nomodify byte) BLACK Successful SSA optimization Pass2IdenticalPhiElimination +Identified duplicate assignment right side [230] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3 +Identified duplicate assignment right side [247] (byte~) show_letter::$23 ← (byte) show_letter::i#10 << (byte) 3 +Identified duplicate assignment right side [276] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 +Successful SSA optimization Pass2DuplicateRValueIdentification Constant right-side identified [68] (byte~) bitmap_clear::$0 ← (const nomodify byte) WHITE << (byte) 4 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) bitmap_clear::$0 = WHITE<<4 @@ -3385,6 +3389,9 @@ Eliminating unused constant (const byte) SIZEOF_STRUCT_SEGMENT Successful SSA optimization PassNEliminateUnusedVars Constant inlined bitmap_clear::$0 = (const nomodify byte) WHITE<<(byte) 4 Successful SSA optimization Pass2ConstantInlining +Alias show_letter::$21 = show_letter::$19 show_letter::$23 +Alias bitmap_plot_spline_8seg::$4 = bitmap_plot_spline_8seg::$3 +Successful SSA optimization Pass2AliasElimination Constant (const byte) bitmap_clear::col#0 = WHITE<<4 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) memset::c#0 = bitmap_clear::col#0 @@ -3444,11 +3451,11 @@ Adding NOP phi() at start of sgn_u16::@1 CALL GRAPH Calls in [main] to mulf_init:1 bitmap_init:3 bitmap_clear:5 bitmap_clear:18 show_letter:20 Calls in [bitmap_clear] to memset:106 memset:108 -Calls in [show_letter] to rotate:125 rotate:144 bitmap_line:164 spline_8segB:178 bitmap_plot_spline_8seg:180 -Calls in [rotate] to mulf16s:200 mulf16s:209 mulf16s:219 mulf16s:229 -Calls in [bitmap_line] to abs_u16:243 abs_u16:248 sgn_u16:255 sgn_u16:260 bitmap_plot:273 bitmap_plot:290 bitmap_plot:307 bitmap_plot:328 -Calls in [bitmap_plot_spline_8seg] to bitmap_line:390 -Calls in [mulf16s] to mulf16u:403 +Calls in [show_letter] to rotate:125 rotate:143 bitmap_line:162 spline_8segB:176 bitmap_plot_spline_8seg:178 +Calls in [rotate] to mulf16s:198 mulf16s:207 mulf16s:217 mulf16s:227 +Calls in [bitmap_line] to abs_u16:241 abs_u16:246 sgn_u16:253 sgn_u16:258 bitmap_plot:271 bitmap_plot:288 bitmap_plot:305 bitmap_plot:326 +Calls in [bitmap_plot_spline_8seg] to bitmap_line:388 +Calls in [mulf16s] to mulf16u:400 Created 64 initial phi equivalence classes Coalesced [28] main::angle#10 ← main::angle#1 @@ -3478,83 +3485,83 @@ Coalesced [104] bitmap_init::bits#6 ← bitmap_init::bits#1 Coalesced [122] rotate::angle#5 ← rotate::angle#0 Coalesced [123] rotate::vector_x#6 ← rotate::vector_x#0 Coalesced [124] rotate::vector_y#5 ← rotate::vector_y#0 -Coalesced [141] rotate::angle#6 ← rotate::angle#1 -Coalesced [142] rotate::vector_x#7 ← rotate::vector_x#1 -Coalesced [143] rotate::vector_y#6 ← rotate::vector_y#1 -Coalesced [160] bitmap_line::x#21 ← bitmap_line::x1#0 -Coalesced [161] bitmap_line::y#21 ← bitmap_line::y1#0 -Coalesced [162] bitmap_line::x2#14 ← bitmap_line::x2#0 -Coalesced [163] bitmap_line::y2#14 ← bitmap_line::y2#0 -Coalesced [169] show_letter::i#13 ← show_letter::i#1 -Not coalescing [170] show_letter::current_x#11 ← show_letter::current_x#10 -Not coalescing [171] show_letter::current_y#11 ← show_letter::current_y#10 -Coalesced [193] memset::dst#5 ← memset::dst#1 -Coalesced [198] mulf16s::a#9 ← mulf16s::a#0 -Coalesced [199] mulf16s::b#8 ← mulf16s::b#0 -Coalesced [207] mulf16s::a#10 ← mulf16s::a#1 -Coalesced [208] mulf16s::b#9 ← mulf16s::b#1 -Coalesced [217] mulf16s::a#11 ← mulf16s::a#2 -Coalesced [218] mulf16s::b#10 ← mulf16s::b#2 -Coalesced [227] mulf16s::a#12 ← mulf16s::a#3 -Coalesced [228] mulf16s::b#11 ← mulf16s::b#3 -Coalesced [242] abs_u16::w#5 ← abs_u16::w#0 -Coalesced [247] abs_u16::w#6 ← abs_u16::w#1 -Coalesced [254] sgn_u16::w#3 ← sgn_u16::w#0 -Coalesced [259] sgn_u16::w#4 ← sgn_u16::w#1 -Coalesced [265] bitmap_line::x#22 ← bitmap_line::x#0 -Coalesced [266] bitmap_line::y#22 ← bitmap_line::y#0 -Coalesced [267] bitmap_line::e#7 ← bitmap_line::e#0 -Coalesced [271] bitmap_plot::y#7 ← bitmap_plot::y#1 -Coalesced [272] bitmap_plot::x#7 ← bitmap_plot::x#1 -Coalesced [279] bitmap_line::x#25 ← bitmap_line::x#1 -Coalesced [280] bitmap_line::e#10 ← bitmap_line::e#2 -Coalesced [283] bitmap_line::x#27 ← bitmap_line::x#12 -Coalesced [284] bitmap_line::y#25 ← bitmap_line::y#1 -Coalesced [288] bitmap_plot::y#5 ← bitmap_plot::y#2 -Coalesced [289] bitmap_plot::x#5 ← bitmap_plot::x#2 -Coalesced [293] bitmap_line::x#23 ← bitmap_line::x#12 -Coalesced [294] bitmap_line::y#23 ← bitmap_line::y#1 -Coalesced [295] bitmap_line::e#8 ← bitmap_line::e#6 -Coalesced (already) [296] bitmap_line::x#24 ← bitmap_line::x#13 -Coalesced [297] bitmap_line::e#9 ← bitmap_line::e#1 -Coalesced [299] bitmap_line::x#29 ← bitmap_line::x#0 -Coalesced [300] bitmap_line::y#27 ← bitmap_line::y#0 -Coalesced [301] bitmap_line::e1#8 ← bitmap_line::e1#0 -Coalesced [305] bitmap_plot::y#8 ← bitmap_plot::y#3 -Coalesced [306] bitmap_plot::x#8 ← bitmap_plot::x#3 -Coalesced [313] bitmap_line::y#28 ← bitmap_line::y#2 -Coalesced [314] bitmap_line::e1#9 ← bitmap_line::e1#2 -Coalesced [317] bitmap_line::x#26 ← bitmap_line::x#15 -Coalesced [318] bitmap_line::y#24 ← bitmap_line::y#13 -Coalesced (already) [319] bitmap_line::x#28 ← bitmap_line::x#15 -Coalesced (already) [320] bitmap_line::y#26 ← bitmap_line::y#13 -Coalesced [321] bitmap_line::e1#7 ← bitmap_line::e1#6 -Coalesced (already) [322] bitmap_line::y#29 ← bitmap_line::y#15 -Coalesced [323] bitmap_line::e1#10 ← bitmap_line::e1#1 -Coalesced [326] bitmap_plot::y#6 ← bitmap_plot::y#0 -Coalesced [327] bitmap_plot::x#6 ← bitmap_plot::x#0 -Coalesced [348] spline_8segB::p_x#4 ← spline_8segB::p_x#0 -Coalesced [349] spline_8segB::p_y#4 ← spline_8segB::p_y#0 -Coalesced [350] spline_8segB::i_x#3 ← spline_8segB::i_x#0 -Coalesced [351] spline_8segB::i_y#3 ← spline_8segB::i_y#0 -Coalesced [373] spline_8segB::p_x#5 ← spline_8segB::p_x#1 -Coalesced [374] spline_8segB::p_y#5 ← spline_8segB::p_y#1 -Coalesced [375] spline_8segB::n#3 ← spline_8segB::n#1 -Coalesced [376] spline_8segB::i_x#4 ← spline_8segB::i_x#1 -Coalesced [377] spline_8segB::i_y#4 ← spline_8segB::i_y#1 -Coalesced [380] bitmap_plot_spline_8seg::current_x#3 ← bitmap_plot_spline_8seg::current_x#0 -Coalesced [381] bitmap_plot_spline_8seg::current_y#3 ← bitmap_plot_spline_8seg::current_y#0 -Coalesced [386] bitmap_line::x#20 ← bitmap_line::x1#1 -Coalesced [387] bitmap_line::y#20 ← bitmap_line::y1#1 -Coalesced [397] bitmap_plot_spline_8seg::n#4 ← bitmap_plot_spline_8seg::n#1 -Coalesced [398] bitmap_plot_spline_8seg::current_x#4 ← bitmap_plot_spline_8seg::current_x#1 -Coalesced [399] bitmap_plot_spline_8seg::current_y#4 ← bitmap_plot_spline_8seg::current_y#1 -Coalesced [410] mulf16s::m#7 ← mulf16s::m#1 -Coalesced [416] mulf16s::m#10 ← mulf16s::m#2 -Coalesced [420] mulf16s::m#9 ← mulf16s::m#5 -Coalesced [421] mulf16s::m#8 ← mulf16s::m#0 -Coalesced [426] abs_u16::return#9 ← abs_u16::w#2 -Coalesced [430] abs_u16::return#8 ← abs_u16::return#2 +Coalesced [140] rotate::angle#6 ← rotate::angle#1 +Coalesced [141] rotate::vector_x#7 ← rotate::vector_x#1 +Coalesced [142] rotate::vector_y#6 ← rotate::vector_y#1 +Coalesced [158] bitmap_line::x#21 ← bitmap_line::x1#0 +Coalesced [159] bitmap_line::y#21 ← bitmap_line::y1#0 +Coalesced [160] bitmap_line::x2#14 ← bitmap_line::x2#0 +Coalesced [161] bitmap_line::y2#14 ← bitmap_line::y2#0 +Coalesced [167] show_letter::i#13 ← show_letter::i#1 +Not coalescing [168] show_letter::current_x#11 ← show_letter::current_x#10 +Not coalescing [169] show_letter::current_y#11 ← show_letter::current_y#10 +Coalesced [191] memset::dst#5 ← memset::dst#1 +Coalesced [196] mulf16s::a#9 ← mulf16s::a#0 +Coalesced [197] mulf16s::b#8 ← mulf16s::b#0 +Coalesced [205] mulf16s::a#10 ← mulf16s::a#1 +Coalesced [206] mulf16s::b#9 ← mulf16s::b#1 +Coalesced [215] mulf16s::a#11 ← mulf16s::a#2 +Coalesced [216] mulf16s::b#10 ← mulf16s::b#2 +Coalesced [225] mulf16s::a#12 ← mulf16s::a#3 +Coalesced [226] mulf16s::b#11 ← mulf16s::b#3 +Coalesced [240] abs_u16::w#5 ← abs_u16::w#0 +Coalesced [245] abs_u16::w#6 ← abs_u16::w#1 +Coalesced [252] sgn_u16::w#3 ← sgn_u16::w#0 +Coalesced [257] sgn_u16::w#4 ← sgn_u16::w#1 +Coalesced [263] bitmap_line::x#22 ← bitmap_line::x#0 +Coalesced [264] bitmap_line::y#22 ← bitmap_line::y#0 +Coalesced [265] bitmap_line::e#7 ← bitmap_line::e#0 +Coalesced [269] bitmap_plot::y#7 ← bitmap_plot::y#1 +Coalesced [270] bitmap_plot::x#7 ← bitmap_plot::x#1 +Coalesced [277] bitmap_line::x#25 ← bitmap_line::x#1 +Coalesced [278] bitmap_line::e#10 ← bitmap_line::e#2 +Coalesced [281] bitmap_line::x#27 ← bitmap_line::x#12 +Coalesced [282] bitmap_line::y#25 ← bitmap_line::y#1 +Coalesced [286] bitmap_plot::y#5 ← bitmap_plot::y#2 +Coalesced [287] bitmap_plot::x#5 ← bitmap_plot::x#2 +Coalesced [291] bitmap_line::x#23 ← bitmap_line::x#12 +Coalesced [292] bitmap_line::y#23 ← bitmap_line::y#1 +Coalesced [293] bitmap_line::e#8 ← bitmap_line::e#6 +Coalesced (already) [294] bitmap_line::x#24 ← bitmap_line::x#13 +Coalesced [295] bitmap_line::e#9 ← bitmap_line::e#1 +Coalesced [297] bitmap_line::x#29 ← bitmap_line::x#0 +Coalesced [298] bitmap_line::y#27 ← bitmap_line::y#0 +Coalesced [299] bitmap_line::e1#8 ← bitmap_line::e1#0 +Coalesced [303] bitmap_plot::y#8 ← bitmap_plot::y#3 +Coalesced [304] bitmap_plot::x#8 ← bitmap_plot::x#3 +Coalesced [311] bitmap_line::y#28 ← bitmap_line::y#2 +Coalesced [312] bitmap_line::e1#9 ← bitmap_line::e1#2 +Coalesced [315] bitmap_line::x#26 ← bitmap_line::x#15 +Coalesced [316] bitmap_line::y#24 ← bitmap_line::y#13 +Coalesced (already) [317] bitmap_line::x#28 ← bitmap_line::x#15 +Coalesced (already) [318] bitmap_line::y#26 ← bitmap_line::y#13 +Coalesced [319] bitmap_line::e1#7 ← bitmap_line::e1#6 +Coalesced (already) [320] bitmap_line::y#29 ← bitmap_line::y#15 +Coalesced [321] bitmap_line::e1#10 ← bitmap_line::e1#1 +Coalesced [324] bitmap_plot::y#6 ← bitmap_plot::y#0 +Coalesced [325] bitmap_plot::x#6 ← bitmap_plot::x#0 +Coalesced [346] spline_8segB::p_x#4 ← spline_8segB::p_x#0 +Coalesced [347] spline_8segB::p_y#4 ← spline_8segB::p_y#0 +Coalesced [348] spline_8segB::i_x#3 ← spline_8segB::i_x#0 +Coalesced [349] spline_8segB::i_y#3 ← spline_8segB::i_y#0 +Coalesced [371] spline_8segB::p_x#5 ← spline_8segB::p_x#1 +Coalesced [372] spline_8segB::p_y#5 ← spline_8segB::p_y#1 +Coalesced [373] spline_8segB::n#3 ← spline_8segB::n#1 +Coalesced [374] spline_8segB::i_x#4 ← spline_8segB::i_x#1 +Coalesced [375] spline_8segB::i_y#4 ← spline_8segB::i_y#1 +Coalesced [378] bitmap_plot_spline_8seg::current_x#3 ← bitmap_plot_spline_8seg::current_x#0 +Coalesced [379] bitmap_plot_spline_8seg::current_y#3 ← bitmap_plot_spline_8seg::current_y#0 +Coalesced [384] bitmap_line::x#20 ← bitmap_line::x1#1 +Coalesced [385] bitmap_line::y#20 ← bitmap_line::y1#1 +Coalesced [394] bitmap_plot_spline_8seg::n#4 ← bitmap_plot_spline_8seg::n#1 +Coalesced [395] bitmap_plot_spline_8seg::current_x#4 ← bitmap_plot_spline_8seg::current_x#1 +Coalesced [396] bitmap_plot_spline_8seg::current_y#4 ← bitmap_plot_spline_8seg::current_y#1 +Coalesced [407] mulf16s::m#7 ← mulf16s::m#1 +Coalesced [413] mulf16s::m#10 ← mulf16s::m#2 +Coalesced [417] mulf16s::m#9 ← mulf16s::m#5 +Coalesced [418] mulf16s::m#8 ← mulf16s::m#0 +Coalesced [423] abs_u16::return#9 ← abs_u16::w#2 +Coalesced [427] abs_u16::return#8 ← abs_u16::return#2 Coalesced down to 49 phi equivalence classes Culled Empty Block (label) main::@13 Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return @@ -3816,8 +3823,8 @@ show_letter::@1: scope:[show_letter] from show_letter show_letter::@9 [80] (signed word) show_letter::current_y#4 ← phi( show_letter/(signed word) 0 show_letter::@9/(signed word) show_letter::current_y#11 ) [80] (signed word) show_letter::current_x#4 ← phi( show_letter/(signed word) 0 show_letter::@9/(signed word) show_letter::current_x#11 ) [80] (byte) show_letter::i#10 ← phi( show_letter/(byte) 0 show_letter::@9/(byte) show_letter::i#1 ) - [81] (byte~) show_letter::$19 ← (byte) show_letter::i#10 << (byte) 3 - [82] (byte~) show_letter::$16 ← (byte~) show_letter::$19 + (byte) show_letter::i#10 + [81] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3 + [82] (byte~) show_letter::$16 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 [83] (signed word) show_letter::to_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) show_letter::$16) [84] (signed word) show_letter::to_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$16) [85] (signed word) show_letter::to_x#1 ← (signed word) show_letter::to_x#0 - (signed byte) $32 @@ -3834,413 +3841,410 @@ show_letter::@6: scope:[show_letter] from show_letter::@1 [94] (signed word) show_letter::to_y#2 ← (signed word) rotate::return_y#0 [95] (signed word) show_letter::current_x#10 ← (signed word) show_letter::to_x#2 + (signed byte) $64 [96] (signed word) show_letter::current_y#10 ← (signed word) show_letter::to_y#2 + (signed byte) $64 - [97] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3 - [98] (byte~) show_letter::$17 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 - [99] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$17) - [100] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17) - [101] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 - [102] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 - [103] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 - [104] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 - [105] (byte) rotate::angle#1 ← (byte) show_letter::angle#0 - [106] call rotate - [107] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 - [108] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 + [97] (byte~) show_letter::$17 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 + [98] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$17) + [99] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17) + [100] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 + [101] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 + [102] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 + [103] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 + [104] (byte) rotate::angle#1 ← (byte) show_letter::angle#0 + [105] call rotate + [106] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 + [107] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 to:show_letter::@7 show_letter::@7: scope:[show_letter] from show_letter::@6 - [109] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 - [110] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 - [111] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 - [112] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 - [113] (byte~) show_letter::$23 ← (byte) show_letter::i#10 << (byte) 3 - [114] (byte~) show_letter::$18 ← (byte~) show_letter::$23 + (byte) show_letter::i#10 - [115] (byte) show_letter::segment_type#0 ← *((byte*)(const struct Segment*) letter_c + (byte~) show_letter::$18) - [116] if((byte) show_letter::segment_type#0==(const byte) MOVE_TO) goto show_letter::@3 + [108] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 + [109] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 + [110] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 + [111] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 + [112] (byte~) show_letter::$18 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 + [113] (byte) show_letter::segment_type#0 ← *((byte*)(const struct Segment*) letter_c + (byte~) show_letter::$18) + [114] if((byte) show_letter::segment_type#0==(const byte) MOVE_TO) goto show_letter::@3 to:show_letter::@4 show_letter::@4: scope:[show_letter] from show_letter::@7 - [117] if((byte) show_letter::segment_type#0==(const byte) SPLINE_TO) goto show_letter::@2 + [115] if((byte) show_letter::segment_type#0==(const byte) SPLINE_TO) goto show_letter::@2 to:show_letter::@5 show_letter::@5: scope:[show_letter] from show_letter::@4 - [118] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 - [119] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 - [120] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 - [121] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 - [122] call bitmap_line + [116] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 + [117] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 + [118] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 + [119] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 + [120] call bitmap_line to:show_letter::@3 show_letter::@3: scope:[show_letter] from show_letter::@5 show_letter::@7 show_letter::@8 - [123] (byte) show_letter::i#1 ← ++ (byte) show_letter::i#10 - [124] if((byte) show_letter::i#1!=(byte) $16) goto show_letter::@9 + [121] (byte) show_letter::i#1 ← ++ (byte) show_letter::i#10 + [122] if((byte) show_letter::i#1!=(byte) $16) goto show_letter::@9 to:show_letter::@return show_letter::@return: scope:[show_letter] from show_letter::@3 - [125] return + [123] return to:@return show_letter::@9: scope:[show_letter] from show_letter::@3 - [126] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 - [127] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 + [124] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 + [125] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 to:show_letter::@1 show_letter::@2: scope:[show_letter] from show_letter::@4 - [128] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 - [129] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 - [130] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 - [131] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 - [132] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 - [133] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 - [134] call spline_8segB + [126] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 + [127] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 + [128] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 + [129] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 + [130] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 + [131] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 + [132] call spline_8segB to:show_letter::@8 show_letter::@8: scope:[show_letter] from show_letter::@2 - [135] phi() - [136] call bitmap_plot_spline_8seg + [133] phi() + [134] call bitmap_plot_spline_8seg to:show_letter::@3 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) memset: scope:[memset] from bitmap_clear bitmap_clear::@1 - [137] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) - [137] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const nomodify byte*) BITMAP_SCREEN bitmap_clear::@1/(void*)(const nomodify byte*) BITMAP_GRAPHICS ) - [137] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) - [138] if((word) memset::num#2<=(byte) 0) goto memset::@return + [135] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) + [135] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const nomodify byte*) BITMAP_SCREEN bitmap_clear::@1/(void*)(const nomodify byte*) BITMAP_GRAPHICS ) + [135] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) + [136] if((word) memset::num#2<=(byte) 0) goto memset::@return to:memset::@1 memset::@1: scope:[memset] from memset - [139] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 - [140] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 + [137] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 + [138] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 to:memset::@2 memset::@2: scope:[memset] from memset::@1 memset::@3 - [141] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 ) - [142] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 + [139] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 ) + [140] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 to:memset::@return memset::@return: scope:[memset] from memset memset::@2 - [143] return + [141] return to:@return memset::@3: scope:[memset] from memset::@2 - [144] *((byte*) memset::dst#2) ← (byte) memset::c#4 - [145] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + [142] *((byte*) memset::dst#2) ← (byte) memset::c#4 + [143] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 to:memset::@2 (struct SplineVector16()) rotate((signed word) rotate::vector_x , (signed word) rotate::vector_y , (byte) rotate::angle) rotate: scope:[rotate] from show_letter::@1 show_letter::@6 - [146] (signed word) rotate::vector_y#2 ← phi( show_letter::@1/(signed word) rotate::vector_y#0 show_letter::@6/(signed word) rotate::vector_y#1 ) - [146] (signed word) rotate::vector_x#2 ← phi( show_letter::@1/(signed word) rotate::vector_x#0 show_letter::@6/(signed word) rotate::vector_x#1 ) - [146] (byte) rotate::angle#2 ← phi( show_letter::@1/(byte) rotate::angle#0 show_letter::@6/(byte) rotate::angle#1 ) - [147] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) - [148] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 - [149] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 - [150] call mulf16s - [151] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 + [144] (signed word) rotate::vector_y#2 ← phi( show_letter::@1/(signed word) rotate::vector_y#0 show_letter::@6/(signed word) rotate::vector_y#1 ) + [144] (signed word) rotate::vector_x#2 ← phi( show_letter::@1/(signed word) rotate::vector_x#0 show_letter::@6/(signed word) rotate::vector_x#1 ) + [144] (byte) rotate::angle#2 ← phi( show_letter::@1/(byte) rotate::angle#0 show_letter::@6/(byte) rotate::angle#1 ) + [145] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) + [146] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 + [147] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 + [148] call mulf16s + [149] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 to:rotate::@1 rotate::@1: scope:[rotate] from rotate - [152] (signed dword~) rotate::$0 ← (signed dword) mulf16s::return#2 - [153] (signed word~) rotate::$10 ← (signed word)(signed dword~) rotate::$0 - [154] (signed word) rotate::xr#0 ← (signed word~) rotate::$10 << (byte) 1 - [155] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 - [156] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 - [157] call mulf16s - [158] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 + [150] (signed dword~) rotate::$0 ← (signed dword) mulf16s::return#2 + [151] (signed word~) rotate::$10 ← (signed word)(signed dword~) rotate::$0 + [152] (signed word) rotate::xr#0 ← (signed word~) rotate::$10 << (byte) 1 + [153] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 + [154] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 + [155] call mulf16s + [156] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 to:rotate::@2 rotate::@2: scope:[rotate] from rotate::@1 - [159] (signed dword~) rotate::$2 ← (signed dword) mulf16s::return#3 - [160] (signed word~) rotate::$11 ← (signed word)(signed dword~) rotate::$2 - [161] (signed word) rotate::yr#0 ← (signed word~) rotate::$11 << (byte) 1 - [162] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) - [163] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 - [164] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 - [165] call mulf16s - [166] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 + [157] (signed dword~) rotate::$2 ← (signed dword) mulf16s::return#3 + [158] (signed word~) rotate::$11 ← (signed word)(signed dword~) rotate::$2 + [159] (signed word) rotate::yr#0 ← (signed word~) rotate::$11 << (byte) 1 + [160] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) + [161] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 + [162] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 + [163] call mulf16s + [164] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 to:rotate::@3 rotate::@3: scope:[rotate] from rotate::@2 - [167] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#4 - [168] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$4 - [169] (signed word~) rotate::$5 ← (signed word~) rotate::$12 << (byte) 1 - [170] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$5 - [171] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 - [172] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 - [173] call mulf16s - [174] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 + [165] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#4 + [166] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$4 + [167] (signed word~) rotate::$5 ← (signed word~) rotate::$12 << (byte) 1 + [168] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$5 + [169] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 + [170] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 + [171] call mulf16s + [172] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 to:rotate::@4 rotate::@4: scope:[rotate] from rotate::@3 - [175] (signed dword~) rotate::$6 ← (signed dword) mulf16s::return#10 - [176] (signed word~) rotate::$13 ← (signed word)(signed dword~) rotate::$6 - [177] (signed word~) rotate::$7 ← (signed word~) rotate::$13 << (byte) 1 - [178] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$7 - [179] (byte~) rotate::$8 ← > (signed word) rotate::xr#1 - [180] (byte~) rotate::$9 ← > (signed word) rotate::yr#1 - [181] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$8 - [182] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$9 + [173] (signed dword~) rotate::$6 ← (signed dword) mulf16s::return#10 + [174] (signed word~) rotate::$13 ← (signed word)(signed dword~) rotate::$6 + [175] (signed word~) rotate::$7 ← (signed word~) rotate::$13 << (byte) 1 + [176] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$7 + [177] (byte~) rotate::$8 ← > (signed word) rotate::xr#1 + [178] (byte~) rotate::$9 ← > (signed word) rotate::yr#1 + [179] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$8 + [180] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$9 to:rotate::@return rotate::@return: scope:[rotate] from rotate::@4 - [183] return + [181] return to:@return (void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2) bitmap_line: scope:[bitmap_line] from bitmap_plot_spline_8seg::@1 show_letter::@5 - [184] (word) bitmap_line::y2#11 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y2#13 show_letter::@5/(word) bitmap_line::y2#0 ) - [184] (word) bitmap_line::x2#10 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x2#13 show_letter::@5/(word) bitmap_line::x2#0 ) - [184] (word) bitmap_line::y#0 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y1#1 show_letter::@5/(word) bitmap_line::y1#0 ) - [184] (word) bitmap_line::x#0 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x1#1 show_letter::@5/(word) bitmap_line::x1#0 ) - [185] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 - [186] call abs_u16 - [187] (word) abs_u16::return#0 ← (word) abs_u16::return#4 + [182] (word) bitmap_line::y2#11 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y2#13 show_letter::@5/(word) bitmap_line::y2#0 ) + [182] (word) bitmap_line::x2#10 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x2#13 show_letter::@5/(word) bitmap_line::x2#0 ) + [182] (word) bitmap_line::y#0 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y1#1 show_letter::@5/(word) bitmap_line::y1#0 ) + [182] (word) bitmap_line::x#0 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x1#1 show_letter::@5/(word) bitmap_line::x1#0 ) + [183] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 + [184] call abs_u16 + [185] (word) abs_u16::return#0 ← (word) abs_u16::return#4 to:bitmap_line::@12 bitmap_line::@12: scope:[bitmap_line] from bitmap_line - [188] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 - [189] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 - [190] call abs_u16 - [191] (word) abs_u16::return#1 ← (word) abs_u16::return#4 + [186] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 + [187] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 + [188] call abs_u16 + [189] (word) abs_u16::return#1 ← (word) abs_u16::return#4 to:bitmap_line::@13 bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@12 - [192] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 - [193] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 + [190] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 + [191] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 to:bitmap_line::@18 bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@13 - [194] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 + [192] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 to:bitmap_line::@1 bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::@18 - [195] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 - [196] call sgn_u16 - [197] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 + [193] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 + [194] call sgn_u16 + [195] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 to:bitmap_line::@14 bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@1 - [198] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 - [199] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 - [200] call sgn_u16 - [201] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 + [196] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 + [197] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 + [198] call sgn_u16 + [199] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 to:bitmap_line::@15 bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@14 - [202] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 - [203] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 + [200] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 + [201] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 to:bitmap_line::@5 bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@15 - [204] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 + [202] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 to:bitmap_line::@6 bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@5 bitmap_line::@7 - [205] (word) bitmap_line::e#3 ← phi( bitmap_line::@5/(word) bitmap_line::e#0 bitmap_line::@7/(word) bitmap_line::e#6 ) - [205] (word) bitmap_line::y#4 ← phi( bitmap_line::@5/(word) bitmap_line::y#0 bitmap_line::@7/(word) bitmap_line::y#1 ) - [205] (word) bitmap_line::x#13 ← phi( bitmap_line::@5/(word) bitmap_line::x#0 bitmap_line::@7/(word) bitmap_line::x#12 ) - [206] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 - [207] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 - [208] call bitmap_plot + [203] (word) bitmap_line::e#3 ← phi( bitmap_line::@5/(word) bitmap_line::e#0 bitmap_line::@7/(word) bitmap_line::e#6 ) + [203] (word) bitmap_line::y#4 ← phi( bitmap_line::@5/(word) bitmap_line::y#0 bitmap_line::@7/(word) bitmap_line::y#1 ) + [203] (word) bitmap_line::x#13 ← phi( bitmap_line::@5/(word) bitmap_line::x#0 bitmap_line::@7/(word) bitmap_line::x#12 ) + [204] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 + [205] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 + [206] call bitmap_plot to:bitmap_line::@16 bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@6 - [209] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 - [210] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 - [211] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 + [207] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 + [208] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 + [209] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 to:bitmap_line::@8 bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@16 - [212] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 - [213] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 + [210] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 + [211] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 to:bitmap_line::@7 bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@16 bitmap_line::@8 - [214] (word) bitmap_line::e#6 ← phi( bitmap_line::@16/(word) bitmap_line::e#1 bitmap_line::@8/(word) bitmap_line::e#2 ) - [214] (word) bitmap_line::x#12 ← phi( bitmap_line::@16/(word) bitmap_line::x#13 bitmap_line::@8/(word) bitmap_line::x#1 ) - [215] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 + [212] (word) bitmap_line::e#6 ← phi( bitmap_line::@16/(word) bitmap_line::e#1 bitmap_line::@8/(word) bitmap_line::e#2 ) + [212] (word) bitmap_line::x#12 ← phi( bitmap_line::@16/(word) bitmap_line::x#13 bitmap_line::@8/(word) bitmap_line::x#1 ) + [213] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 to:bitmap_line::@3 bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@7 - [216] (word) bitmap_line::y#7 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@7/(word) bitmap_line::y#1 ) - [216] (word) bitmap_line::x#6 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@7/(word) bitmap_line::x#12 ) - [217] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 - [218] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 - [219] call bitmap_plot + [214] (word) bitmap_line::y#7 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@7/(word) bitmap_line::y#1 ) + [214] (word) bitmap_line::x#6 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@7/(word) bitmap_line::x#12 ) + [215] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 + [216] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 + [217] call bitmap_plot to:bitmap_line::@return bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@3 bitmap_line::@4 - [220] return + [218] return to:@return bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@15 - [221] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 + [219] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 to:bitmap_line::@9 bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@2 - [222] (word) bitmap_line::e1#3 ← phi( bitmap_line::@10/(word) bitmap_line::e1#6 bitmap_line::@2/(word) bitmap_line::e1#0 ) - [222] (word) bitmap_line::y#15 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@2/(word) bitmap_line::y#0 ) - [222] (word) bitmap_line::x#7 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@2/(word) bitmap_line::x#0 ) - [223] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 - [224] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 - [225] call bitmap_plot + [220] (word) bitmap_line::e1#3 ← phi( bitmap_line::@10/(word) bitmap_line::e1#6 bitmap_line::@2/(word) bitmap_line::e1#0 ) + [220] (word) bitmap_line::y#15 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@2/(word) bitmap_line::y#0 ) + [220] (word) bitmap_line::x#7 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@2/(word) bitmap_line::x#0 ) + [221] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 + [222] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 + [223] call bitmap_plot to:bitmap_line::@17 bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@9 - [226] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 - [227] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 - [228] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 + [224] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 + [225] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 + [226] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 to:bitmap_line::@11 bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@17 - [229] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 - [230] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 + [227] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 + [228] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 to:bitmap_line::@10 bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@11 bitmap_line::@17 - [231] (word) bitmap_line::e1#6 ← phi( bitmap_line::@11/(word) bitmap_line::e1#2 bitmap_line::@17/(word) bitmap_line::e1#1 ) - [231] (word) bitmap_line::y#13 ← phi( bitmap_line::@11/(word) bitmap_line::y#2 bitmap_line::@17/(word) bitmap_line::y#15 ) - [232] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 + [229] (word) bitmap_line::e1#6 ← phi( bitmap_line::@11/(word) bitmap_line::e1#2 bitmap_line::@17/(word) bitmap_line::e1#1 ) + [229] (word) bitmap_line::y#13 ← phi( bitmap_line::@11/(word) bitmap_line::y#2 bitmap_line::@17/(word) bitmap_line::y#15 ) + [230] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 to:bitmap_line::@3 bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@18 - [233] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 - [234] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 - [235] call bitmap_plot + [231] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 + [232] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 + [233] call bitmap_plot to:bitmap_line::@return (void()) spline_8segB((signed word) spline_8segB::p0_x , (signed word) spline_8segB::p0_y , (signed word) spline_8segB::p1_x , (signed word) spline_8segB::p1_y , (signed word) spline_8segB::p2_x , (signed word) spline_8segB::p2_y) spline_8segB: scope:[spline_8segB] from show_letter::@2 - [236] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 - [237] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 - [238] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 - [239] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 - [240] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 - [241] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 - [242] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 - [243] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 - [244] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 - [245] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 - [246] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 - [247] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 - [248] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 - [249] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 - [250] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 - [251] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 - [252] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 - [253] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 + [234] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 + [235] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 + [236] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 + [237] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 + [238] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 + [239] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 + [240] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 + [241] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 + [242] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 + [243] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 + [244] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 + [245] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 + [246] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 + [247] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 + [248] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 + [249] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 + [250] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 + [251] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 to:spline_8segB::@1 spline_8segB::@1: scope:[spline_8segB] from spline_8segB spline_8segB::@1 - [254] (signed word) spline_8segB::i_y#2 ← phi( spline_8segB/(signed word) spline_8segB::i_y#0 spline_8segB::@1/(signed word) spline_8segB::i_y#1 ) - [254] (signed word) spline_8segB::i_x#2 ← phi( spline_8segB/(signed word) spline_8segB::i_x#0 spline_8segB::@1/(signed word) spline_8segB::i_x#1 ) - [254] (byte) spline_8segB::n#2 ← phi( spline_8segB/(byte) 0 spline_8segB::@1/(byte) spline_8segB::n#1 ) - [254] (signed word) spline_8segB::p_y#2 ← phi( spline_8segB/(signed word) spline_8segB::p_y#0 spline_8segB::@1/(signed word) spline_8segB::p_y#1 ) - [254] (signed word) spline_8segB::p_x#2 ← phi( spline_8segB/(signed word) spline_8segB::p_x#0 spline_8segB::@1/(signed word) spline_8segB::p_x#1 ) - [255] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 - [256] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 - [257] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 - [258] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 - [259] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 - [260] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 - [261] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 - [262] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 - [263] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 - [264] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 - [265] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 - [266] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2 - [267] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1 + [252] (signed word) spline_8segB::i_y#2 ← phi( spline_8segB/(signed word) spline_8segB::i_y#0 spline_8segB::@1/(signed word) spline_8segB::i_y#1 ) + [252] (signed word) spline_8segB::i_x#2 ← phi( spline_8segB/(signed word) spline_8segB::i_x#0 spline_8segB::@1/(signed word) spline_8segB::i_x#1 ) + [252] (byte) spline_8segB::n#2 ← phi( spline_8segB/(byte) 0 spline_8segB::@1/(byte) spline_8segB::n#1 ) + [252] (signed word) spline_8segB::p_y#2 ← phi( spline_8segB/(signed word) spline_8segB::p_y#0 spline_8segB::@1/(signed word) spline_8segB::p_y#1 ) + [252] (signed word) spline_8segB::p_x#2 ← phi( spline_8segB/(signed word) spline_8segB::p_x#0 spline_8segB::@1/(signed word) spline_8segB::p_x#1 ) + [253] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 + [254] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 + [255] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 + [256] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 + [257] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 + [258] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 + [259] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 + [260] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 + [261] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 + [262] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 + [263] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 + [264] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2 + [265] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1 to:spline_8segB::@2 spline_8segB::@2: scope:[spline_8segB] from spline_8segB::@1 - [268] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 - [269] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 - [270] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 - [271] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 - [272] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 - [273] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 + [266] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 + [267] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 + [268] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 + [269] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 + [270] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 + [271] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 to:spline_8segB::@return spline_8segB::@return: scope:[spline_8segB] from spline_8segB::@2 - [274] return + [272] return to:@return (void()) bitmap_plot_spline_8seg() bitmap_plot_spline_8seg: scope:[bitmap_plot_spline_8seg] from show_letter::@8 - [275] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) - [276] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) + [273] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) + [274] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) to:bitmap_plot_spline_8seg::@1 bitmap_plot_spline_8seg::@1: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg bitmap_plot_spline_8seg::@2 - [277] (signed word) bitmap_plot_spline_8seg::current_y#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::@2/(signed word) bitmap_plot_spline_8seg::current_y#1 ) - [277] (signed word) bitmap_plot_spline_8seg::current_x#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::@2/(signed word) bitmap_plot_spline_8seg::current_x#1 ) - [277] (byte) bitmap_plot_spline_8seg::n#2 ← phi( bitmap_plot_spline_8seg/(byte) 1 bitmap_plot_spline_8seg::@2/(byte) bitmap_plot_spline_8seg::n#1 ) - [278] (byte~) bitmap_plot_spline_8seg::$3 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 - [279] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 - [280] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 - [281] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$3) - [282] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$3) - [283] call bitmap_line + [275] (signed word) bitmap_plot_spline_8seg::current_y#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::@2/(signed word) bitmap_plot_spline_8seg::current_y#1 ) + [275] (signed word) bitmap_plot_spline_8seg::current_x#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::@2/(signed word) bitmap_plot_spline_8seg::current_x#1 ) + [275] (byte) bitmap_plot_spline_8seg::n#2 ← phi( bitmap_plot_spline_8seg/(byte) 1 bitmap_plot_spline_8seg::@2/(byte) bitmap_plot_spline_8seg::n#1 ) + [276] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 + [277] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 + [278] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 + [279] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) + [280] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) + [281] call bitmap_line to:bitmap_plot_spline_8seg::@2 bitmap_plot_spline_8seg::@2: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg::@1 - [284] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 - [285] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) - [286] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) - [287] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2 - [288] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@1 + [282] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) + [283] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) + [284] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2 + [285] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@1 to:bitmap_plot_spline_8seg::@return bitmap_plot_spline_8seg::@return: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg::@2 - [289] return + [286] return to:@return (signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b) mulf16s: scope:[mulf16s] from rotate rotate::@1 rotate::@2 rotate::@3 - [290] (signed word) mulf16s::b#4 ← phi( rotate/(signed word) mulf16s::b#0 rotate::@1/(signed word) mulf16s::b#1 rotate::@2/(signed word) mulf16s::b#2 rotate::@3/(signed word) mulf16s::b#3 ) - [290] (signed word) mulf16s::a#4 ← phi( rotate/(signed word) mulf16s::a#0 rotate::@1/(signed word) mulf16s::a#1 rotate::@2/(signed word) mulf16s::a#2 rotate::@3/(signed word) mulf16s::a#3 ) - [291] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 - [292] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 - [293] call mulf16u - [294] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 + [287] (signed word) mulf16s::b#4 ← phi( rotate/(signed word) mulf16s::b#0 rotate::@1/(signed word) mulf16s::b#1 rotate::@2/(signed word) mulf16s::b#2 rotate::@3/(signed word) mulf16s::b#3 ) + [287] (signed word) mulf16s::a#4 ← phi( rotate/(signed word) mulf16s::a#0 rotate::@1/(signed word) mulf16s::a#1 rotate::@2/(signed word) mulf16s::a#2 rotate::@3/(signed word) mulf16s::a#3 ) + [288] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 + [289] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 + [290] call mulf16u + [291] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 to:mulf16s::@5 mulf16s::@5: scope:[mulf16s] from mulf16s - [295] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 - [296] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 + [292] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 + [293] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 to:mulf16s::@3 mulf16s::@3: scope:[mulf16s] from mulf16s::@5 - [297] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 - [298] (word~) mulf16s::$11 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#4 - [299] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$11 + [294] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 + [295] (word~) mulf16s::$11 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#4 + [296] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$11 to:mulf16s::@1 mulf16s::@1: scope:[mulf16s] from mulf16s::@3 mulf16s::@5 - [300] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 ) - [301] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 + [297] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 ) + [298] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 to:mulf16s::@4 mulf16s::@4: scope:[mulf16s] from mulf16s::@1 - [302] (word~) mulf16s::$9 ← > (dword) mulf16s::m#5 - [303] (word~) mulf16s::$12 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::a#4 - [304] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$12 + [299] (word~) mulf16s::$9 ← > (dword) mulf16s::m#5 + [300] (word~) mulf16s::$12 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::a#4 + [301] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$12 to:mulf16s::@2 mulf16s::@2: scope:[mulf16s] from mulf16s::@1 mulf16s::@4 - [305] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) - [306] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 + [302] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) + [303] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 to:mulf16s::@return mulf16s::@return: scope:[mulf16s] from mulf16s::@2 - [307] return + [304] return to:@return (word()) abs_u16((word) abs_u16::w) abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@12 - [308] (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@12/(word) abs_u16::w#1 ) - [309] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 - [310] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 - [311] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 + [305] (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@12/(word) abs_u16::w#1 ) + [306] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 + [307] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 + [308] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 to:abs_u16::@return abs_u16::@1: scope:[abs_u16] from abs_u16 - [312] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 + [309] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 to:abs_u16::@return abs_u16::@return: scope:[abs_u16] from abs_u16 abs_u16::@1 - [313] (word) abs_u16::return#4 ← phi( abs_u16::@1/(word) abs_u16::return#2 abs_u16/(word) abs_u16::w#2 ) - [314] return + [310] (word) abs_u16::return#4 ← phi( abs_u16::@1/(word) abs_u16::return#2 abs_u16/(word) abs_u16::w#2 ) + [311] return to:@return (word()) sgn_u16((word) sgn_u16::w) sgn_u16: scope:[sgn_u16] from bitmap_line::@1 bitmap_line::@14 - [315] (word) sgn_u16::w#2 ← phi( bitmap_line::@1/(word) sgn_u16::w#0 bitmap_line::@14/(word) sgn_u16::w#1 ) - [316] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 - [317] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 - [318] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 + [312] (word) sgn_u16::w#2 ← phi( bitmap_line::@1/(word) sgn_u16::w#0 bitmap_line::@14/(word) sgn_u16::w#1 ) + [313] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 + [314] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 + [315] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 to:sgn_u16::@return sgn_u16::@1: scope:[sgn_u16] from sgn_u16 - [319] phi() + [316] phi() to:sgn_u16::@return sgn_u16::@return: scope:[sgn_u16] from sgn_u16 sgn_u16::@1 - [320] (word) sgn_u16::return#4 ← phi( sgn_u16::@1/(byte) -1 sgn_u16/(byte) 1 ) - [321] return + [317] (word) sgn_u16::return#4 ← phi( sgn_u16::@1/(byte) -1 sgn_u16/(byte) 1 ) + [318] return to:@return (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9 - [322] (word) bitmap_plot::x#4 ← phi( bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@6/(word) bitmap_plot::x#1 bitmap_line::@9/(word) bitmap_plot::x#3 ) - [322] (byte) bitmap_plot::y#4 ← phi( bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@6/(byte) bitmap_plot::y#1 bitmap_line::@9/(byte) bitmap_plot::y#3 ) - [323] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) - [324] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8 - [325] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 - [326] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#4 - [327] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) + [319] (word) bitmap_plot::x#4 ← phi( bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@6/(word) bitmap_plot::x#1 bitmap_line::@9/(word) bitmap_plot::x#3 ) + [319] (byte) bitmap_plot::y#4 ← phi( bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@6/(byte) bitmap_plot::y#1 bitmap_line::@9/(byte) bitmap_plot::y#3 ) + [320] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) + [321] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8 + [322] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 + [323] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#4 + [324] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot - [328] return + [325] return to:@return (dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b) mulf16u: scope:[mulf16u] from mulf16s - [329] *((const nomodify word*) mulf16u::memA) ← (word) mulf16u::a#0 - [330] *((const nomodify word*) mulf16u::memB) ← (word) mulf16u::b#0 + [326] *((const nomodify word*) mulf16u::memA) ← (word) mulf16u::a#0 + [327] *((const nomodify word*) mulf16u::memB) ← (word) mulf16u::b#0 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } - [332] (dword) mulf16u::return#0 ← *((const nomodify dword*) mulf16u::memR) + [329] (dword) mulf16u::return#0 ← *((const nomodify dword*) mulf16u::memR) to:mulf16u::@return mulf16u::@return: scope:[mulf16u] from mulf16u - [333] return + [330] return to:@return null depth in calling loop Loop head: bitmap_plot_spline_8seg::@1 tails: bitmap_plot_spline_8seg::@2 blocks: bitmap_plot_spline_8seg::@2 bitmap_plot_spline_8seg::@1 in scope bitmap_line @@ -4445,8 +4449,7 @@ VARIABLE REGISTER WEIGHTS (byte) bitmap_plot::y#3 2.000000000002E12 (byte) bitmap_plot::y#4 2.2002000000006E13 (void()) bitmap_plot_spline_8seg() -(byte~) bitmap_plot_spline_8seg::$3 2.500000025E7 -(byte~) bitmap_plot_spline_8seg::$4 1.500000015E8 +(byte~) bitmap_plot_spline_8seg::$4 4.285714328571428E7 (signed word) bitmap_plot_spline_8seg::current_x (signed word) bitmap_plot_spline_8seg::current_x#0 100001.0 (signed word) bitmap_plot_spline_8seg::current_x#1 5.00000005E7 @@ -4457,7 +4460,7 @@ VARIABLE REGISTER WEIGHTS (signed word) bitmap_plot_spline_8seg::current_y#2 3.3366667333333336E7 (byte) bitmap_plot_spline_8seg::n (byte) bitmap_plot_spline_8seg::n#1 1.500000015E8 -(byte) bitmap_plot_spline_8seg::n#2 4.00000004E7 +(byte) bitmap_plot_spline_8seg::n#2 3.3333333666666664E7 (byte*) bitmap_screen (void()) main() (byte) main::angle @@ -4619,22 +4622,20 @@ VARIABLE REGISTER WEIGHTS (byte~) show_letter::$16 15001.5 (byte~) show_letter::$17 15001.5 (byte~) show_letter::$18 20002.0 -(byte~) show_letter::$19 20002.0 -(byte~) show_letter::$21 20002.0 -(byte~) show_letter::$23 20002.0 +(byte~) show_letter::$21 1290.4516129032259 (byte) show_letter::angle -(byte) show_letter::angle#0 345.05172413793105 +(byte) show_letter::angle#0 357.375 (signed word) show_letter::current_x -(signed word) show_letter::current_x#10 769.3076923076924 +(signed word) show_letter::current_x#10 810.8918918918919 (signed word) show_letter::current_x#11 10001.0 -(signed word) show_letter::current_x#4 526.3684210526316 +(signed word) show_letter::current_x#4 555.6111111111111 (signed word) show_letter::current_y -(signed word) show_letter::current_y#10 769.3076923076924 +(signed word) show_letter::current_y#10 810.8918918918919 (signed word) show_letter::current_y#11 20002.0 -(signed word) show_letter::current_y#4 500.05 +(signed word) show_letter::current_y#4 526.3684210526316 (byte) show_letter::i (byte) show_letter::i#1 7500.75 -(byte) show_letter::i#10 1538.6153846153845 +(byte) show_letter::i#10 1200.1200000000001 (struct SplineVector16) show_letter::segment_to (signed word) show_letter::segment_to_x (signed word) show_letter::segment_to_y @@ -4642,9 +4643,9 @@ VARIABLE REGISTER WEIGHTS (byte) show_letter::segment_type#0 15001.5 (struct SplineVector16) show_letter::segment_via (signed word) show_letter::segment_via_x -(signed word) show_letter::segment_via_x#0 2222.4444444444443 +(signed word) show_letter::segment_via_x#0 2500.25 (signed word) show_letter::segment_via_y -(signed word) show_letter::segment_via_y#0 2222.4444444444443 +(signed word) show_letter::segment_via_y#0 2500.25 (signed word) show_letter::to_x (signed word) show_letter::to_x#0 10001.0 (signed word) show_letter::to_x#1 10001.0 @@ -4782,7 +4783,7 @@ Added variable bitmap_init::$7 to live range equivalence class [ bitmap_init::$7 Added variable bitmap_init::$4 to live range equivalence class [ bitmap_init::$4 ] Added variable bitmap_init::$5 to live range equivalence class [ bitmap_init::$5 ] Added variable bitmap_init::$6 to live range equivalence class [ bitmap_init::$6 ] -Added variable show_letter::$19 to live range equivalence class [ show_letter::$19 ] +Added variable show_letter::$21 to live range equivalence class [ show_letter::$21 ] Added variable show_letter::$16 to live range equivalence class [ show_letter::$16 ] Added variable show_letter::to_x#0 to live range equivalence class [ show_letter::to_x#0 ] Added variable show_letter::to_y#0 to live range equivalence class [ show_letter::to_y#0 ] @@ -4794,7 +4795,6 @@ Added variable show_letter::to_x#2 to live range equivalence class [ show_letter Added variable show_letter::to_y#2 to live range equivalence class [ show_letter::to_y#2 ] Added variable show_letter::current_x#10 to live range equivalence class [ show_letter::current_x#10 ] Added variable show_letter::current_y#10 to live range equivalence class [ show_letter::current_y#10 ] -Added variable show_letter::$21 to live range equivalence class [ show_letter::$21 ] Added variable show_letter::$17 to live range equivalence class [ show_letter::$17 ] Added variable show_letter::via_x#0 to live range equivalence class [ show_letter::via_x#0 ] Added variable show_letter::via_y#0 to live range equivalence class [ show_letter::via_y#0 ] @@ -4806,7 +4806,6 @@ Added variable show_letter::via_x#2 to live range equivalence class [ show_lette Added variable show_letter::via_y#2 to live range equivalence class [ show_letter::via_y#2 ] Added variable show_letter::segment_via_x#0 to live range equivalence class [ show_letter::segment_via_x#0 ] Added variable show_letter::segment_via_y#0 to live range equivalence class [ show_letter::segment_via_y#0 ] -Added variable show_letter::$23 to live range equivalence class [ show_letter::$23 ] Added variable show_letter::$18 to live range equivalence class [ show_letter::$18 ] Added variable show_letter::segment_type#0 to live range equivalence class [ show_letter::segment_type#0 ] Added variable spline_8segB::p0_x#0 to live range equivalence class [ spline_8segB::p0_x#0 ] @@ -4871,7 +4870,6 @@ Added variable spline_8segB::$18 to live range equivalence class [ spline_8segB: Added variable spline_8segB::$19 to live range equivalence class [ spline_8segB::$19 ] Added variable spline_8segB::$20 to live range equivalence class [ spline_8segB::$20 ] Added variable spline_8segB::$21 to live range equivalence class [ spline_8segB::$21 ] -Added variable bitmap_plot_spline_8seg::$3 to live range equivalence class [ bitmap_plot_spline_8seg::$3 ] Added variable bitmap_plot_spline_8seg::$4 to live range equivalence class [ bitmap_plot_spline_8seg::$4 ] Added variable mulf16u::a#0 to live range equivalence class [ mulf16u::a#0 ] Added variable mulf16u::b#0 to live range equivalence class [ mulf16u::b#0 ] @@ -4946,7 +4944,7 @@ Complete equivalence classes [ bitmap_init::$4 ] [ bitmap_init::$5 ] [ bitmap_init::$6 ] -[ show_letter::$19 ] +[ show_letter::$21 ] [ show_letter::$16 ] [ show_letter::to_x#0 ] [ show_letter::to_y#0 ] @@ -4958,7 +4956,6 @@ Complete equivalence classes [ show_letter::to_y#2 ] [ show_letter::current_x#10 ] [ show_letter::current_y#10 ] -[ show_letter::$21 ] [ show_letter::$17 ] [ show_letter::via_x#0 ] [ show_letter::via_y#0 ] @@ -4970,7 +4967,6 @@ Complete equivalence classes [ show_letter::via_y#2 ] [ show_letter::segment_via_x#0 ] [ show_letter::segment_via_y#0 ] -[ show_letter::$23 ] [ show_letter::$18 ] [ show_letter::segment_type#0 ] [ spline_8segB::p0_x#0 ] @@ -5035,7 +5031,6 @@ Complete equivalence classes [ spline_8segB::$19 ] [ spline_8segB::$20 ] [ spline_8segB::$21 ] -[ bitmap_plot_spline_8seg::$3 ] [ bitmap_plot_spline_8seg::$4 ] [ mulf16u::a#0 ] [ mulf16u::b#0 ] @@ -5109,7 +5104,7 @@ Allocated zp[1]:87 [ bitmap_init::$7 ] Allocated zp[1]:88 [ bitmap_init::$4 ] Allocated zp[1]:89 [ bitmap_init::$5 ] Allocated zp[1]:90 [ bitmap_init::$6 ] -Allocated zp[1]:91 [ show_letter::$19 ] +Allocated zp[1]:91 [ show_letter::$21 ] Allocated zp[1]:92 [ show_letter::$16 ] Allocated zp[2]:93 [ show_letter::to_x#0 ] Allocated zp[2]:95 [ show_letter::to_y#0 ] @@ -5121,102 +5116,99 @@ Allocated zp[2]:105 [ show_letter::to_x#2 ] Allocated zp[2]:107 [ show_letter::to_y#2 ] Allocated zp[2]:109 [ show_letter::current_x#10 ] Allocated zp[2]:111 [ show_letter::current_y#10 ] -Allocated zp[1]:113 [ show_letter::$21 ] -Allocated zp[1]:114 [ show_letter::$17 ] -Allocated zp[2]:115 [ show_letter::via_x#0 ] -Allocated zp[2]:117 [ show_letter::via_y#0 ] -Allocated zp[2]:119 [ show_letter::via_x#1 ] -Allocated zp[2]:121 [ show_letter::via_y#1 ] -Allocated zp[2]:123 [ rotate::return_x#1 ] -Allocated zp[2]:125 [ rotate::return_y#1 ] -Allocated zp[2]:127 [ show_letter::via_x#2 ] -Allocated zp[2]:129 [ show_letter::via_y#2 ] -Allocated zp[2]:131 [ show_letter::segment_via_x#0 ] -Allocated zp[2]:133 [ show_letter::segment_via_y#0 ] -Allocated zp[1]:135 [ show_letter::$23 ] -Allocated zp[1]:136 [ show_letter::$18 ] -Allocated zp[1]:137 [ show_letter::segment_type#0 ] -Allocated zp[2]:138 [ spline_8segB::p0_x#0 ] -Allocated zp[2]:140 [ spline_8segB::p0_y#0 ] -Allocated zp[2]:142 [ spline_8segB::p1_x#0 ] -Allocated zp[2]:144 [ spline_8segB::p1_y#0 ] -Allocated zp[2]:146 [ spline_8segB::p2_x#0 ] -Allocated zp[2]:148 [ spline_8segB::p2_y#0 ] -Allocated zp[2]:150 [ memset::end#0 ] -Allocated zp[2]:152 [ rotate::cos_a#0 ] -Allocated zp[4]:154 [ mulf16s::return#2 ] -Allocated zp[4]:158 [ rotate::$0 ] -Allocated zp[2]:162 [ rotate::$10 ] -Allocated zp[2]:164 [ rotate::xr#0 ] -Allocated zp[4]:166 [ mulf16s::return#3 ] -Allocated zp[4]:170 [ rotate::$2 ] -Allocated zp[2]:174 [ rotate::$11 ] -Allocated zp[2]:176 [ rotate::yr#0 ] -Allocated zp[2]:178 [ rotate::sin_a#0 ] -Allocated zp[4]:180 [ mulf16s::return#4 ] -Allocated zp[4]:184 [ rotate::$4 ] -Allocated zp[2]:188 [ rotate::$12 ] -Allocated zp[2]:190 [ rotate::$5 ] -Allocated zp[2]:192 [ rotate::xr#1 ] -Allocated zp[4]:194 [ mulf16s::return#10 ] -Allocated zp[4]:198 [ rotate::$6 ] -Allocated zp[2]:202 [ rotate::$13 ] -Allocated zp[2]:204 [ rotate::$7 ] -Allocated zp[2]:206 [ rotate::yr#1 ] -Allocated zp[1]:208 [ rotate::$8 ] -Allocated zp[1]:209 [ rotate::$9 ] -Allocated zp[2]:210 [ rotate::return_x#2 ] -Allocated zp[2]:212 [ rotate::return_y#2 ] -Allocated zp[2]:214 [ abs_u16::return#0 ] -Allocated zp[2]:216 [ bitmap_line::dx#0 ] -Allocated zp[2]:218 [ abs_u16::return#1 ] -Allocated zp[2]:220 [ bitmap_line::dy#0 ] -Allocated zp[2]:222 [ sgn_u16::return#0 ] -Allocated zp[2]:224 [ bitmap_line::sx#0 ] -Allocated zp[2]:226 [ sgn_u16::return#1 ] -Allocated zp[2]:228 [ bitmap_line::sy#0 ] -Allocated zp[2]:230 [ spline_8segB::$0 ] -Allocated zp[2]:232 [ spline_8segB::$1 ] -Allocated zp[2]:234 [ spline_8segB::a_x#0 ] -Allocated zp[2]:236 [ spline_8segB::$3 ] -Allocated zp[2]:238 [ spline_8segB::$4 ] -Allocated zp[2]:240 [ spline_8segB::a_y#0 ] -Allocated zp[2]:242 [ spline_8segB::$6 ] -Allocated zp[2]:244 [ spline_8segB::b_x#0 ] -Allocated zp[2]:246 [ spline_8segB::$8 ] -Allocated zp[2]:248 [ spline_8segB::b_y#0 ] -Allocated zp[2]:250 [ spline_8segB::$10 ] -Allocated zp[2]:252 [ spline_8segB::$12 ] -Allocated zp[2]:254 [ spline_8segB::j_x#0 ] -Allocated zp[2]:256 [ spline_8segB::j_y#0 ] -Allocated zp[2]:258 [ spline_8segB::$22 ] -Allocated zp[2]:260 [ spline_8segB::$23 ] -Allocated zp[2]:262 [ spline_8segB::$24 ] -Allocated zp[2]:264 [ spline_8segB::$25 ] -Allocated zp[1]:266 [ spline_8segB::$31 ] -Allocated zp[2]:267 [ spline_8segB::$18 ] -Allocated zp[2]:269 [ spline_8segB::$19 ] -Allocated zp[2]:271 [ spline_8segB::$20 ] -Allocated zp[2]:273 [ spline_8segB::$21 ] -Allocated zp[1]:275 [ bitmap_plot_spline_8seg::$3 ] -Allocated zp[1]:276 [ bitmap_plot_spline_8seg::$4 ] -Allocated zp[2]:277 [ mulf16u::a#0 ] -Allocated zp[2]:279 [ mulf16u::b#0 ] -Allocated zp[4]:281 [ mulf16u::return#2 ] -Allocated zp[2]:285 [ mulf16s::$6 ] -Allocated zp[2]:287 [ mulf16s::$11 ] -Allocated zp[2]:289 [ mulf16s::$9 ] -Allocated zp[2]:291 [ mulf16s::$12 ] -Allocated zp[4]:293 [ mulf16s::return#0 ] -Allocated zp[1]:297 [ abs_u16::$0 ] -Allocated zp[1]:298 [ abs_u16::$1 ] -Allocated zp[1]:299 [ sgn_u16::$0 ] -Allocated zp[1]:300 [ sgn_u16::$1 ] -Allocated zp[2]:301 [ bitmap_plot::plotter#0 ] -Allocated zp[2]:303 [ bitmap_plot::$0 ] -Allocated zp[2]:305 [ bitmap_plot::plotter#1 ] -Allocated zp[1]:307 [ bitmap_plot::$1 ] -Allocated zp[4]:308 [ mulf16u::return#0 ] +Allocated zp[1]:113 [ show_letter::$17 ] +Allocated zp[2]:114 [ show_letter::via_x#0 ] +Allocated zp[2]:116 [ show_letter::via_y#0 ] +Allocated zp[2]:118 [ show_letter::via_x#1 ] +Allocated zp[2]:120 [ show_letter::via_y#1 ] +Allocated zp[2]:122 [ rotate::return_x#1 ] +Allocated zp[2]:124 [ rotate::return_y#1 ] +Allocated zp[2]:126 [ show_letter::via_x#2 ] +Allocated zp[2]:128 [ show_letter::via_y#2 ] +Allocated zp[2]:130 [ show_letter::segment_via_x#0 ] +Allocated zp[2]:132 [ show_letter::segment_via_y#0 ] +Allocated zp[1]:134 [ show_letter::$18 ] +Allocated zp[1]:135 [ show_letter::segment_type#0 ] +Allocated zp[2]:136 [ spline_8segB::p0_x#0 ] +Allocated zp[2]:138 [ spline_8segB::p0_y#0 ] +Allocated zp[2]:140 [ spline_8segB::p1_x#0 ] +Allocated zp[2]:142 [ spline_8segB::p1_y#0 ] +Allocated zp[2]:144 [ spline_8segB::p2_x#0 ] +Allocated zp[2]:146 [ spline_8segB::p2_y#0 ] +Allocated zp[2]:148 [ memset::end#0 ] +Allocated zp[2]:150 [ rotate::cos_a#0 ] +Allocated zp[4]:152 [ mulf16s::return#2 ] +Allocated zp[4]:156 [ rotate::$0 ] +Allocated zp[2]:160 [ rotate::$10 ] +Allocated zp[2]:162 [ rotate::xr#0 ] +Allocated zp[4]:164 [ mulf16s::return#3 ] +Allocated zp[4]:168 [ rotate::$2 ] +Allocated zp[2]:172 [ rotate::$11 ] +Allocated zp[2]:174 [ rotate::yr#0 ] +Allocated zp[2]:176 [ rotate::sin_a#0 ] +Allocated zp[4]:178 [ mulf16s::return#4 ] +Allocated zp[4]:182 [ rotate::$4 ] +Allocated zp[2]:186 [ rotate::$12 ] +Allocated zp[2]:188 [ rotate::$5 ] +Allocated zp[2]:190 [ rotate::xr#1 ] +Allocated zp[4]:192 [ mulf16s::return#10 ] +Allocated zp[4]:196 [ rotate::$6 ] +Allocated zp[2]:200 [ rotate::$13 ] +Allocated zp[2]:202 [ rotate::$7 ] +Allocated zp[2]:204 [ rotate::yr#1 ] +Allocated zp[1]:206 [ rotate::$8 ] +Allocated zp[1]:207 [ rotate::$9 ] +Allocated zp[2]:208 [ rotate::return_x#2 ] +Allocated zp[2]:210 [ rotate::return_y#2 ] +Allocated zp[2]:212 [ abs_u16::return#0 ] +Allocated zp[2]:214 [ bitmap_line::dx#0 ] +Allocated zp[2]:216 [ abs_u16::return#1 ] +Allocated zp[2]:218 [ bitmap_line::dy#0 ] +Allocated zp[2]:220 [ sgn_u16::return#0 ] +Allocated zp[2]:222 [ bitmap_line::sx#0 ] +Allocated zp[2]:224 [ sgn_u16::return#1 ] +Allocated zp[2]:226 [ bitmap_line::sy#0 ] +Allocated zp[2]:228 [ spline_8segB::$0 ] +Allocated zp[2]:230 [ spline_8segB::$1 ] +Allocated zp[2]:232 [ spline_8segB::a_x#0 ] +Allocated zp[2]:234 [ spline_8segB::$3 ] +Allocated zp[2]:236 [ spline_8segB::$4 ] +Allocated zp[2]:238 [ spline_8segB::a_y#0 ] +Allocated zp[2]:240 [ spline_8segB::$6 ] +Allocated zp[2]:242 [ spline_8segB::b_x#0 ] +Allocated zp[2]:244 [ spline_8segB::$8 ] +Allocated zp[2]:246 [ spline_8segB::b_y#0 ] +Allocated zp[2]:248 [ spline_8segB::$10 ] +Allocated zp[2]:250 [ spline_8segB::$12 ] +Allocated zp[2]:252 [ spline_8segB::j_x#0 ] +Allocated zp[2]:254 [ spline_8segB::j_y#0 ] +Allocated zp[2]:256 [ spline_8segB::$22 ] +Allocated zp[2]:258 [ spline_8segB::$23 ] +Allocated zp[2]:260 [ spline_8segB::$24 ] +Allocated zp[2]:262 [ spline_8segB::$25 ] +Allocated zp[1]:264 [ spline_8segB::$31 ] +Allocated zp[2]:265 [ spline_8segB::$18 ] +Allocated zp[2]:267 [ spline_8segB::$19 ] +Allocated zp[2]:269 [ spline_8segB::$20 ] +Allocated zp[2]:271 [ spline_8segB::$21 ] +Allocated zp[1]:273 [ bitmap_plot_spline_8seg::$4 ] +Allocated zp[2]:274 [ mulf16u::a#0 ] +Allocated zp[2]:276 [ mulf16u::b#0 ] +Allocated zp[4]:278 [ mulf16u::return#2 ] +Allocated zp[2]:282 [ mulf16s::$6 ] +Allocated zp[2]:284 [ mulf16s::$11 ] +Allocated zp[2]:286 [ mulf16s::$9 ] +Allocated zp[2]:288 [ mulf16s::$12 ] +Allocated zp[4]:290 [ mulf16s::return#0 ] +Allocated zp[1]:294 [ abs_u16::$0 ] +Allocated zp[1]:295 [ abs_u16::$1 ] +Allocated zp[1]:296 [ sgn_u16::$0 ] +Allocated zp[1]:297 [ sgn_u16::$1 ] +Allocated zp[2]:298 [ bitmap_plot::plotter#0 ] +Allocated zp[2]:300 [ bitmap_plot::$0 ] +Allocated zp[2]:302 [ bitmap_plot::plotter#1 ] +Allocated zp[1]:304 [ bitmap_plot::$1 ] +Allocated zp[4]:305 [ mulf16u::return#0 ] INITIAL ASM Target platform is c64basic / MOS6502X @@ -5744,17 +5736,17 @@ bitmap_init: { bitmap_clear: { .const col = WHITE<<4 // [75] call memset - // [137] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + // [135] phi from bitmap_clear to memset [phi:bitmap_clear->memset] memset_from_bitmap_clear: - // [137] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuz1=vbuc1 + // [135] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuz1=vbuc1 lda #col sta.z memset.c - // [137] phi (void*) memset::str#3 = (void*)(const nomodify byte*) BITMAP_SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 + // [135] phi (void*) memset::str#3 = (void*)(const nomodify byte*) BITMAP_SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 lda #BITMAP_SCREEN sta.z memset.str+1 - // [137] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 + // [135] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 lda #<$3e8 sta.z memset.num lda #>$3e8 @@ -5766,17 +5758,17 @@ bitmap_clear: { // bitmap_clear::@1 __b1: // [77] call memset - // [137] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + // [135] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] memset_from___b1: - // [137] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuz1=vbuc1 + // [135] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuz1=vbuc1 lda #0 sta.z memset.c - // [137] phi (void*) memset::str#3 = (void*)(const nomodify byte*) BITMAP_GRAPHICS [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 + // [135] phi (void*) memset::str#3 = (void*)(const nomodify byte*) BITMAP_GRAPHICS [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 lda #BITMAP_GRAPHICS sta.z memset.str+1 - // [137] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 + // [135] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 lda #<$1f40 sta.z memset.num lda #>$1f40 @@ -5792,8 +5784,8 @@ bitmap_clear: { // show_letter(byte zp($53) angle) show_letter: { .label __16 = $5c - .label __17 = $72 - .label __18 = $88 + .label __17 = $71 + .label __18 = $86 .label angle = $53 .label to_x = $5d .label to_y = $5f @@ -5801,23 +5793,21 @@ show_letter: { .label to_y_1 = $63 .label to_x_2 = $69 .label to_y_2 = $6b - .label via_x = $73 - .label via_y = $75 - .label via_x_1 = $77 - .label via_y_1 = $79 - .label via_x_2 = $7f - .label via_y_2 = $81 - .label segment_type = $89 - .label segment_via_x = $83 - .label segment_via_y = $85 + .label via_x = $72 + .label via_y = $74 + .label via_x_1 = $76 + .label via_y_1 = $78 + .label via_x_2 = $7e + .label via_y_2 = $80 + .label segment_type = $87 + .label segment_via_x = $82 + .label segment_via_y = $84 .label i = $17 .label current_x = $18 .label current_y = $1a .label current_x_1 = $6d .label current_y_1 = $6f - .label __19 = $5b - .label __21 = $71 - .label __23 = $87 + .label __21 = $5b // [80] phi from show_letter to show_letter::@1 [phi:show_letter->show_letter::@1] __b1_from_show_letter: // [80] phi (signed word) show_letter::current_y#4 = (signed word) 0 [phi:show_letter->show_letter::@1#0] -- vwsz1=vwsc1 @@ -5836,14 +5826,14 @@ show_letter: { jmp __b1 // show_letter::@1 __b1: - // [81] (byte~) show_letter::$19 ← (byte) show_letter::i#10 << (byte) 3 -- vbuz1=vbuz2_rol_3 + // [81] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3 -- vbuz1=vbuz2_rol_3 lda.z i asl asl asl - sta.z __19 - // [82] (byte~) show_letter::$16 ← (byte~) show_letter::$19 + (byte) show_letter::i#10 -- vbuz1=vbuz2_plus_vbuz3 - lda.z __19 + sta.z __21 + // [82] (byte~) show_letter::$16 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 -- vbuz1=vbuz2_plus_vbuz3 + lda.z __21 clc adc.z i sta.z __16 @@ -5889,11 +5879,11 @@ show_letter: { lda.z angle sta.z rotate.angle // [90] call rotate - // [146] phi from show_letter::@1 to rotate [phi:show_letter::@1->rotate] + // [144] phi from show_letter::@1 to rotate [phi:show_letter::@1->rotate] rotate_from___b1: - // [146] phi (signed word) rotate::vector_y#2 = (signed word) rotate::vector_y#0 [phi:show_letter::@1->rotate#0] -- register_copy - // [146] phi (signed word) rotate::vector_x#2 = (signed word) rotate::vector_x#0 [phi:show_letter::@1->rotate#1] -- register_copy - // [146] phi (byte) rotate::angle#2 = (byte) rotate::angle#0 [phi:show_letter::@1->rotate#2] -- register_copy + // [144] phi (signed word) rotate::vector_y#2 = (signed word) rotate::vector_y#0 [phi:show_letter::@1->rotate#0] -- register_copy + // [144] phi (signed word) rotate::vector_x#2 = (signed word) rotate::vector_x#0 [phi:show_letter::@1->rotate#1] -- register_copy + // [144] phi (byte) rotate::angle#2 = (byte) rotate::angle#0 [phi:show_letter::@1->rotate#2] -- register_copy jsr rotate // [91] (signed word) rotate::return_x#0 ← (signed word) rotate::return_x#2 -- vwsz1=vwsz2 lda.z rotate.return_x_2 @@ -5934,30 +5924,24 @@ show_letter: { lda.z to_y_2+1 adc #>$64 sta.z current_y_1+1 - // [97] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3 -- vbuz1=vbuz2_rol_3 - lda.z i - asl - asl - asl - sta.z __21 - // [98] (byte~) show_letter::$17 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 -- vbuz1=vbuz2_plus_vbuz3 + // [97] (byte~) show_letter::$17 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 -- vbuz1=vbuz2_plus_vbuz3 lda.z __21 clc adc.z i sta.z __17 - // [99] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$17) -- vwsz1=pwsc1_derefidx_vbuz2 + // [98] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$17) -- vwsz1=pwsc1_derefidx_vbuz2 ldy.z __17 lda letter_c+OFFSET_STRUCT_SEGMENT_VIA,y sta.z via_x lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+1,y sta.z via_x+1 - // [100] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17) -- vwsz1=pwsc1_derefidx_vbuz2 + // [99] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17) -- vwsz1=pwsc1_derefidx_vbuz2 ldy.z __17 lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y,y sta.z via_y lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y sta.z via_y+1 - // [101] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 -- vwsz1=vwsz2_minus_vbsc1 + // [100] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 -- vwsz1=vwsz2_minus_vbsc1 lda.z via_x sec sbc #$32 @@ -5965,7 +5949,7 @@ show_letter: { lda.z via_x+1 sbc #>$32 sta.z via_x_1+1 - // [102] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 -- vwsz1=vwsz2_minus_vwsc1 + // [101] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 -- vwsz1=vwsz2_minus_vwsc1 lda.z via_y sec sbc #<$96 @@ -5973,32 +5957,32 @@ show_letter: { lda.z via_y+1 sbc #>$96 sta.z via_y_1+1 - // [103] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 -- vwsz1=vwsz2 + // [102] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 -- vwsz1=vwsz2 lda.z via_x_1 sta.z rotate.vector_x lda.z via_x_1+1 sta.z rotate.vector_x+1 - // [104] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 -- vwsz1=vwsz2 + // [103] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 -- vwsz1=vwsz2 lda.z via_y_1 sta.z rotate.vector_y lda.z via_y_1+1 sta.z rotate.vector_y+1 - // [105] (byte) rotate::angle#1 ← (byte) show_letter::angle#0 -- vbuz1=vbuz2 + // [104] (byte) rotate::angle#1 ← (byte) show_letter::angle#0 -- vbuz1=vbuz2 lda.z angle sta.z rotate.angle - // [106] call rotate - // [146] phi from show_letter::@6 to rotate [phi:show_letter::@6->rotate] + // [105] call rotate + // [144] phi from show_letter::@6 to rotate [phi:show_letter::@6->rotate] rotate_from___b6: - // [146] phi (signed word) rotate::vector_y#2 = (signed word) rotate::vector_y#1 [phi:show_letter::@6->rotate#0] -- register_copy - // [146] phi (signed word) rotate::vector_x#2 = (signed word) rotate::vector_x#1 [phi:show_letter::@6->rotate#1] -- register_copy - // [146] phi (byte) rotate::angle#2 = (byte) rotate::angle#1 [phi:show_letter::@6->rotate#2] -- register_copy + // [144] phi (signed word) rotate::vector_y#2 = (signed word) rotate::vector_y#1 [phi:show_letter::@6->rotate#0] -- register_copy + // [144] phi (signed word) rotate::vector_x#2 = (signed word) rotate::vector_x#1 [phi:show_letter::@6->rotate#1] -- register_copy + // [144] phi (byte) rotate::angle#2 = (byte) rotate::angle#1 [phi:show_letter::@6->rotate#2] -- register_copy jsr rotate - // [107] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 -- vwsz1=vwsz2 + // [106] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 -- vwsz1=vwsz2 lda.z rotate.return_x_2 sta.z rotate.return_x_1 lda.z rotate.return_x_2+1 sta.z rotate.return_x_1+1 - // [108] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 -- vwsz1=vwsz2 + // [107] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 -- vwsz1=vwsz2 lda.z rotate.return_y_2 sta.z rotate.return_y_1 lda.z rotate.return_y_2+1 @@ -6006,17 +5990,17 @@ show_letter: { jmp __b7 // show_letter::@7 __b7: - // [109] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 -- vwsz1=vwsz2 + // [108] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 -- vwsz1=vwsz2 lda.z rotate.return_x_1 sta.z via_x_2 lda.z rotate.return_x_1+1 sta.z via_x_2+1 - // [110] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 -- vwsz1=vwsz2 + // [109] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 -- vwsz1=vwsz2 lda.z rotate.return_y_1 sta.z via_y_2 lda.z rotate.return_y_1+1 sta.z via_y_2+1 - // [111] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 -- vwsz1=vwsz2_plus_vbsc1 + // [110] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 -- vwsz1=vwsz2_plus_vbsc1 lda.z via_x_2 clc adc #<$64 @@ -6024,7 +6008,7 @@ show_letter: { lda.z via_x_2+1 adc #>$64 sta.z segment_via_x+1 - // [112] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 -- vwsz1=vwsz2_plus_vbsc1 + // [111] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 -- vwsz1=vwsz2_plus_vbsc1 lda.z via_y_2 clc adc #<$64 @@ -6032,85 +6016,79 @@ show_letter: { lda.z via_y_2+1 adc #>$64 sta.z segment_via_y+1 - // [113] (byte~) show_letter::$23 ← (byte) show_letter::i#10 << (byte) 3 -- vbuz1=vbuz2_rol_3 - lda.z i - asl - asl - asl - sta.z __23 - // [114] (byte~) show_letter::$18 ← (byte~) show_letter::$23 + (byte) show_letter::i#10 -- vbuz1=vbuz2_plus_vbuz3 - lda.z __23 + // [112] (byte~) show_letter::$18 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 -- vbuz1=vbuz2_plus_vbuz3 + lda.z __21 clc adc.z i sta.z __18 - // [115] (byte) show_letter::segment_type#0 ← *((byte*)(const struct Segment*) letter_c + (byte~) show_letter::$18) -- vbuz1=pbuc1_derefidx_vbuz2 + // [113] (byte) show_letter::segment_type#0 ← *((byte*)(const struct Segment*) letter_c + (byte~) show_letter::$18) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z __18 lda letter_c,y sta.z segment_type - // [116] if((byte) show_letter::segment_type#0==(const byte) MOVE_TO) goto show_letter::@3 -- vbuz1_eq_vbuc1_then_la1 + // [114] if((byte) show_letter::segment_type#0==(const byte) MOVE_TO) goto show_letter::@3 -- vbuz1_eq_vbuc1_then_la1 lda #MOVE_TO cmp.z segment_type beq __b3 jmp __b4 // show_letter::@4 __b4: - // [117] if((byte) show_letter::segment_type#0==(const byte) SPLINE_TO) goto show_letter::@2 -- vbuz1_eq_vbuc1_then_la1 + // [115] if((byte) show_letter::segment_type#0==(const byte) SPLINE_TO) goto show_letter::@2 -- vbuz1_eq_vbuc1_then_la1 lda #SPLINE_TO cmp.z segment_type beq __b2 jmp __b5 // show_letter::@5 __b5: - // [118] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 -- vwuz1=vwuz2 + // [116] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 -- vwuz1=vwuz2 lda.z current_x sta.z bitmap_line.x1 lda.z current_x+1 sta.z bitmap_line.x1+1 - // [119] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 -- vwuz1=vwuz2 + // [117] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 -- vwuz1=vwuz2 lda.z current_y sta.z bitmap_line.y1 lda.z current_y+1 sta.z bitmap_line.y1+1 - // [120] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 -- vwuz1=vwuz2 + // [118] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 -- vwuz1=vwuz2 lda.z current_x_1 sta.z bitmap_line.x2 lda.z current_x_1+1 sta.z bitmap_line.x2+1 - // [121] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 -- vwuz1=vwuz2 + // [119] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 -- vwuz1=vwuz2 lda.z current_y_1 sta.z bitmap_line.y2 lda.z current_y_1+1 sta.z bitmap_line.y2+1 - // [122] call bitmap_line - // [184] phi from show_letter::@5 to bitmap_line [phi:show_letter::@5->bitmap_line] + // [120] call bitmap_line + // [182] phi from show_letter::@5 to bitmap_line [phi:show_letter::@5->bitmap_line] bitmap_line_from___b5: - // [184] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#0 [phi:show_letter::@5->bitmap_line#0] -- register_copy - // [184] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#0 [phi:show_letter::@5->bitmap_line#1] -- register_copy - // [184] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#0 [phi:show_letter::@5->bitmap_line#2] -- register_copy - // [184] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#0 [phi:show_letter::@5->bitmap_line#3] -- register_copy + // [182] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#0 [phi:show_letter::@5->bitmap_line#0] -- register_copy + // [182] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#0 [phi:show_letter::@5->bitmap_line#1] -- register_copy + // [182] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#0 [phi:show_letter::@5->bitmap_line#2] -- register_copy + // [182] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#0 [phi:show_letter::@5->bitmap_line#3] -- register_copy jsr bitmap_line jmp __b3 // show_letter::@3 __b3: - // [123] (byte) show_letter::i#1 ← ++ (byte) show_letter::i#10 -- vbuz1=_inc_vbuz1 + // [121] (byte) show_letter::i#1 ← ++ (byte) show_letter::i#10 -- vbuz1=_inc_vbuz1 inc.z i - // [124] if((byte) show_letter::i#1!=(byte) $16) goto show_letter::@9 -- vbuz1_neq_vbuc1_then_la1 + // [122] if((byte) show_letter::i#1!=(byte) $16) goto show_letter::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$16 cmp.z i bne __b9 jmp __breturn // show_letter::@return __breturn: - // [125] return + // [123] return rts // show_letter::@9 __b9: - // [126] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 -- vwsz1=vwsz2 + // [124] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 -- vwsz1=vwsz2 lda.z current_x_1 sta.z current_x lda.z current_x_1+1 sta.z current_x+1 - // [127] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 -- vwsz1=vwsz2 + // [125] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 -- vwsz1=vwsz2 lda.z current_y_1 sta.z current_y lda.z current_y_1+1 @@ -6123,44 +6101,44 @@ show_letter: { jmp __b1 // show_letter::@2 __b2: - // [128] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 -- vwsz1=vwsz2 + // [126] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 -- vwsz1=vwsz2 lda.z current_x sta.z spline_8segB.p0_x lda.z current_x+1 sta.z spline_8segB.p0_x+1 - // [129] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 -- vwsz1=vwsz2 + // [127] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 -- vwsz1=vwsz2 lda.z current_y sta.z spline_8segB.p0_y lda.z current_y+1 sta.z spline_8segB.p0_y+1 - // [130] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 -- vwsz1=vwsz2 + // [128] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 -- vwsz1=vwsz2 lda.z segment_via_x sta.z spline_8segB.p1_x lda.z segment_via_x+1 sta.z spline_8segB.p1_x+1 - // [131] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 -- vwsz1=vwsz2 + // [129] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 -- vwsz1=vwsz2 lda.z segment_via_y sta.z spline_8segB.p1_y lda.z segment_via_y+1 sta.z spline_8segB.p1_y+1 - // [132] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 -- vwsz1=vwsz2 + // [130] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 -- vwsz1=vwsz2 lda.z current_x_1 sta.z spline_8segB.p2_x lda.z current_x_1+1 sta.z spline_8segB.p2_x+1 - // [133] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 -- vwsz1=vwsz2 + // [131] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 -- vwsz1=vwsz2 lda.z current_y_1 sta.z spline_8segB.p2_y lda.z current_y_1+1 sta.z spline_8segB.p2_y+1 - // [134] call spline_8segB + // [132] call spline_8segB jsr spline_8segB - // [135] phi from show_letter::@2 to show_letter::@8 [phi:show_letter::@2->show_letter::@8] + // [133] phi from show_letter::@2 to show_letter::@8 [phi:show_letter::@2->show_letter::@8] __b8_from___b2: jmp __b8 // show_letter::@8 __b8: - // [136] call bitmap_plot_spline_8seg + // [134] call bitmap_plot_spline_8seg jsr bitmap_plot_spline_8seg jmp __b3 } @@ -6168,12 +6146,12 @@ show_letter: { // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. // memset(void* zp($1e) str, byte zp($20) c, word zp($1c) num) memset: { - .label end = $96 + .label end = $94 .label dst = $21 .label num = $1c .label str = $1e .label c = $20 - // [138] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + // [136] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 lda.z num bne !+ lda.z num+1 @@ -6182,7 +6160,7 @@ memset: { jmp __b1 // memset::@1 __b1: - // [139] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz3 + // [137] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz3 lda.z str clc adc.z num @@ -6190,19 +6168,19 @@ memset: { lda.z str+1 adc.z num+1 sta.z end+1 - // [140] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 -- pbuz1=pbuz2 + // [138] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 -- pbuz1=pbuz2 lda.z str sta.z dst lda.z str+1 sta.z dst+1 - // [141] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] + // [139] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] __b2_from___b1: __b2_from___b3: - // [141] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy + // [139] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy jmp __b2 // memset::@2 __b2: - // [142] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 + // [140] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 lda.z dst+1 cmp.z end+1 bne __b3 @@ -6212,15 +6190,15 @@ memset: { jmp __breturn // memset::@return __breturn: - // [143] return + // [141] return rts // memset::@3 __b3: - // [144] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuz2 + // [142] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuz2 lda.z c ldy #0 sta (dst),y - // [145] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [143] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 @@ -6231,34 +6209,34 @@ memset: { // 2D-rotate a vector by an angle // rotate(signed word zp($24) vector_x, signed word zp($26) vector_y, byte zp($23) angle) rotate: { - .label __0 = $9e - .label __2 = $aa - .label __4 = $b8 - .label __5 = $be - .label __6 = $c6 - .label __7 = $cc - .label __8 = $d0 - .label __9 = $d1 - .label __10 = $a2 - .label __11 = $ae - .label __12 = $bc - .label __13 = $ca + .label __0 = $9c + .label __2 = $a8 + .label __4 = $b6 + .label __5 = $bc + .label __6 = $c4 + .label __7 = $ca + .label __8 = $ce + .label __9 = $cf + .label __10 = $a0 + .label __11 = $ac + .label __12 = $ba + .label __13 = $c8 .label vector_x = $24 .label vector_y = $26 .label angle = $23 .label return_x = $65 .label return_y = $67 - .label return_x_1 = $7b - .label return_y_1 = $7d - .label cos_a = $98 - .label xr = $a4 - .label yr = $b0 - .label sin_a = $b2 - .label xr_1 = $c0 - .label yr_1 = $ce - .label return_x_2 = $d2 - .label return_y_2 = $d4 - // [147] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) -- vwsz1=_sword_pbsc1_derefidx_vbuz2 + .label return_x_1 = $7a + .label return_y_1 = $7c + .label cos_a = $96 + .label xr = $a2 + .label yr = $ae + .label sin_a = $b0 + .label xr_1 = $be + .label yr_1 = $cc + .label return_x_2 = $d0 + .label return_y_2 = $d2 + // [145] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) -- vwsz1=_sword_pbsc1_derefidx_vbuz2 ldy.z angle lda COS,y sta.z cos_a @@ -6267,23 +6245,23 @@ rotate: { lda #0 !: sta.z cos_a+1 - // [148] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 -- vwsz1=vwsz2 + // [146] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 -- vwsz1=vwsz2 lda.z cos_a sta.z mulf16s.a lda.z cos_a+1 sta.z mulf16s.a+1 - // [149] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 -- vwsz1=vwsz2 + // [147] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 -- vwsz1=vwsz2 lda.z vector_x sta.z mulf16s.b lda.z vector_x+1 sta.z mulf16s.b+1 - // [150] call mulf16s - // [290] phi from rotate to mulf16s [phi:rotate->mulf16s] + // [148] call mulf16s + // [287] phi from rotate to mulf16s [phi:rotate->mulf16s] mulf16s_from_rotate: - // [290] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#0 [phi:rotate->mulf16s#0] -- register_copy - // [290] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#0 [phi:rotate->mulf16s#1] -- register_copy + // [287] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#0 [phi:rotate->mulf16s#0] -- register_copy + // [287] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#0 [phi:rotate->mulf16s#1] -- register_copy jsr mulf16s - // [151] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 -- vdsz1=vdsz2 + // [149] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 -- vdsz1=vdsz2 lda.z mulf16s.return sta.z mulf16s.return_1 lda.z mulf16s.return+1 @@ -6295,7 +6273,7 @@ rotate: { jmp __b1 // rotate::@1 __b1: - // [152] (signed dword~) rotate::$0 ← (signed dword) mulf16s::return#2 -- vdsz1=vdsz2 + // [150] (signed dword~) rotate::$0 ← (signed dword) mulf16s::return#2 -- vdsz1=vdsz2 lda.z mulf16s.return_1 sta.z __0 lda.z mulf16s.return_1+1 @@ -6304,35 +6282,35 @@ rotate: { sta.z __0+2 lda.z mulf16s.return_1+3 sta.z __0+3 - // [153] (signed word~) rotate::$10 ← (signed word)(signed dword~) rotate::$0 -- vwsz1=_sword_vdsz2 + // [151] (signed word~) rotate::$10 ← (signed word)(signed dword~) rotate::$0 -- vwsz1=_sword_vdsz2 lda.z __0 sta.z __10 lda.z __0+1 sta.z __10+1 - // [154] (signed word) rotate::xr#0 ← (signed word~) rotate::$10 << (byte) 1 -- vwsz1=vwsz2_rol_1 + // [152] (signed word) rotate::xr#0 ← (signed word~) rotate::$10 << (byte) 1 -- vwsz1=vwsz2_rol_1 lda.z __10 asl sta.z xr lda.z __10+1 rol sta.z xr+1 - // [155] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 -- vwsz1=vwsz2 + // [153] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 -- vwsz1=vwsz2 lda.z cos_a sta.z mulf16s.a lda.z cos_a+1 sta.z mulf16s.a+1 - // [156] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 -- vwsz1=vwsz2 + // [154] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 -- vwsz1=vwsz2 lda.z vector_y sta.z mulf16s.b lda.z vector_y+1 sta.z mulf16s.b+1 - // [157] call mulf16s - // [290] phi from rotate::@1 to mulf16s [phi:rotate::@1->mulf16s] + // [155] call mulf16s + // [287] phi from rotate::@1 to mulf16s [phi:rotate::@1->mulf16s] mulf16s_from___b1: - // [290] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#1 [phi:rotate::@1->mulf16s#0] -- register_copy - // [290] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#1 [phi:rotate::@1->mulf16s#1] -- register_copy + // [287] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#1 [phi:rotate::@1->mulf16s#0] -- register_copy + // [287] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#1 [phi:rotate::@1->mulf16s#1] -- register_copy jsr mulf16s - // [158] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 -- vdsz1=vdsz2 + // [156] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 -- vdsz1=vdsz2 lda.z mulf16s.return sta.z mulf16s.return_2 lda.z mulf16s.return+1 @@ -6344,7 +6322,7 @@ rotate: { jmp __b2 // rotate::@2 __b2: - // [159] (signed dword~) rotate::$2 ← (signed dword) mulf16s::return#3 -- vdsz1=vdsz2 + // [157] (signed dword~) rotate::$2 ← (signed dword) mulf16s::return#3 -- vdsz1=vdsz2 lda.z mulf16s.return_2 sta.z __2 lda.z mulf16s.return_2+1 @@ -6353,19 +6331,19 @@ rotate: { sta.z __2+2 lda.z mulf16s.return_2+3 sta.z __2+3 - // [160] (signed word~) rotate::$11 ← (signed word)(signed dword~) rotate::$2 -- vwsz1=_sword_vdsz2 + // [158] (signed word~) rotate::$11 ← (signed word)(signed dword~) rotate::$2 -- vwsz1=_sword_vdsz2 lda.z __2 sta.z __11 lda.z __2+1 sta.z __11+1 - // [161] (signed word) rotate::yr#0 ← (signed word~) rotate::$11 << (byte) 1 -- vwsz1=vwsz2_rol_1 + // [159] (signed word) rotate::yr#0 ← (signed word~) rotate::$11 << (byte) 1 -- vwsz1=vwsz2_rol_1 lda.z __11 asl sta.z yr lda.z __11+1 rol sta.z yr+1 - // [162] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) -- vwsz1=_sword_pbsc1_derefidx_vbuz2 + // [160] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) -- vwsz1=_sword_pbsc1_derefidx_vbuz2 // signed fixed[8.8] ldy.z angle lda SIN,y @@ -6375,23 +6353,23 @@ rotate: { lda #0 !: sta.z sin_a+1 - // [163] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 -- vwsz1=vwsz2 + // [161] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 -- vwsz1=vwsz2 lda.z sin_a sta.z mulf16s.a lda.z sin_a+1 sta.z mulf16s.a+1 - // [164] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 -- vwsz1=vwsz2 + // [162] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 -- vwsz1=vwsz2 lda.z vector_y sta.z mulf16s.b lda.z vector_y+1 sta.z mulf16s.b+1 - // [165] call mulf16s - // [290] phi from rotate::@2 to mulf16s [phi:rotate::@2->mulf16s] + // [163] call mulf16s + // [287] phi from rotate::@2 to mulf16s [phi:rotate::@2->mulf16s] mulf16s_from___b2: - // [290] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#2 [phi:rotate::@2->mulf16s#0] -- register_copy - // [290] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#2 [phi:rotate::@2->mulf16s#1] -- register_copy + // [287] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#2 [phi:rotate::@2->mulf16s#0] -- register_copy + // [287] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#2 [phi:rotate::@2->mulf16s#1] -- register_copy jsr mulf16s - // [166] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 -- vdsz1=vdsz2 + // [164] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 -- vdsz1=vdsz2 lda.z mulf16s.return sta.z mulf16s.return_3 lda.z mulf16s.return+1 @@ -6403,7 +6381,7 @@ rotate: { jmp __b3 // rotate::@3 __b3: - // [167] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#4 -- vdsz1=vdsz2 + // [165] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#4 -- vdsz1=vdsz2 lda.z mulf16s.return_3 sta.z __4 lda.z mulf16s.return_3+1 @@ -6412,19 +6390,19 @@ rotate: { sta.z __4+2 lda.z mulf16s.return_3+3 sta.z __4+3 - // [168] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$4 -- vwsz1=_sword_vdsz2 + // [166] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$4 -- vwsz1=_sword_vdsz2 lda.z __4 sta.z __12 lda.z __4+1 sta.z __12+1 - // [169] (signed word~) rotate::$5 ← (signed word~) rotate::$12 << (byte) 1 -- vwsz1=vwsz2_rol_1 + // [167] (signed word~) rotate::$5 ← (signed word~) rotate::$12 << (byte) 1 -- vwsz1=vwsz2_rol_1 lda.z __12 asl sta.z __5 lda.z __12+1 rol sta.z __5+1 - // [170] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$5 -- vwsz1=vwsz2_minus_vwsz3 + // [168] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$5 -- vwsz1=vwsz2_minus_vwsz3 // signed fixed[0.7] lda.z xr sec @@ -6433,23 +6411,23 @@ rotate: { lda.z xr+1 sbc.z __5+1 sta.z xr_1+1 - // [171] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 -- vwsz1=vwsz2 + // [169] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 -- vwsz1=vwsz2 lda.z sin_a sta.z mulf16s.a lda.z sin_a+1 sta.z mulf16s.a+1 - // [172] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 -- vwsz1=vwsz2 + // [170] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 -- vwsz1=vwsz2 lda.z vector_x sta.z mulf16s.b lda.z vector_x+1 sta.z mulf16s.b+1 - // [173] call mulf16s - // [290] phi from rotate::@3 to mulf16s [phi:rotate::@3->mulf16s] + // [171] call mulf16s + // [287] phi from rotate::@3 to mulf16s [phi:rotate::@3->mulf16s] mulf16s_from___b3: - // [290] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#3 [phi:rotate::@3->mulf16s#0] -- register_copy - // [290] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#3 [phi:rotate::@3->mulf16s#1] -- register_copy + // [287] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#3 [phi:rotate::@3->mulf16s#0] -- register_copy + // [287] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#3 [phi:rotate::@3->mulf16s#1] -- register_copy jsr mulf16s - // [174] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 -- vdsz1=vdsz2 + // [172] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 -- vdsz1=vdsz2 lda.z mulf16s.return sta.z mulf16s.return_4 lda.z mulf16s.return+1 @@ -6461,7 +6439,7 @@ rotate: { jmp __b4 // rotate::@4 __b4: - // [175] (signed dword~) rotate::$6 ← (signed dword) mulf16s::return#10 -- vdsz1=vdsz2 + // [173] (signed dword~) rotate::$6 ← (signed dword) mulf16s::return#10 -- vdsz1=vdsz2 lda.z mulf16s.return_4 sta.z __6 lda.z mulf16s.return_4+1 @@ -6470,19 +6448,19 @@ rotate: { sta.z __6+2 lda.z mulf16s.return_4+3 sta.z __6+3 - // [176] (signed word~) rotate::$13 ← (signed word)(signed dword~) rotate::$6 -- vwsz1=_sword_vdsz2 + // [174] (signed word~) rotate::$13 ← (signed word)(signed dword~) rotate::$6 -- vwsz1=_sword_vdsz2 lda.z __6 sta.z __13 lda.z __6+1 sta.z __13+1 - // [177] (signed word~) rotate::$7 ← (signed word~) rotate::$13 << (byte) 1 -- vwsz1=vwsz2_rol_1 + // [175] (signed word~) rotate::$7 ← (signed word~) rotate::$13 << (byte) 1 -- vwsz1=vwsz2_rol_1 lda.z __13 asl sta.z __7 lda.z __13+1 rol sta.z __7+1 - // [178] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$7 -- vwsz1=vwsz2_plus_vwsz3 + // [176] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$7 -- vwsz1=vwsz2_plus_vwsz3 // signed fixed[8.8] lda.z yr clc @@ -6491,13 +6469,13 @@ rotate: { lda.z yr+1 adc.z __7+1 sta.z yr_1+1 - // [179] (byte~) rotate::$8 ← > (signed word) rotate::xr#1 -- vbuz1=_hi_vwsz2 + // [177] (byte~) rotate::$8 ← > (signed word) rotate::xr#1 -- vbuz1=_hi_vwsz2 lda.z xr_1+1 sta.z __8 - // [180] (byte~) rotate::$9 ← > (signed word) rotate::yr#1 -- vbuz1=_hi_vwsz2 + // [178] (byte~) rotate::$9 ← > (signed word) rotate::yr#1 -- vbuz1=_hi_vwsz2 lda.z yr_1+1 sta.z __9 - // [181] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$8 -- vwsz1=_sword_vbsz2 + // [179] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$8 -- vwsz1=_sword_vbsz2 lda.z __8 sta.z return_x_2 ora #$7f @@ -6505,7 +6483,7 @@ rotate: { lda #0 !: sta.z return_x_2+1 - // [182] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$9 -- vwsz1=_sword_vbsz2 + // [180] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$9 -- vwsz1=_sword_vbsz2 lda.z __9 sta.z return_y_2 ora #$7f @@ -6516,7 +6494,7 @@ rotate: { jmp __breturn // rotate::@return __breturn: - // [183] return + // [181] return rts } // bitmap_line @@ -6525,17 +6503,17 @@ rotate: { bitmap_line: { .label x = $2e .label y = $30 - .label dx = $d8 - .label dy = $dc - .label sx = $e0 - .label sy = $e4 + .label dx = $d6 + .label dy = $da + .label sx = $de + .label sy = $e2 .label e1 = $32 .label e = $2c .label x1 = $2e .label y1 = $30 .label x2 = $28 .label y2 = $2a - // [185] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 + // [183] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z x2 sec sbc.z x @@ -6543,12 +6521,12 @@ bitmap_line: { lda.z x2+1 sbc.z x+1 sta.z abs_u16.w+1 - // [186] call abs_u16 - // [308] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] + // [184] call abs_u16 + // [305] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] abs_u16_from_bitmap_line: - // [308] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy + // [305] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy jsr abs_u16 - // [187] (word) abs_u16::return#0 ← (word) abs_u16::return#4 -- vwuz1=vwuz2 + // [185] (word) abs_u16::return#0 ← (word) abs_u16::return#4 -- vwuz1=vwuz2 lda.z abs_u16.return_2 sta.z abs_u16.return lda.z abs_u16.return_2+1 @@ -6556,12 +6534,12 @@ bitmap_line: { jmp __b12 // bitmap_line::@12 __b12: - // [188] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 -- vwuz1=vwuz2 + // [186] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 -- vwuz1=vwuz2 lda.z abs_u16.return sta.z dx lda.z abs_u16.return+1 sta.z dx+1 - // [189] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 + // [187] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z y2 sec sbc.z y @@ -6569,12 +6547,12 @@ bitmap_line: { lda.z y2+1 sbc.z y+1 sta.z abs_u16.w+1 - // [190] call abs_u16 - // [308] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16] + // [188] call abs_u16 + // [305] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16] abs_u16_from___b12: - // [308] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy + // [305] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy jsr abs_u16 - // [191] (word) abs_u16::return#1 ← (word) abs_u16::return#4 -- vwuz1=vwuz2 + // [189] (word) abs_u16::return#1 ← (word) abs_u16::return#4 -- vwuz1=vwuz2 lda.z abs_u16.return_2 sta.z abs_u16.return_1 lda.z abs_u16.return_2+1 @@ -6582,12 +6560,12 @@ bitmap_line: { jmp __b13 // bitmap_line::@13 __b13: - // [192] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 -- vwuz1=vwuz2 + // [190] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 -- vwuz1=vwuz2 lda.z abs_u16.return_1 sta.z dy lda.z abs_u16.return_1+1 sta.z dy+1 - // [193] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 + // [191] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 lda.z dx bne __b1 lda.z dx+1 @@ -6595,7 +6573,7 @@ bitmap_line: { jmp __b18 // bitmap_line::@18 __b18: - // [194] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 + // [192] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 lda.z dy bne !+ lda.z dy+1 @@ -6604,7 +6582,7 @@ bitmap_line: { jmp __b1 // bitmap_line::@1 __b1: - // [195] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 + // [193] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z x2 sec sbc.z x @@ -6612,12 +6590,12 @@ bitmap_line: { lda.z x2+1 sbc.z x+1 sta.z sgn_u16.w+1 - // [196] call sgn_u16 - // [315] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16] + // [194] call sgn_u16 + // [312] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16] sgn_u16_from___b1: - // [315] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy + // [312] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy jsr sgn_u16 - // [197] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 -- vwuz1=vwuz2 + // [195] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 -- vwuz1=vwuz2 lda.z sgn_u16.return_2 sta.z sgn_u16.return lda.z sgn_u16.return_2+1 @@ -6625,12 +6603,12 @@ bitmap_line: { jmp __b14 // bitmap_line::@14 __b14: - // [198] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 + // [196] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 lda.z sgn_u16.return sta.z sx lda.z sgn_u16.return+1 sta.z sx+1 - // [199] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 + // [197] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z y2 sec sbc.z y @@ -6638,12 +6616,12 @@ bitmap_line: { lda.z y2+1 sbc.z y+1 sta.z sgn_u16.w+1 - // [200] call sgn_u16 - // [315] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16] + // [198] call sgn_u16 + // [312] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16] sgn_u16_from___b14: - // [315] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy + // [312] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy jsr sgn_u16 - // [201] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 -- vwuz1=vwuz2 + // [199] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 -- vwuz1=vwuz2 lda.z sgn_u16.return_2 sta.z sgn_u16.return_1 lda.z sgn_u16.return_2+1 @@ -6651,12 +6629,12 @@ bitmap_line: { jmp __b15 // bitmap_line::@15 __b15: - // [202] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 -- vwuz1=vwuz2 + // [200] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 -- vwuz1=vwuz2 lda.z sgn_u16.return_1 sta.z sy lda.z sgn_u16.return_1+1 sta.z sy+1 - // [203] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 + // [201] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 lda.z dy+1 cmp.z dx+1 bcc __b2 @@ -6668,40 +6646,40 @@ bitmap_line: { jmp __b5 // bitmap_line::@5 __b5: - // [204] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + // [202] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 lda.z dx+1 lsr sta.z e+1 lda.z dx ror sta.z e - // [205] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6] + // [203] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6] __b6_from___b5: __b6_from___b7: - // [205] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy - // [205] phi (word) bitmap_line::y#4 = (word) bitmap_line::y#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy - // [205] phi (word) bitmap_line::x#13 = (word) bitmap_line::x#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy + // [203] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy + // [203] phi (word) bitmap_line::y#4 = (word) bitmap_line::y#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy + // [203] phi (word) bitmap_line::x#13 = (word) bitmap_line::x#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy jmp __b6 // bitmap_line::@6 __b6: - // [206] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 -- vwuz1=vwuz2 + // [204] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 -- vwuz1=vwuz2 lda.z x sta.z bitmap_plot.x lda.z x+1 sta.z bitmap_plot.x+1 - // [207] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 -- vbuz1=_byte_vwuz2 + // [205] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 -- vbuz1=_byte_vwuz2 lda.z y sta.z bitmap_plot.y - // [208] call bitmap_plot - // [322] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot] + // [206] call bitmap_plot + // [319] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot] bitmap_plot_from___b6: - // [322] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy - // [322] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy + // [319] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy + // [319] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b16 // bitmap_line::@16 __b16: - // [209] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + // [207] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z y clc adc.z sy @@ -6709,7 +6687,7 @@ bitmap_line: { lda.z y+1 adc.z sy+1 sta.z y+1 - // [210] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 + // [208] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z e clc adc.z dx @@ -6717,7 +6695,7 @@ bitmap_line: { lda.z e+1 adc.z dx+1 sta.z e+1 - // [211] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 + // [209] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 lda.z e+1 cmp.z dy+1 bne !+ @@ -6729,7 +6707,7 @@ bitmap_line: { jmp __b8 // bitmap_line::@8 __b8: - // [212] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + // [210] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z x clc adc.z sx @@ -6737,7 +6715,7 @@ bitmap_line: { lda.z x+1 adc.z sx+1 sta.z x+1 - // [213] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 + // [211] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 lda.z e sec sbc.z dy @@ -6745,84 +6723,84 @@ bitmap_line: { lda.z e+1 sbc.z dy+1 sta.z e+1 - // [214] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7] + // [212] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7] __b7_from___b16: __b7_from___b8: - // [214] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy - // [214] phi (word) bitmap_line::x#12 = (word) bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy + // [212] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy + // [212] phi (word) bitmap_line::x#12 = (word) bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy jmp __b7 // bitmap_line::@7 __b7: - // [215] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 + // [213] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 lda.z y+1 cmp.z y2+1 bne __b6_from___b7 lda.z y cmp.z y2 bne __b6_from___b7 - // [216] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3] + // [214] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3] __b3_from___b10: __b3_from___b7: - // [216] phi (word) bitmap_line::y#7 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy - // [216] phi (word) bitmap_line::x#6 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy + // [214] phi (word) bitmap_line::y#7 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy + // [214] phi (word) bitmap_line::x#6 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy jmp __b3 // bitmap_line::@3 __b3: - // [217] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 -- vwuz1=vwuz2 + // [215] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 -- vwuz1=vwuz2 lda.z x sta.z bitmap_plot.x lda.z x+1 sta.z bitmap_plot.x+1 - // [218] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 -- vbuz1=_byte_vwuz2 + // [216] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 -- vbuz1=_byte_vwuz2 lda.z y sta.z bitmap_plot.y - // [219] call bitmap_plot - // [322] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot] + // [217] call bitmap_plot + // [319] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot] bitmap_plot_from___b3: - // [322] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy - // [322] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy + // [319] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy + // [319] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __breturn // bitmap_line::@return __breturn: - // [220] return + // [218] return rts // bitmap_line::@2 __b2: - // [221] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + // [219] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 lda.z dy+1 lsr sta.z e1+1 lda.z dy ror sta.z e1 - // [222] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9] + // [220] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9] __b9_from___b10: __b9_from___b2: - // [222] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy - // [222] phi (word) bitmap_line::y#15 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy - // [222] phi (word) bitmap_line::x#7 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy + // [220] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy + // [220] phi (word) bitmap_line::y#15 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy + // [220] phi (word) bitmap_line::x#7 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy jmp __b9 // bitmap_line::@9 __b9: - // [223] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 -- vwuz1=vwuz2 + // [221] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 -- vwuz1=vwuz2 lda.z x sta.z bitmap_plot.x lda.z x+1 sta.z bitmap_plot.x+1 - // [224] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 -- vbuz1=_byte_vwuz2 + // [222] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 -- vbuz1=_byte_vwuz2 lda.z y sta.z bitmap_plot.y - // [225] call bitmap_plot - // [322] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot] + // [223] call bitmap_plot + // [319] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot] bitmap_plot_from___b9: - // [322] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy - // [322] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy + // [319] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy + // [319] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b17 // bitmap_line::@17 __b17: - // [226] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + // [224] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z x clc adc.z sx @@ -6830,7 +6808,7 @@ bitmap_line: { lda.z x+1 adc.z sx+1 sta.z x+1 - // [227] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 + // [225] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z e1 clc adc.z dy @@ -6838,7 +6816,7 @@ bitmap_line: { lda.z e1+1 adc.z dy+1 sta.z e1+1 - // [228] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 + // [226] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 lda.z e1+1 cmp.z dx+1 bne !+ @@ -6850,7 +6828,7 @@ bitmap_line: { jmp __b11 // bitmap_line::@11 __b11: - // [229] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + // [227] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z y clc adc.z sy @@ -6858,7 +6836,7 @@ bitmap_line: { lda.z y+1 adc.z sy+1 sta.z y+1 - // [230] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 + // [228] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 lda.z e1 sec sbc.z dx @@ -6866,15 +6844,15 @@ bitmap_line: { lda.z e1+1 sbc.z dx+1 sta.z e1+1 - // [231] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10] + // [229] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10] __b10_from___b11: __b10_from___b17: - // [231] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy - // [231] phi (word) bitmap_line::y#13 = (word) bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy + // [229] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy + // [229] phi (word) bitmap_line::y#13 = (word) bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy jmp __b10 // bitmap_line::@10 __b10: - // [232] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 + // [230] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 lda.z x+1 cmp.z x2+1 bne __b9_from___b10 @@ -6884,19 +6862,19 @@ bitmap_line: { jmp __b3_from___b10 // bitmap_line::@4 __b4: - // [233] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 -- vwuz1=vwuz2 + // [231] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 -- vwuz1=vwuz2 lda.z x sta.z bitmap_plot.x lda.z x+1 sta.z bitmap_plot.x+1 - // [234] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 -- vbuz1=_byte_vwuz2 + // [232] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 -- vbuz1=_byte_vwuz2 lda.z y sta.z bitmap_plot.y - // [235] call bitmap_plot - // [322] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] + // [233] call bitmap_plot + // [319] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] bitmap_plot_from___b4: - // [322] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy - // [322] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy + // [319] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy + // [319] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __breturn } @@ -6906,50 +6884,50 @@ bitmap_line: { // Point values must be within [-200 ; 1ff] for the calculation to not overflow. // A quadratic spline is a curve defined by 3 points: P0, P1 and P2. // The curve connects P0 to P2 through a smooth curve that moves towards P1, but does usually not touch it. -// spline_8segB(signed word zp($8a) p0_x, signed word zp($8c) p0_y, signed word zp($8e) p1_x, signed word zp($90) p1_y, signed word zp($92) p2_x, signed word zp($94) p2_y) +// spline_8segB(signed word zp($88) p0_x, signed word zp($8a) p0_y, signed word zp($8c) p1_x, signed word zp($8e) p1_y, signed word zp($90) p2_x, signed word zp($92) p2_y) spline_8segB: { - .label __0 = $e6 - .label __1 = $e8 - .label __3 = $ec - .label __4 = $ee - .label __6 = $f2 - .label __8 = $f6 - .label __10 = $fa - .label __12 = $fc - .label __18 = $10b - .label __19 = $10d - .label __20 = $10f - .label __21 = $111 - .label __22 = $102 - .label __23 = $104 - .label __24 = $106 - .label __25 = $108 - .label __31 = $10a - .label a_x = $ea - .label a_y = $f0 - .label b_x = $f4 - .label b_y = $f8 + .label __0 = $e4 + .label __1 = $e6 + .label __3 = $ea + .label __4 = $ec + .label __6 = $f0 + .label __8 = $f4 + .label __10 = $f8 + .label __12 = $fa + .label __18 = $109 + .label __19 = $10b + .label __20 = $10d + .label __21 = $10f + .label __22 = $100 + .label __23 = $102 + .label __24 = $104 + .label __25 = $106 + .label __31 = $108 + .label a_x = $e8 + .label a_y = $ee + .label b_x = $f2 + .label b_y = $f6 .label i_x = $39 .label i_y = $3b - .label j_x = $fe - .label j_y = $100 + .label j_x = $fc + .label j_y = $fe .label p_x = $34 .label p_y = $36 .label n = $38 - .label p0_x = $8a - .label p0_y = $8c - .label p1_x = $8e - .label p1_y = $90 - .label p2_x = $92 - .label p2_y = $94 - // [236] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 + .label p0_x = $88 + .label p0_y = $8a + .label p1_x = $8c + .label p1_y = $8e + .label p2_x = $90 + .label p2_y = $92 + // [234] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 lda.z p1_x asl sta.z __0 lda.z p1_x+1 rol sta.z __0+1 - // [237] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 -- vwsz1=vwsz2_minus_vwsz3 + // [235] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 -- vwsz1=vwsz2_minus_vwsz3 lda.z p2_x sec sbc.z __0 @@ -6957,7 +6935,7 @@ spline_8segB: { lda.z p2_x+1 sbc.z __0+1 sta.z __1+1 - // [238] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz2_plus_vwsz3 + // [236] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz2_plus_vwsz3 lda.z __1 clc adc.z p0_x @@ -6965,14 +6943,14 @@ spline_8segB: { lda.z __1+1 adc.z p0_x+1 sta.z a_x+1 - // [239] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 + // [237] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 lda.z p1_y asl sta.z __3 lda.z p1_y+1 rol sta.z __3+1 - // [240] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 -- vwsz1=vwsz2_minus_vwsz3 + // [238] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 -- vwsz1=vwsz2_minus_vwsz3 lda.z p2_y sec sbc.z __3 @@ -6980,7 +6958,7 @@ spline_8segB: { lda.z p2_y+1 sbc.z __3+1 sta.z __4+1 - // [241] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz2_plus_vwsz3 + // [239] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz2_plus_vwsz3 lda.z __4 clc adc.z p0_y @@ -6988,7 +6966,7 @@ spline_8segB: { lda.z __4+1 adc.z p0_y+1 sta.z a_y+1 - // [242] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz2_minus_vwsz3 + // [240] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz2_minus_vwsz3 lda.z p1_x sec sbc.z p0_x @@ -6996,14 +6974,14 @@ spline_8segB: { lda.z p1_x+1 sbc.z p0_x+1 sta.z __6+1 - // [243] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 -- vwsz1=vwsz2_rol_1 + // [241] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 -- vwsz1=vwsz2_rol_1 lda.z __6 asl sta.z b_x lda.z __6+1 rol sta.z b_x+1 - // [244] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz2_minus_vwsz3 + // [242] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz2_minus_vwsz3 lda.z p1_y sec sbc.z p0_y @@ -7011,14 +6989,14 @@ spline_8segB: { lda.z p1_y+1 sbc.z p0_y+1 sta.z __8+1 - // [245] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 -- vwsz1=vwsz2_rol_1 + // [243] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 -- vwsz1=vwsz2_rol_1 lda.z __8 asl sta.z b_y lda.z __8+1 rol sta.z b_y+1 - // [246] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 -- vwsz1=vwsz2_rol_3 + // [244] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 -- vwsz1=vwsz2_rol_3 lda.z b_x asl sta.z __10 @@ -7029,7 +7007,7 @@ spline_8segB: { rol.z __10+1 asl.z __10 rol.z __10+1 - // [247] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 -- vwsz1=vwsz2_plus_vwsz3 + // [245] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 -- vwsz1=vwsz2_plus_vwsz3 lda.z a_x clc adc.z __10 @@ -7037,7 +7015,7 @@ spline_8segB: { lda.z a_x+1 adc.z __10+1 sta.z i_x+1 - // [248] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 -- vwsz1=vwsz2_rol_3 + // [246] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 -- vwsz1=vwsz2_rol_3 lda.z b_y asl sta.z __12 @@ -7048,7 +7026,7 @@ spline_8segB: { rol.z __12+1 asl.z __12 rol.z __12+1 - // [249] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 -- vwsz1=vwsz2_plus_vwsz3 + // [247] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 -- vwsz1=vwsz2_plus_vwsz3 lda.z a_y clc adc.z __12 @@ -7056,21 +7034,21 @@ spline_8segB: { lda.z a_y+1 adc.z __12+1 sta.z i_y+1 - // [250] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 + // [248] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 lda.z a_x asl sta.z j_x lda.z a_x+1 rol sta.z j_x+1 - // [251] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 + // [249] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 lda.z a_y asl sta.z j_y lda.z a_y+1 rol sta.z j_y+1 - // [252] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 -- vwsz1=vwsz2_rol_6 + // [250] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 -- vwsz1=vwsz2_rol_6 lda.z p0_x asl sta.z p_x @@ -7087,7 +7065,7 @@ spline_8segB: { rol.z p_x+1 asl.z p_x rol.z p_x+1 - // [253] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 -- vwsz1=vwsz2_rol_6 + // [251] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 -- vwsz1=vwsz2_rol_6 lda.z p0_y asl sta.z p_y @@ -7104,27 +7082,27 @@ spline_8segB: { rol.z p_y+1 asl.z p_y rol.z p_y+1 - // [254] phi from spline_8segB to spline_8segB::@1 [phi:spline_8segB->spline_8segB::@1] + // [252] phi from spline_8segB to spline_8segB::@1 [phi:spline_8segB->spline_8segB::@1] __b1_from_spline_8segB: - // [254] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#0 [phi:spline_8segB->spline_8segB::@1#0] -- register_copy - // [254] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#0 [phi:spline_8segB->spline_8segB::@1#1] -- register_copy - // [254] phi (byte) spline_8segB::n#2 = (byte) 0 [phi:spline_8segB->spline_8segB::@1#2] -- vbuz1=vbuc1 + // [252] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#0 [phi:spline_8segB->spline_8segB::@1#0] -- register_copy + // [252] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#0 [phi:spline_8segB->spline_8segB::@1#1] -- register_copy + // [252] phi (byte) spline_8segB::n#2 = (byte) 0 [phi:spline_8segB->spline_8segB::@1#2] -- vbuz1=vbuc1 lda #0 sta.z n - // [254] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#0 [phi:spline_8segB->spline_8segB::@1#3] -- register_copy - // [254] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#0 [phi:spline_8segB->spline_8segB::@1#4] -- register_copy + // [252] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#0 [phi:spline_8segB->spline_8segB::@1#3] -- register_copy + // [252] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#0 [phi:spline_8segB->spline_8segB::@1#4] -- register_copy jmp __b1 - // [254] phi from spline_8segB::@1 to spline_8segB::@1 [phi:spline_8segB::@1->spline_8segB::@1] + // [252] phi from spline_8segB::@1 to spline_8segB::@1 [phi:spline_8segB::@1->spline_8segB::@1] __b1_from___b1: - // [254] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#1 [phi:spline_8segB::@1->spline_8segB::@1#0] -- register_copy - // [254] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#1 [phi:spline_8segB::@1->spline_8segB::@1#1] -- register_copy - // [254] phi (byte) spline_8segB::n#2 = (byte) spline_8segB::n#1 [phi:spline_8segB::@1->spline_8segB::@1#2] -- register_copy - // [254] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#1 [phi:spline_8segB::@1->spline_8segB::@1#3] -- register_copy - // [254] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#1 [phi:spline_8segB::@1->spline_8segB::@1#4] -- register_copy + // [252] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#1 [phi:spline_8segB::@1->spline_8segB::@1#0] -- register_copy + // [252] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#1 [phi:spline_8segB::@1->spline_8segB::@1#1] -- register_copy + // [252] phi (byte) spline_8segB::n#2 = (byte) spline_8segB::n#1 [phi:spline_8segB::@1->spline_8segB::@1#2] -- register_copy + // [252] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#1 [phi:spline_8segB::@1->spline_8segB::@1#3] -- register_copy + // [252] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#1 [phi:spline_8segB::@1->spline_8segB::@1#4] -- register_copy jmp __b1 // spline_8segB::@1 __b1: - // [255] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 + // [253] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 lda.z p_x clc adc #<$20 @@ -7132,7 +7110,7 @@ spline_8segB: { lda.z p_x+1 adc #>$20 sta.z __22+1 - // [256] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 -- vwsz1=vwsz2_ror_6 + // [254] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 -- vwsz1=vwsz2_ror_6 lda.z __22 sta.z $ff lda.z __22+1 @@ -7149,7 +7127,7 @@ spline_8segB: { rol.z $ff rol.z __23 rol.z __23+1 - // [257] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 + // [255] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 lda.z p_y clc adc #<$20 @@ -7157,7 +7135,7 @@ spline_8segB: { lda.z p_y+1 adc #>$20 sta.z __24+1 - // [258] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 -- vwsz1=vwsz2_ror_6 + // [256] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 -- vwsz1=vwsz2_ror_6 lda.z __24 sta.z $ff lda.z __24+1 @@ -7174,24 +7152,24 @@ spline_8segB: { rol.z $ff rol.z __25 rol.z __25+1 - // [259] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 + // [257] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 lda.z n asl asl sta.z __31 - // [260] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 -- pwsc1_derefidx_vbuz1=vwsz2 + // [258] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 -- pwsc1_derefidx_vbuz1=vwsz2 ldy.z __31 lda.z __23 sta SPLINE_8SEG,y lda.z __23+1 sta SPLINE_8SEG+1,y - // [261] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 -- pwsc1_derefidx_vbuz1=vwsz2 + // [259] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 -- pwsc1_derefidx_vbuz1=vwsz2 ldy.z __31 lda.z __25 sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,y lda.z __25+1 sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y - // [262] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 -- vwsz1=vwsz1_plus_vwsz2 + // [260] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 -- vwsz1=vwsz1_plus_vwsz2 lda.z p_x clc adc.z i_x @@ -7199,7 +7177,7 @@ spline_8segB: { lda.z p_x+1 adc.z i_x+1 sta.z p_x+1 - // [263] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 -- vwsz1=vwsz1_plus_vwsz2 + // [261] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 -- vwsz1=vwsz1_plus_vwsz2 lda.z p_y clc adc.z i_y @@ -7207,7 +7185,7 @@ spline_8segB: { lda.z p_y+1 adc.z i_y+1 sta.z p_y+1 - // [264] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 -- vwsz1=vwsz1_plus_vwsz2 + // [262] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 -- vwsz1=vwsz1_plus_vwsz2 lda.z i_x clc adc.z j_x @@ -7215,7 +7193,7 @@ spline_8segB: { lda.z i_x+1 adc.z j_x+1 sta.z i_x+1 - // [265] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 -- vwsz1=vwsz1_plus_vwsz2 + // [263] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 -- vwsz1=vwsz1_plus_vwsz2 lda.z i_y clc adc.z j_y @@ -7223,16 +7201,16 @@ spline_8segB: { lda.z i_y+1 adc.z j_y+1 sta.z i_y+1 - // [266] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2 -- vbuz1=_inc_vbuz1 + // [264] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2 -- vbuz1=_inc_vbuz1 inc.z n - // [267] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1 -- vbuz1_neq_vbuc1_then_la1 + // [265] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp.z n bne __b1_from___b1 jmp __b2 // spline_8segB::@2 __b2: - // [268] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 + // [266] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 lda.z p_x clc adc #<$20 @@ -7240,7 +7218,7 @@ spline_8segB: { lda.z p_x+1 adc #>$20 sta.z __18+1 - // [269] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 -- vwsz1=vwsz2_ror_6 + // [267] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 -- vwsz1=vwsz2_ror_6 lda.z __18 sta.z $ff lda.z __18+1 @@ -7257,7 +7235,7 @@ spline_8segB: { rol.z $ff rol.z __19 rol.z __19+1 - // [270] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 + // [268] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 lda.z p_y clc adc #<$20 @@ -7265,7 +7243,7 @@ spline_8segB: { lda.z p_y+1 adc #>$20 sta.z __20+1 - // [271] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 -- vwsz1=vwsz2_ror_6 + // [269] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 -- vwsz1=vwsz2_ror_6 lda.z __20 sta.z $ff lda.z __20+1 @@ -7282,12 +7260,12 @@ spline_8segB: { rol.z $ff rol.z __21 rol.z __21+1 - // [272] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 -- _deref_pwsc1=vwsz1 + // [270] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 -- _deref_pwsc1=vwsz1 lda.z __19 sta SPLINE_8SEG+8*SIZEOF_STRUCT_SPLINEVECTOR16 lda.z __19+1 sta SPLINE_8SEG+8*SIZEOF_STRUCT_SPLINEVECTOR16+1 - // [273] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 -- _deref_pwsc1=vwsz1 + // [271] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 -- _deref_pwsc1=vwsz1 lda.z __21 sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SPLINEVECTOR16 lda.z __21+1 @@ -7295,108 +7273,102 @@ spline_8segB: { jmp __breturn // spline_8segB::@return __breturn: - // [274] return + // [272] return rts } // bitmap_plot_spline_8seg // Plot the spline in the SPLINE_8SEG array bitmap_plot_spline_8seg: { - .label __3 = $113 - .label __4 = $114 + .label __4 = $111 .label current_x = $3e .label current_y = $40 .label n = $3d - // [275] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) -- vwsz1=_deref_pwsc1 + // [273] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) -- vwsz1=_deref_pwsc1 lda SPLINE_8SEG sta.z current_x lda SPLINE_8SEG+1 sta.z current_x+1 - // [276] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) -- vwsz1=_deref_pwsc1 + // [274] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) -- vwsz1=_deref_pwsc1 lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y sta.z current_y lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1 sta.z current_y+1 - // [277] phi from bitmap_plot_spline_8seg to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1] + // [275] phi from bitmap_plot_spline_8seg to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1] __b1_from_bitmap_plot_spline_8seg: - // [277] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word) bitmap_plot_spline_8seg::current_y#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#0] -- register_copy - // [277] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word) bitmap_plot_spline_8seg::current_x#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#1] -- register_copy - // [277] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) 1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#2] -- vbuz1=vbuc1 + // [275] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word) bitmap_plot_spline_8seg::current_y#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#0] -- register_copy + // [275] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word) bitmap_plot_spline_8seg::current_x#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#1] -- register_copy + // [275] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) 1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#2] -- vbuz1=vbuc1 lda #1 sta.z n jmp __b1 - // [277] phi from bitmap_plot_spline_8seg::@2 to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1] + // [275] phi from bitmap_plot_spline_8seg::@2 to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1] __b1_from___b2: - // [277] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word) bitmap_plot_spline_8seg::current_y#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#0] -- register_copy - // [277] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word) bitmap_plot_spline_8seg::current_x#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#1] -- register_copy - // [277] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) bitmap_plot_spline_8seg::n#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#2] -- register_copy + // [275] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word) bitmap_plot_spline_8seg::current_y#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#0] -- register_copy + // [275] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word) bitmap_plot_spline_8seg::current_x#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#1] -- register_copy + // [275] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) bitmap_plot_spline_8seg::n#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#2] -- register_copy jmp __b1 // bitmap_plot_spline_8seg::@1 __b1: - // [278] (byte~) bitmap_plot_spline_8seg::$3 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 - lda.z n - asl - asl - sta.z __3 - // [279] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 -- vwuz1=vwuz2 - lda.z current_x - sta.z bitmap_line.x1 - lda.z current_x+1 - sta.z bitmap_line.x1+1 - // [280] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 -- vwuz1=vwuz2 - lda.z current_y - sta.z bitmap_line.y1 - lda.z current_y+1 - sta.z bitmap_line.y1+1 - // [281] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$3) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy.z __3 - lda SPLINE_8SEG,y - sta.z bitmap_line.x2 - lda SPLINE_8SEG+1,y - sta.z bitmap_line.x2+1 - // [282] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$3) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy.z __3 - lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,y - sta.z bitmap_line.y2 - lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y - sta.z bitmap_line.y2+1 - // [283] call bitmap_line - // [184] phi from bitmap_plot_spline_8seg::@1 to bitmap_line [phi:bitmap_plot_spline_8seg::@1->bitmap_line] - bitmap_line_from___b1: - // [184] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#13 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#0] -- register_copy - // [184] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#13 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#1] -- register_copy - // [184] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#2] -- register_copy - // [184] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#3] -- register_copy - jsr bitmap_line - jmp __b2 - // bitmap_plot_spline_8seg::@2 - __b2: - // [284] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 + // [276] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 lda.z n asl asl sta.z __4 - // [285] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) -- vwsz1=pwsc1_derefidx_vbuz2 + // [277] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 -- vwuz1=vwuz2 + lda.z current_x + sta.z bitmap_line.x1 + lda.z current_x+1 + sta.z bitmap_line.x1+1 + // [278] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 -- vwuz1=vwuz2 + lda.z current_y + sta.z bitmap_line.y1 + lda.z current_y+1 + sta.z bitmap_line.y1+1 + // [279] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy.z __4 + lda SPLINE_8SEG,y + sta.z bitmap_line.x2 + lda SPLINE_8SEG+1,y + sta.z bitmap_line.x2+1 + // [280] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy.z __4 + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,y + sta.z bitmap_line.y2 + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y + sta.z bitmap_line.y2+1 + // [281] call bitmap_line + // [182] phi from bitmap_plot_spline_8seg::@1 to bitmap_line [phi:bitmap_plot_spline_8seg::@1->bitmap_line] + bitmap_line_from___b1: + // [182] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#13 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#0] -- register_copy + // [182] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#13 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#1] -- register_copy + // [182] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#2] -- register_copy + // [182] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#3] -- register_copy + jsr bitmap_line + jmp __b2 + // bitmap_plot_spline_8seg::@2 + __b2: + // [282] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) -- vwsz1=pwsc1_derefidx_vbuz2 ldy.z __4 lda SPLINE_8SEG,y sta.z current_x lda SPLINE_8SEG+1,y sta.z current_x+1 - // [286] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) -- vwsz1=pwsc1_derefidx_vbuz2 + // [283] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) -- vwsz1=pwsc1_derefidx_vbuz2 ldy.z __4 lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,y sta.z current_y lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y sta.z current_y+1 - // [287] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2 -- vbuz1=_inc_vbuz1 + // [284] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2 -- vbuz1=_inc_vbuz1 inc.z n - // [288] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@1 -- vbuz1_neq_vbuc1_then_la1 + // [285] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@1 -- vbuz1_neq_vbuc1_then_la1 lda #9 cmp.z n bne __b1_from___b2 jmp __breturn // bitmap_plot_spline_8seg::@return __breturn: - // [289] return + // [286] return rts } // mulf16s @@ -7404,31 +7376,31 @@ bitmap_plot_spline_8seg: { // Fixes offsets introduced by using unsigned multiplication // mulf16s(signed word zp($42) a, signed word zp($44) b) mulf16s: { - .label __6 = $11d - .label __9 = $121 - .label __11 = $11f - .label __12 = $123 + .label __6 = $11a + .label __9 = $11e + .label __11 = $11c + .label __12 = $120 .label m = $46 - .label return = $125 + .label return = $122 .label a = $42 .label b = $44 - .label return_1 = $9a - .label return_2 = $a6 - .label return_3 = $b4 - .label return_4 = $c2 - // [291] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 -- vwuz1=vwuz2 + .label return_1 = $98 + .label return_2 = $a4 + .label return_3 = $b2 + .label return_4 = $c0 + // [288] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 -- vwuz1=vwuz2 lda.z a sta.z mulf16u.a lda.z a+1 sta.z mulf16u.a+1 - // [292] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 -- vwuz1=vwuz2 + // [289] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 -- vwuz1=vwuz2 lda.z b sta.z mulf16u.b lda.z b+1 sta.z mulf16u.b+1 - // [293] call mulf16u + // [290] call mulf16u jsr mulf16u - // [294] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 -- vduz1=vduz2 + // [291] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 -- vduz1=vduz2 lda.z mulf16u.return sta.z mulf16u.return_1 lda.z mulf16u.return+1 @@ -7440,7 +7412,7 @@ mulf16s: { jmp __b5 // mulf16s::@5 __b5: - // [295] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 -- vduz1=vduz2 + // [292] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 -- vduz1=vduz2 lda.z mulf16u.return_1 sta.z m lda.z mulf16u.return_1+1 @@ -7449,18 +7421,18 @@ mulf16s: { sta.z m+2 lda.z mulf16u.return_1+3 sta.z m+3 - // [296] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 + // [293] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 lda.z a+1 bpl __b1_from___b5 jmp __b3 // mulf16s::@3 __b3: - // [297] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + // [294] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda.z m+2 sta.z __6 lda.z m+3 sta.z __6+1 - // [298] (word~) mulf16s::$11 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#4 -- vwuz1=vwuz2_minus_vwuz3 + // [295] (word~) mulf16s::$11 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#4 -- vwuz1=vwuz2_minus_vwuz3 lda.z __6 sec sbc.z b @@ -7468,30 +7440,30 @@ mulf16s: { lda.z __6+1 sbc.z b+1 sta.z __11+1 - // [299] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$11 -- vduz1=vduz1_sethi_vwuz2 + // [296] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$11 -- vduz1=vduz1_sethi_vwuz2 lda.z __11 sta.z m+2 lda.z __11+1 sta.z m+3 - // [300] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] + // [297] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] __b1_from___b3: __b1_from___b5: - // [300] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy + // [297] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy jmp __b1 // mulf16s::@1 __b1: - // [301] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 + // [298] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 lda.z b+1 bpl __b2_from___b1 jmp __b4 // mulf16s::@4 __b4: - // [302] (word~) mulf16s::$9 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + // [299] (word~) mulf16s::$9 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda.z m+2 sta.z __9 lda.z m+3 sta.z __9+1 - // [303] (word~) mulf16s::$12 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::a#4 -- vwuz1=vwuz2_minus_vwuz3 + // [300] (word~) mulf16s::$12 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::a#4 -- vwuz1=vwuz2_minus_vwuz3 lda.z __9 sec sbc.z a @@ -7499,19 +7471,19 @@ mulf16s: { lda.z __9+1 sbc.z a+1 sta.z __12+1 - // [304] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$12 -- vduz1=vduz1_sethi_vwuz2 + // [301] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$12 -- vduz1=vduz1_sethi_vwuz2 lda.z __12 sta.z m+2 lda.z __12+1 sta.z m+3 - // [305] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + // [302] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] __b2_from___b1: __b2_from___b4: - // [305] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + // [302] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy jmp __b2 // mulf16s::@2 __b2: - // [306] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 -- vdsz1=vdsz2 + // [303] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 -- vdsz1=vdsz2 lda.z m sta.z return lda.z m+1 @@ -7523,38 +7495,38 @@ mulf16s: { jmp __breturn // mulf16s::@return __breturn: - // [307] return + // [304] return rts } // abs_u16 // Get the absolute value of a 16-bit unsigned number treated as a signed number. // abs_u16(word zp($4a) w) abs_u16: { - .label __0 = $129 - .label __1 = $12a + .label __0 = $126 + .label __1 = $127 .label w = $4a - .label return = $d6 - .label return_1 = $da + .label return = $d4 + .label return_1 = $d8 .label return_2 = $4a - // [309] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuz1=_hi_vwuz2 + // [306] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuz1=_hi_vwuz2 lda.z w+1 sta.z __0 - // [310] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 + // [307] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and.z __0 sta.z __1 - // [311] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuz1_then_la1 + // [308] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuz1_then_la1 lda #0 cmp.z __1 bne __b1 - // [313] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] + // [310] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] __breturn_from_abs_u16: __breturn_from___b1: - // [313] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy + // [310] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy jmp __breturn // abs_u16::@1 __b1: - // [312] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 + // [309] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 sec lda #0 sbc.z return_2 @@ -7565,7 +7537,7 @@ abs_u16: { jmp __breturn_from___b1 // abs_u16::@return __breturn: - // [314] return + // [311] return rts } // sgn_u16 @@ -7573,39 +7545,39 @@ abs_u16: { // Returns unsigned -1 if the number is // sgn_u16(word zp($4c) w) sgn_u16: { - .label __0 = $12b - .label __1 = $12c + .label __0 = $128 + .label __1 = $129 .label w = $4c - .label return = $de - .label return_1 = $e2 + .label return = $dc + .label return_1 = $e0 .label return_2 = $4e - // [316] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuz1=_hi_vwuz2 + // [313] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuz1=_hi_vwuz2 lda.z w+1 sta.z __0 - // [317] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 + // [314] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and.z __0 sta.z __1 - // [318] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuz1_then_la1 + // [315] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuz1_then_la1 lda #0 cmp.z __1 bne __b1_from_sgn_u16 - // [320] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] + // [317] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] __breturn_from_sgn_u16: - // [320] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 + // [317] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 lda #<1 sta.z return_2 lda #>1 sta.z return_2+1 jmp __breturn - // [319] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] + // [316] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] __b1_from_sgn_u16: jmp __b1 // sgn_u16::@1 __b1: - // [320] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] + // [317] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] __breturn_from___b1: - // [320] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 + // [317] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 lda #<-1 sta.z return_2 lda #>-1 @@ -7613,33 +7585,33 @@ sgn_u16: { jmp __breturn // sgn_u16::@return __breturn: - // [321] return + // [318] return rts } // bitmap_plot // Plot a single dot in the bitmap // bitmap_plot(word zp($51) x, byte zp($50) y) bitmap_plot: { - .label __0 = $12f - .label __1 = $133 - .label plotter = $12d - .label plotter_1 = $131 + .label __0 = $12c + .label __1 = $130 + .label plotter = $12a + .label plotter_1 = $12e .label x = $51 .label y = $50 - // [323] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 + // [320] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 ldy.z y lda bitmap_plot_yhi,y sta.z plotter+1 lda bitmap_plot_ylo,y sta.z plotter - // [324] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + // [321] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda.z x and #<$fff8 sta.z __0 lda.z x+1 and #>$fff8 sta.z __0+1 - // [325] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz2_plus_vwuz3 + // [322] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz2_plus_vwuz3 lda.z plotter clc adc.z __0 @@ -7647,10 +7619,10 @@ bitmap_plot: { lda.z plotter+1 adc.z __0+1 sta.z plotter_1+1 - // [326] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#4 -- vbuz1=_lo_vwuz2 + // [323] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#4 -- vbuz1=_lo_vwuz2 lda.z x sta.z __1 - // [327] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 + // [324] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 ldy #0 lda (plotter_1),y ldy.z __1 @@ -7660,27 +7632,27 @@ bitmap_plot: { jmp __breturn // bitmap_plot::@return __breturn: - // [328] return + // [325] return rts } // mulf16u // Fast multiply two unsigned ints to a double unsigned int result // Done in assembler to utilize fast addition A+X -// mulf16u(word zp($115) a, word zp($117) b) +// mulf16u(word zp($112) a, word zp($114) b) mulf16u: { .label memA = $f8 .label memB = $fa .label memR = $fc - .label return = $134 - .label a = $115 - .label b = $117 - .label return_1 = $119 - // [329] *((const nomodify word*) mulf16u::memA) ← (word) mulf16u::a#0 -- _deref_pwuc1=vwuz1 + .label return = $131 + .label a = $112 + .label b = $114 + .label return_1 = $116 + // [326] *((const nomodify word*) mulf16u::memA) ← (word) mulf16u::a#0 -- _deref_pwuc1=vwuz1 lda.z a sta memA lda.z a+1 sta memA+1 - // [330] *((const nomodify word*) mulf16u::memB) ← (word) mulf16u::b#0 -- _deref_pwuc1=vwuz1 + // [327] *((const nomodify word*) mulf16u::memB) ← (word) mulf16u::b#0 -- _deref_pwuc1=vwuz1 lda.z b sta memB lda.z b+1 @@ -7778,7 +7750,7 @@ mulf16u: { bcc !+ inc memR+3 !: - // [332] (dword) mulf16u::return#0 ← *((const nomodify dword*) mulf16u::memR) -- vduz1=_deref_pduc1 + // [329] (dword) mulf16u::return#0 ← *((const nomodify dword*) mulf16u::memR) -- vduz1=_deref_pduc1 lda memR sta.z return lda memR+1 @@ -7790,7 +7762,7 @@ mulf16u: { jmp __breturn // mulf16u::@return __breturn: - // [333] return + // [330] return rts } // File Data @@ -7899,208 +7871,207 @@ Statement [48] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 [ mulf_ Statement [50] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( mulf_init:1 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] { } ) always clobbers reg byte a Statement [69] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( bitmap_init:3 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:20 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [81] (byte~) show_letter::$19 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$19 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$19 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [81] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:83 [ show_letter::angle#0 ] Removing always clobbered register reg byte a as potential for zp[1]:23 [ show_letter::i#10 show_letter::i#1 ] -Statement [82] (byte~) show_letter::$16 ← (byte~) show_letter::$19 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$16 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$16 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [83] (signed word) show_letter::to_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) show_letter::$16) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$16 show_letter::to_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$16 show_letter::to_x#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [82] (byte~) show_letter::$16 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::$16 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::$16 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:91 [ show_letter::$21 ] +Statement [83] (signed word) show_letter::to_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) show_letter::$16) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::$16 show_letter::to_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::$16 show_letter::to_x#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:92 [ show_letter::$16 ] -Statement [84] (signed word) show_letter::to_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$16) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#0 show_letter::to_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#0 show_letter::to_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [85] (signed word) show_letter::to_x#1 ← (signed word) show_letter::to_x#0 - (signed byte) $32 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#0 show_letter::to_x#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#0 show_letter::to_x#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [86] (signed word) show_letter::to_y#1 ← (signed word) show_letter::to_y#0 - (signed word) $96 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#1 show_letter::to_y#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#1 show_letter::to_y#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [87] (signed word) rotate::vector_x#0 ← (signed word) show_letter::to_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#1 rotate::vector_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#1 rotate::vector_x#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [88] (signed word) rotate::vector_y#0 ← (signed word) show_letter::to_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#0 rotate::vector_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#0 rotate::vector_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [91] (signed word) rotate::return_x#0 ← (signed word) rotate::return_x#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [92] (signed word) rotate::return_y#0 ← (signed word) rotate::return_y#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [93] (signed word) show_letter::to_x#2 ← (signed word) rotate::return_x#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#0 show_letter::to_x#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#0 show_letter::to_x#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [94] (signed word) show_letter::to_y#2 ← (signed word) rotate::return_y#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#2 show_letter::to_y#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#2 show_letter::to_y#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [95] (signed word) show_letter::current_x#10 ← (signed word) show_letter::to_x#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#2 show_letter::current_x#10 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#2 show_letter::current_x#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [96] (signed word) show_letter::current_y#10 ← (signed word) show_letter::to_y#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [97] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [98] (byte~) show_letter::$17 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$17 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$17 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [99] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$17) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$17 show_letter::via_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$17 show_letter::via_x#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:114 [ show_letter::$17 ] -Statement [100] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#0 show_letter::via_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#0 show_letter::via_y#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [101] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#0 show_letter::via_x#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#0 show_letter::via_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [102] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#1 show_letter::via_y#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#1 show_letter::via_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [103] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#1 rotate::vector_x#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#1 rotate::vector_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [104] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#1 rotate::vector_y#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#1 rotate::vector_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [107] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#2 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#2 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [108] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 rotate::return_y#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 rotate::return_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [109] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_y#1 show_letter::via_x#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_y#1 show_letter::via_x#2 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [110] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#2 show_letter::via_y#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#2 show_letter::via_y#2 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [111] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#2 show_letter::segment_via_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#2 show_letter::segment_via_x#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [112] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [113] (byte~) show_letter::$23 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$23 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$23 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [114] (byte~) show_letter::$18 ← (byte~) show_letter::$23 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$18 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$18 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [118] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a -Statement [119] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a -Statement [120] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a -Statement [121] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a -Statement [126] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#10 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [127] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#11 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#11 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [128] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [129] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [130] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [131] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [132] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [133] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [138] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( bitmap_clear:5::memset:75 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:5::memset:77 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Statement [84] (signed word) show_letter::to_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$16) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_x#0 show_letter::to_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_x#0 show_letter::to_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [85] (signed word) show_letter::to_x#1 ← (signed word) show_letter::to_x#0 - (signed byte) $32 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_y#0 show_letter::to_x#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_y#0 show_letter::to_x#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [86] (signed word) show_letter::to_y#1 ← (signed word) show_letter::to_y#0 - (signed word) $96 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_x#1 show_letter::to_y#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_x#1 show_letter::to_y#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [87] (signed word) rotate::vector_x#0 ← (signed word) show_letter::to_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_y#1 rotate::vector_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_y#1 rotate::vector_x#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [88] (signed word) rotate::vector_y#0 ← (signed word) show_letter::to_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#0 rotate::vector_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#0 rotate::vector_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [91] (signed word) rotate::return_x#0 ← (signed word) rotate::return_x#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_x#0 rotate::return_y#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_x#0 rotate::return_y#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [92] (signed word) rotate::return_y#0 ← (signed word) rotate::return_y#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_x#0 rotate::return_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_x#0 rotate::return_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [93] (signed word) show_letter::to_x#2 ← (signed word) rotate::return_x#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_y#0 show_letter::to_x#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_y#0 show_letter::to_x#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [94] (signed word) show_letter::to_y#2 ← (signed word) rotate::return_y#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_x#2 show_letter::to_y#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_x#2 show_letter::to_y#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [95] (signed word) show_letter::current_x#10 ← (signed word) show_letter::to_x#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_y#2 show_letter::current_x#10 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_y#2 show_letter::current_x#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [96] (signed word) show_letter::current_y#10 ← (signed word) show_letter::to_y#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [97] (byte~) show_letter::$17 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::$17 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::$17 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [98] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$17) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::$17 show_letter::via_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::$17 show_letter::via_x#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:113 [ show_letter::$17 ] +Statement [99] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#0 show_letter::via_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#0 show_letter::via_y#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [100] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#0 show_letter::via_x#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#0 show_letter::via_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [101] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#1 show_letter::via_y#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#1 show_letter::via_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [102] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#1 rotate::vector_x#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#1 rotate::vector_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [103] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#1 rotate::vector_y#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#1 rotate::vector_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [106] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_y#2 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_y#2 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [107] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 rotate::return_y#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 rotate::return_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [108] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::return_y#1 show_letter::via_x#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::return_y#1 show_letter::via_x#2 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [109] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#2 show_letter::via_y#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#2 show_letter::via_y#2 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [110] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#2 show_letter::segment_via_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#2 show_letter::segment_via_x#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [111] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [112] (byte~) show_letter::$18 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$18 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$18 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [116] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a +Statement [117] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a +Statement [118] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a +Statement [119] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a +Statement [124] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#10 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [125] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#11 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#11 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [126] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [127] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [128] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [129] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [130] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [131] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [136] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( bitmap_clear:5::memset:75 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:5::memset:77 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:32 [ memset::c#4 ] -Statement [139] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( bitmap_clear:5::memset:75 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:5::memset:77 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a -Statement [140] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( bitmap_clear:5::memset:75 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:5::memset:77 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a -Statement [142] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:5::memset:75 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:5::memset:77 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a -Statement [144] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:5::memset:75 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:5::memset:77 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [137] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( bitmap_clear:5::memset:75 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:5::memset:77 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [138] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( bitmap_clear:5::memset:75 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:5::memset:77 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [140] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:5::memset:75 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:5::memset:77 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [142] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:5::memset:75 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:5::memset:77 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:32 [ memset::c#4 ] Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::angle#2 main::angle#1 ] -Statement [147] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [145] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:35 [ rotate::angle#2 rotate::angle#0 rotate::angle#1 ] -Statement [148] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a -Statement [149] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a -Statement [151] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a -Statement [152] (signed dword~) rotate::$0 ← (signed dword) mulf16s::return#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a -Statement [153] (signed word~) rotate::$10 ← (signed word)(signed dword~) rotate::$0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$10 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$10 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a -Statement [154] (signed word) rotate::xr#0 ← (signed word~) rotate::$10 << (byte) 1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a -Statement [155] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a -Statement [156] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a -Statement [158] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a -Statement [159] (signed dword~) rotate::$2 ← (signed dword) mulf16s::return#3 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a -Statement [160] (signed word~) rotate::$11 ← (signed word)(signed dword~) rotate::$2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$11 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a -Statement [161] (signed word) rotate::yr#0 ← (signed word~) rotate::$11 << (byte) 1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a -Statement [162] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) [ rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a -Statement [163] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 [ rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a -Statement [164] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a -Statement [166] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a -Statement [167] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#4 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$4 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [168] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$4 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$12 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [169] (signed word~) rotate::$5 ← (signed word~) rotate::$12 << (byte) 1 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$5 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [170] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$5 [ rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [171] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 [ rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [172] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 [ rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [174] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 [ rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [175] (signed dword~) rotate::$6 ← (signed dword) mulf16s::return#10 [ rotate::yr#0 rotate::xr#1 rotate::$6 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [176] (signed word~) rotate::$13 ← (signed word)(signed dword~) rotate::$6 [ rotate::yr#0 rotate::xr#1 rotate::$13 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$13 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$13 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [177] (signed word~) rotate::$7 ← (signed word~) rotate::$13 << (byte) 1 [ rotate::yr#0 rotate::xr#1 rotate::$7 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$7 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$7 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [178] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$7 [ rotate::xr#1 rotate::yr#1 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::xr#1 rotate::yr#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::xr#1 rotate::yr#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [181] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$8 [ rotate::return_x#2 rotate::$9 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#2 rotate::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:209 [ rotate::$9 ] -Statement [182] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$9 [ rotate::return_x#2 rotate::return_y#2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#2 rotate::return_y#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::return_y#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [185] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [146] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [147] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [149] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [150] (signed dword~) rotate::$0 ← (signed dword) mulf16s::return#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [151] (signed word~) rotate::$10 ← (signed word)(signed dword~) rotate::$0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$10 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$10 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [152] (signed word) rotate::xr#0 ← (signed word~) rotate::$10 << (byte) 1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [153] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [154] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [156] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [157] (signed dword~) rotate::$2 ← (signed dword) mulf16s::return#3 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [158] (signed word~) rotate::$11 ← (signed word)(signed dword~) rotate::$2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$11 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [159] (signed word) rotate::yr#0 ← (signed word~) rotate::$11 << (byte) 1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [160] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) [ rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [161] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 [ rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [162] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [164] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [165] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#4 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$4 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [166] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$4 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$12 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [167] (signed word~) rotate::$5 ← (signed word~) rotate::$12 << (byte) 1 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$5 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [168] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$5 [ rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [169] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 [ rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [170] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 [ rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [172] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 [ rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [173] (signed dword~) rotate::$6 ← (signed dword) mulf16s::return#10 [ rotate::yr#0 rotate::xr#1 rotate::$6 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 rotate::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [174] (signed word~) rotate::$13 ← (signed word)(signed dword~) rotate::$6 [ rotate::yr#0 rotate::xr#1 rotate::$13 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 rotate::$13 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$13 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [175] (signed word~) rotate::$7 ← (signed word~) rotate::$13 << (byte) 1 [ rotate::yr#0 rotate::xr#1 rotate::$7 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 rotate::$7 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$7 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [176] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$7 [ rotate::xr#1 rotate::yr#1 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::xr#1 rotate::yr#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::xr#1 rotate::yr#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [179] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$8 [ rotate::return_x#2 rotate::$9 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_x#2 rotate::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:207 [ rotate::$9 ] +Statement [180] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$9 [ rotate::return_x#2 rotate::return_y#2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_x#2 rotate::return_y#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::return_y#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [183] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:61 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] -Statement [187] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a -Statement [188] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a -Statement [189] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a -Statement [191] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a -Statement [192] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [193] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [194] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [195] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a -Statement [197] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a -Statement [198] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a -Statement [199] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a -Statement [201] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a -Statement [202] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [203] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [204] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [206] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a -Statement [207] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a -Statement [209] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [210] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [211] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [212] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [213] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [215] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [217] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_line::y#7 bitmap_plot::x#2 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y#7 bitmap_plot::x#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y#7 bitmap_plot::x#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a -Statement [218] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_plot::x#2 bitmap_plot::y#2 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#2 bitmap_plot::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#2 bitmap_plot::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a -Statement [221] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [223] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a -Statement [224] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a -Statement [226] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [227] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [228] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [229] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [230] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [232] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [233] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 [ bitmap_line::y#0 bitmap_plot::x#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y#0 bitmap_plot::x#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y#0 bitmap_plot::x#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a -Statement [234] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 [ bitmap_plot::x#0 bitmap_plot::y#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#0 bitmap_plot::y#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#0 bitmap_plot::y#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a -Statement [236] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [237] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [238] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [239] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [240] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [241] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [242] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [243] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [244] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [245] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [246] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [247] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [248] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [249] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [250] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [251] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [252] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 [ spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [253] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 [ spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [255] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:273 [ bitmap_plot_spline_8seg::$4 ] +Statement [185] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [186] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [187] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [189] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [190] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [191] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [192] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [193] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [195] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [196] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [197] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [199] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [200] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [201] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [202] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [204] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a +Statement [205] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a +Statement [207] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [208] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [209] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [210] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [211] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [213] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [215] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_line::y#7 bitmap_plot::x#2 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y#7 bitmap_plot::x#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y#7 bitmap_plot::x#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [216] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_plot::x#2 bitmap_plot::y#2 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#2 bitmap_plot::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_plot::x#2 bitmap_plot::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [219] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [221] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [222] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [224] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [225] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [226] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [227] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [228] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [230] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [231] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 [ bitmap_line::y#0 bitmap_plot::x#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y#0 bitmap_plot::x#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y#0 bitmap_plot::x#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [232] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 [ bitmap_plot::x#0 bitmap_plot::y#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#0 bitmap_plot::y#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_plot::x#0 bitmap_plot::y#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [234] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [235] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [236] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [237] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [238] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [239] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [240] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [241] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [242] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [243] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [244] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [245] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [246] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [247] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [248] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [249] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [250] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 [ spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [251] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 [ spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [253] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:56 [ spline_8segB::n#2 spline_8segB::n#1 ] -Statement [256] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [257] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [258] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [259] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [260] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:266 [ spline_8segB::$31 ] -Statement [261] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [262] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [263] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [264] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [265] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [268] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 [ spline_8segB::p_y#1 spline_8segB::$18 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p_y#1 spline_8segB::$18 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [269] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 [ spline_8segB::p_y#1 spline_8segB::$19 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p_y#1 spline_8segB::$19 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [270] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 [ spline_8segB::$19 spline_8segB::$20 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$19 spline_8segB::$20 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [271] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 [ spline_8segB::$19 spline_8segB::$21 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$19 spline_8segB::$21 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [272] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 [ spline_8segB::$21 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$21 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [273] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 [ ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [275] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) [ bitmap_plot_spline_8seg::current_x#0 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_x#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [276] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) [ bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [278] (byte~) bitmap_plot_spline_8seg::$3 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$3 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [279] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 [ bitmap_line::x1#1 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$3 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#1 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:275 [ bitmap_plot_spline_8seg::$3 ] -Statement [280] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 [ bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$3 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [281] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$3) [ bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$3 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [282] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$3) [ bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_line::y2#13 bitmap_plot_spline_8seg::n#2 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_line::y2#13 bitmap_plot_spline_8seg::n#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [284] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [285] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::$4 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:276 [ bitmap_plot_spline_8seg::$4 ] -Statement [286] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::current_y#1 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::current_y#1 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [291] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 [ mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a -Statement [292] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 [ mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a -Statement [294] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a -Statement [295] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [296] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [297] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [298] (word~) mulf16s::$11 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#4 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [299] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$11 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [301] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#4 mulf16s::m#5 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [302] (word~) mulf16s::$9 ← > (dword) mulf16s::m#5 [ mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [303] (word~) mulf16s::$12 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::a#4 [ mulf16s::m#5 mulf16s::$12 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [304] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$12 [ mulf16s::m#2 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [306] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [312] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( show_letter:16::bitmap_line:122::abs_u16:186 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::abs_u16:186 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } show_letter:16::bitmap_line:122::abs_u16:190 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::abs_u16:190 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a -Statement [323] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( show_letter:16::bitmap_line:122::bitmap_plot:208 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:208 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_line:122::bitmap_plot:219 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:219 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_line:122::bitmap_plot:225 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:225 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_line:122::bitmap_plot:235 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:235 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a -Statement [324] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( show_letter:16::bitmap_line:122::bitmap_plot:208 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:208 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_line:122::bitmap_plot:219 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:219 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_line:122::bitmap_plot:225 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:225 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_line:122::bitmap_plot:235 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:235 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a -Statement [325] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( show_letter:16::bitmap_line:122::bitmap_plot:208 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:208 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_line:122::bitmap_plot:219 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:219 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_line:122::bitmap_plot:225 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:225 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_line:122::bitmap_plot:235 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:235 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a -Statement [327] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) [ ] ( show_letter:16::bitmap_line:122::bitmap_plot:208 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:208 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_line:122::bitmap_plot:219 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:219 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_line:122::bitmap_plot:225 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:225 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_line:122::bitmap_plot:235 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:235 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a reg byte y +Statement [254] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [255] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [256] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [257] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [258] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:264 [ spline_8segB::$31 ] +Statement [259] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [260] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [261] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [262] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [263] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [266] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 [ spline_8segB::p_y#1 spline_8segB::$18 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p_y#1 spline_8segB::$18 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [267] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 [ spline_8segB::p_y#1 spline_8segB::$19 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p_y#1 spline_8segB::$19 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [268] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 [ spline_8segB::$19 spline_8segB::$20 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$19 spline_8segB::$20 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [269] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 [ spline_8segB::$19 spline_8segB::$21 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$19 spline_8segB::$21 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [270] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 [ spline_8segB::$21 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$21 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [271] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 [ ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [273] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) [ bitmap_plot_spline_8seg::current_x#0 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_x#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [274] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) [ bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [276] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$4 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [277] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 [ bitmap_line::x1#1 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$4 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#1 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [278] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 [ bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [279] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) [ bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [280] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) [ bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_line::y2#13 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_line::y2#13 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [282] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::$4 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [283] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::current_y#1 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::current_y#1 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [288] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 [ mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [289] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 [ mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [291] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [292] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [293] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [294] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [295] (word~) mulf16s::$11 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#4 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [296] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$11 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [298] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#4 mulf16s::m#5 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [299] (word~) mulf16s::$9 ← > (dword) mulf16s::m#5 [ mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [300] (word~) mulf16s::$12 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::a#4 [ mulf16s::m#5 mulf16s::$12 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [301] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$12 [ mulf16s::m#2 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [303] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [309] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( show_letter:16::bitmap_line:120::abs_u16:184 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::abs_u16:184 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } show_letter:16::bitmap_line:120::abs_u16:188 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::abs_u16:188 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [320] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( show_letter:16::bitmap_line:120::bitmap_plot:206 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:206 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_line:120::bitmap_plot:217 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:217 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_line:120::bitmap_plot:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_line:120::bitmap_plot:233 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:233 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [321] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( show_letter:16::bitmap_line:120::bitmap_plot:206 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:206 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_line:120::bitmap_plot:217 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:217 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_line:120::bitmap_plot:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_line:120::bitmap_plot:233 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:233 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [322] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( show_letter:16::bitmap_line:120::bitmap_plot:206 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:206 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_line:120::bitmap_plot:217 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:217 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_line:120::bitmap_plot:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_line:120::bitmap_plot:233 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:233 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [324] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) [ ] ( show_letter:16::bitmap_line:120::bitmap_plot:206 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:206 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_line:120::bitmap_plot:217 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:217 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_line:120::bitmap_plot:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_line:120::bitmap_plot:233 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:233 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:83 [ show_letter::angle#0 ] Removing always clobbered register reg byte y as potential for zp[1]:23 [ show_letter::i#10 show_letter::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:61 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] -Statement [329] *((const nomodify word*) mulf16u::memA) ← (word) mulf16u::a#0 [ mulf16u::b#0 ] ( show_letter:16::rotate:90::mulf16s:150::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:150::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:157::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:157::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:165::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:165::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:173::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:173::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a -Statement [330] *((const nomodify word*) mulf16u::memB) ← (word) mulf16u::b#0 [ ] ( show_letter:16::rotate:90::mulf16s:150::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:150::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:157::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:157::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:165::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:165::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:173::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:173::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Removing always clobbered register reg byte y as potential for zp[1]:273 [ bitmap_plot_spline_8seg::$4 ] +Statement [326] *((const nomodify word*) mulf16u::memA) ← (word) mulf16u::a#0 [ mulf16u::b#0 ] ( show_letter:16::rotate:90::mulf16s:148::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:148::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:155::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:155::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:163::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:163::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:171::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:171::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [327] *((const nomodify word*) mulf16u::memB) ← (word) mulf16u::b#0 [ ] ( show_letter:16::rotate:90::mulf16s:148::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:148::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:155::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:155::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:163::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:163::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:171::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:171::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a Statement asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::angle#2 main::angle#1 ] Removing always clobbered register reg byte x as potential for zp[1]:83 [ show_letter::angle#0 ] Removing always clobbered register reg byte x as potential for zp[1]:23 [ show_letter::i#10 show_letter::i#1 ] +Removing always clobbered register reg byte x as potential for zp[1]:91 [ show_letter::$21 ] Removing always clobbered register reg byte x as potential for zp[1]:35 [ rotate::angle#2 rotate::angle#0 rotate::angle#1 ] -Statement [332] (dword) mulf16u::return#0 ← *((const nomodify dword*) mulf16u::memR) [ mulf16u::return#0 ] ( show_letter:16::rotate:90::mulf16s:150::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:150::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:157::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:157::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:165::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:165::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:173::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:173::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [329] (dword) mulf16u::return#0 ← *((const nomodify dword*) mulf16u::memR) [ mulf16u::return#0 ] ( show_letter:16::rotate:90::mulf16s:148::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:148::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:155::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:155::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:163::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:163::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:171::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:171::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a Statement [6] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) ← (byte) 3 [ ] ( [ ] { } ) always clobbers reg byte a Statement [8] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( [ ] { } ) always clobbers reg byte a Statement [10] *((const nomodify byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( [ ] { } ) always clobbers reg byte a @@ -8122,188 +8093,185 @@ Statement [48] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 [ mulf_ Statement [50] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( mulf_init:1 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] { } ) always clobbers reg byte a Statement [62] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( bitmap_init:3 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] { } ) always clobbers reg byte a Statement [69] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( bitmap_init:3 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a -Statement [81] (byte~) show_letter::$19 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$19 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$19 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [82] (byte~) show_letter::$16 ← (byte~) show_letter::$19 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$16 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$16 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [83] (signed word) show_letter::to_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) show_letter::$16) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$16 show_letter::to_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$16 show_letter::to_x#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [84] (signed word) show_letter::to_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$16) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#0 show_letter::to_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#0 show_letter::to_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [85] (signed word) show_letter::to_x#1 ← (signed word) show_letter::to_x#0 - (signed byte) $32 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#0 show_letter::to_x#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#0 show_letter::to_x#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [86] (signed word) show_letter::to_y#1 ← (signed word) show_letter::to_y#0 - (signed word) $96 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#1 show_letter::to_y#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#1 show_letter::to_y#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [87] (signed word) rotate::vector_x#0 ← (signed word) show_letter::to_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#1 rotate::vector_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#1 rotate::vector_x#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [88] (signed word) rotate::vector_y#0 ← (signed word) show_letter::to_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#0 rotate::vector_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#0 rotate::vector_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [91] (signed word) rotate::return_x#0 ← (signed word) rotate::return_x#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [92] (signed word) rotate::return_y#0 ← (signed word) rotate::return_y#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#0 rotate::return_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [93] (signed word) show_letter::to_x#2 ← (signed word) rotate::return_x#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#0 show_letter::to_x#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#0 show_letter::to_x#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [94] (signed word) show_letter::to_y#2 ← (signed word) rotate::return_y#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#2 show_letter::to_y#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_x#2 show_letter::to_y#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [95] (signed word) show_letter::current_x#10 ← (signed word) show_letter::to_x#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#2 show_letter::current_x#10 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::to_y#2 show_letter::current_x#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [96] (signed word) show_letter::current_y#10 ← (signed word) show_letter::to_y#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [97] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$21 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [98] (byte~) show_letter::$17 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$17 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$17 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [99] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$17) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$17 show_letter::via_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::$17 show_letter::via_x#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [100] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#0 show_letter::via_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#0 show_letter::via_y#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [101] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#0 show_letter::via_x#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#0 show_letter::via_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [102] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#1 show_letter::via_y#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#1 show_letter::via_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [103] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#1 rotate::vector_x#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#1 rotate::vector_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [104] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#1 rotate::vector_y#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#1 rotate::vector_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [107] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#2 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_y#2 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [108] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 rotate::return_y#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 rotate::return_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [109] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_y#1 show_letter::via_x#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_y#1 show_letter::via_x#2 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [110] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#2 show_letter::via_y#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#2 show_letter::via_y#2 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [111] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#2 show_letter::segment_via_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#2 show_letter::segment_via_x#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [112] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [113] (byte~) show_letter::$23 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$23 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$23 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [114] (byte~) show_letter::$18 ← (byte~) show_letter::$23 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$18 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$18 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [118] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a -Statement [119] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a -Statement [120] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a -Statement [121] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a -Statement [124] if((byte) show_letter::i#1!=(byte) $16) goto show_letter::@9 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#10 show_letter::current_y#10 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [126] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#10 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [127] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#11 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#11 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [128] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [129] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [130] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [131] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [132] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [133] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [138] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( bitmap_clear:5::memset:75 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:5::memset:77 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a -Statement [139] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( bitmap_clear:5::memset:75 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:5::memset:77 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a -Statement [140] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( bitmap_clear:5::memset:75 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:5::memset:77 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a -Statement [142] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:5::memset:75 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:5::memset:77 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a -Statement [144] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:5::memset:75 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:5::memset:77 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y -Statement [147] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a -Statement [148] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a -Statement [149] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a -Statement [151] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a -Statement [152] (signed dword~) rotate::$0 ← (signed dword) mulf16s::return#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a -Statement [153] (signed word~) rotate::$10 ← (signed word)(signed dword~) rotate::$0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$10 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$10 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a -Statement [154] (signed word) rotate::xr#0 ← (signed word~) rotate::$10 << (byte) 1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a -Statement [155] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a -Statement [156] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a -Statement [158] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a -Statement [159] (signed dword~) rotate::$2 ← (signed dword) mulf16s::return#3 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a -Statement [160] (signed word~) rotate::$11 ← (signed word)(signed dword~) rotate::$2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$11 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a -Statement [161] (signed word) rotate::yr#0 ← (signed word~) rotate::$11 << (byte) 1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a -Statement [162] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) [ rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a -Statement [163] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 [ rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a -Statement [164] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a -Statement [166] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a -Statement [167] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#4 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$4 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [168] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$4 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$12 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [169] (signed word~) rotate::$5 ← (signed word~) rotate::$12 << (byte) 1 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$5 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [170] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$5 [ rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [171] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 [ rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [172] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 [ rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [174] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 [ rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [175] (signed dword~) rotate::$6 ← (signed dword) mulf16s::return#10 [ rotate::yr#0 rotate::xr#1 rotate::$6 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [176] (signed word~) rotate::$13 ← (signed word)(signed dword~) rotate::$6 [ rotate::yr#0 rotate::xr#1 rotate::$13 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$13 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$13 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [177] (signed word~) rotate::$7 ← (signed word~) rotate::$13 << (byte) 1 [ rotate::yr#0 rotate::xr#1 rotate::$7 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 rotate::$7 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$7 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [178] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$7 [ rotate::xr#1 rotate::yr#1 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::xr#1 rotate::yr#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::xr#1 rotate::yr#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [181] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$8 [ rotate::return_x#2 rotate::$9 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#2 rotate::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [182] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$9 [ rotate::return_x#2 rotate::return_y#2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::return_x#2 rotate::return_y#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:106 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::return_y#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a -Statement [185] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a -Statement [187] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a -Statement [188] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a -Statement [189] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a -Statement [191] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a -Statement [192] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [193] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [194] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [195] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a -Statement [197] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a -Statement [198] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a -Statement [199] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a -Statement [201] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a -Statement [202] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [203] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [204] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [206] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a -Statement [207] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a -Statement [209] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [210] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [211] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [212] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [213] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [215] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [217] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_line::y#7 bitmap_plot::x#2 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y#7 bitmap_plot::x#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y#7 bitmap_plot::x#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a -Statement [218] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_plot::x#2 bitmap_plot::y#2 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#2 bitmap_plot::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#2 bitmap_plot::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a -Statement [221] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [223] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a -Statement [224] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a -Statement [226] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [227] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [228] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [229] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [230] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [232] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [233] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 [ bitmap_line::y#0 bitmap_plot::x#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y#0 bitmap_plot::x#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y#0 bitmap_plot::x#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a -Statement [234] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 [ bitmap_plot::x#0 bitmap_plot::y#0 ] ( show_letter:16::bitmap_line:122 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#0 bitmap_plot::y#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#0 bitmap_plot::y#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a -Statement [236] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [237] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [238] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [239] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [240] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [241] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [242] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [243] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [244] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [245] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [246] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [247] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [248] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [249] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [250] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [251] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [252] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 [ spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [253] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 [ spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [255] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [256] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [257] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [258] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [259] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [260] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [261] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [262] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [263] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [264] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [265] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [268] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 [ spline_8segB::p_y#1 spline_8segB::$18 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p_y#1 spline_8segB::$18 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [269] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 [ spline_8segB::p_y#1 spline_8segB::$19 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p_y#1 spline_8segB::$19 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [270] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 [ spline_8segB::$19 spline_8segB::$20 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$19 spline_8segB::$20 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [271] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 [ spline_8segB::$19 spline_8segB::$21 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$19 spline_8segB::$21 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [272] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 [ spline_8segB::$21 ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$21 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [273] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 [ ] ( show_letter:16::spline_8segB:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a -Statement [275] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) [ bitmap_plot_spline_8seg::current_x#0 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_x#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [276] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) [ bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [278] (byte~) bitmap_plot_spline_8seg::$3 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$3 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [279] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 [ bitmap_line::x1#1 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$3 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#1 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [280] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 [ bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$3 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [281] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$3) [ bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$3 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [282] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$3) [ bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_line::y2#13 bitmap_plot_spline_8seg::n#2 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_line::y2#13 bitmap_plot_spline_8seg::n#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a -Statement [284] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [285] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::$4 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [286] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::current_y#1 ] ( show_letter:16::bitmap_plot_spline_8seg:136 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::current_y#1 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a -Statement [291] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 [ mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a -Statement [292] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 [ mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a -Statement [294] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a -Statement [295] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [296] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [297] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [298] (word~) mulf16s::$11 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#4 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [299] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$11 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [301] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#4 mulf16s::m#5 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [302] (word~) mulf16s::$9 ← > (dword) mulf16s::m#5 [ mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [303] (word~) mulf16s::$12 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::a#4 [ mulf16s::m#5 mulf16s::$12 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [304] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$12 [ mulf16s::m#2 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [306] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( show_letter:16::rotate:90::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:106::mulf16s:150 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:106::mulf16s:157 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:106::mulf16s:165 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:106::mulf16s:173 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a -Statement [312] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( show_letter:16::bitmap_line:122::abs_u16:186 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::abs_u16:186 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } show_letter:16::bitmap_line:122::abs_u16:190 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::abs_u16:190 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a -Statement [323] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( show_letter:16::bitmap_line:122::bitmap_plot:208 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:208 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_line:122::bitmap_plot:219 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:219 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_line:122::bitmap_plot:225 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:225 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_line:122::bitmap_plot:235 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:235 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a -Statement [324] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( show_letter:16::bitmap_line:122::bitmap_plot:208 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:208 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_line:122::bitmap_plot:219 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:219 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_line:122::bitmap_plot:225 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:225 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_line:122::bitmap_plot:235 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:235 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a -Statement [325] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( show_letter:16::bitmap_line:122::bitmap_plot:208 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:208 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_line:122::bitmap_plot:219 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:219 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_line:122::bitmap_plot:225 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:225 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_line:122::bitmap_plot:235 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:235 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a -Statement [327] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) [ ] ( show_letter:16::bitmap_line:122::bitmap_plot:208 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:208 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_line:122::bitmap_plot:219 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:219 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_line:122::bitmap_plot:225 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:225 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_line:122::bitmap_plot:235 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:136::bitmap_line:283::bitmap_plot:235 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a reg byte y -Statement [329] *((const nomodify word*) mulf16u::memA) ← (word) mulf16u::a#0 [ mulf16u::b#0 ] ( show_letter:16::rotate:90::mulf16s:150::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:150::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:157::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:157::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:165::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:165::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:173::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:173::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a -Statement [330] *((const nomodify word*) mulf16u::memB) ← (word) mulf16u::b#0 [ ] ( show_letter:16::rotate:90::mulf16s:150::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:150::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:157::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:157::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:165::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:165::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:173::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:173::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [81] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [82] (byte~) show_letter::$16 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::$16 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::$16 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [83] (signed word) show_letter::to_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) show_letter::$16) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::$16 show_letter::to_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::$16 show_letter::to_x#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [84] (signed word) show_letter::to_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$16) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_x#0 show_letter::to_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_x#0 show_letter::to_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [85] (signed word) show_letter::to_x#1 ← (signed word) show_letter::to_x#0 - (signed byte) $32 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_y#0 show_letter::to_x#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_y#0 show_letter::to_x#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [86] (signed word) show_letter::to_y#1 ← (signed word) show_letter::to_y#0 - (signed word) $96 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_x#1 show_letter::to_y#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_x#1 show_letter::to_y#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [87] (signed word) rotate::vector_x#0 ← (signed word) show_letter::to_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_y#1 rotate::vector_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_y#1 rotate::vector_x#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [88] (signed word) rotate::vector_y#0 ← (signed word) show_letter::to_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#0 rotate::vector_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#0 rotate::vector_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [91] (signed word) rotate::return_x#0 ← (signed word) rotate::return_x#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_x#0 rotate::return_y#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_x#0 rotate::return_y#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [92] (signed word) rotate::return_y#0 ← (signed word) rotate::return_y#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_x#0 rotate::return_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_x#0 rotate::return_y#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [93] (signed word) show_letter::to_x#2 ← (signed word) rotate::return_x#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_y#0 show_letter::to_x#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_y#0 show_letter::to_x#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [94] (signed word) show_letter::to_y#2 ← (signed word) rotate::return_y#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_x#2 show_letter::to_y#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_x#2 show_letter::to_y#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [95] (signed word) show_letter::current_x#10 ← (signed word) show_letter::to_x#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_y#2 show_letter::current_x#10 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::to_y#2 show_letter::current_x#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [96] (signed word) show_letter::current_y#10 ← (signed word) show_letter::to_y#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [97] (byte~) show_letter::$17 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::$17 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::$17 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [98] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$17) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::$17 show_letter::via_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::$17 show_letter::via_x#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [99] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17) [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#0 show_letter::via_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#0 show_letter::via_y#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [100] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#0 show_letter::via_x#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#0 show_letter::via_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [101] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#1 show_letter::via_y#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#1 show_letter::via_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [102] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#1 rotate::vector_x#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#1 rotate::vector_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [103] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#1 rotate::vector_y#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#1 rotate::vector_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [106] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_y#2 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_y#2 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [107] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 rotate::return_y#1 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#1 rotate::return_y#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [108] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::return_y#1 show_letter::via_x#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::return_y#1 show_letter::via_x#2 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [109] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#2 show_letter::via_y#2 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_x#2 show_letter::via_y#2 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [110] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#2 show_letter::segment_via_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::via_y#2 show_letter::segment_via_x#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [111] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [112] (byte~) show_letter::$18 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$18 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 show_letter::$18 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [116] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a +Statement [117] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a +Statement [118] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a +Statement [119] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } ) always clobbers reg byte a +Statement [122] if((byte) show_letter::i#1!=(byte) $16) goto show_letter::@9 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#10 show_letter::current_y#10 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [124] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#10 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [125] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#11 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#1 show_letter::current_x#11 show_letter::current_y#11 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [126] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [127] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_x#0 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [128] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 show_letter::segment_via_y#0 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [129] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [130] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [131] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 [ show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] ( show_letter:16 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [136] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( bitmap_clear:5::memset:75 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:5::memset:77 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Statement [137] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( bitmap_clear:5::memset:75 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:5::memset:77 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [138] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( bitmap_clear:5::memset:75 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:5::memset:77 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [140] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:5::memset:75 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:5::memset:77 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [142] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:5::memset:75 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:14::memset:75 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:5::memset:77 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:14::memset:77 [ main::angle#2 memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [145] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [146] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [147] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#0 mulf16s::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [149] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } ) always clobbers reg byte a +Statement [150] (signed dword~) rotate::$0 ← (signed dword) mulf16s::return#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [151] (signed word~) rotate::$10 ← (signed word)(signed dword~) rotate::$0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$10 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$10 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::$10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [152] (signed word) rotate::xr#0 ← (signed word~) rotate::$10 << (byte) 1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 rotate::xr#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [153] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [154] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#1 mulf16s::b#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [156] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } ) always clobbers reg byte a +Statement [157] (signed dword~) rotate::$2 ← (signed dword) mulf16s::return#3 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [158] (signed word~) rotate::$11 ← (signed word)(signed dword~) rotate::$2 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$11 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [159] (signed word) rotate::yr#0 ← (signed word~) rotate::$11 << (byte) 1 [ rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [160] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) [ rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [161] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 [ rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [162] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#2 mulf16s::b#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [164] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } ) always clobbers reg byte a +Statement [165] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#4 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$4 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [166] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$4 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$12 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [167] (signed word~) rotate::$5 ← (signed word~) rotate::$12 << (byte) 1 [ rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$5 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 rotate::$5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [168] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$5 [ rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::yr#0 rotate::sin_a#0 rotate::xr#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [169] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 [ rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::yr#0 rotate::xr#1 mulf16s::a#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [170] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 [ rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#3 mulf16s::b#3 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [172] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 [ rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::return#10 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [173] (signed dword~) rotate::$6 ← (signed dword) mulf16s::return#10 [ rotate::yr#0 rotate::xr#1 rotate::$6 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 rotate::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [174] (signed word~) rotate::$13 ← (signed word)(signed dword~) rotate::$6 [ rotate::yr#0 rotate::xr#1 rotate::$13 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 rotate::$13 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$13 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [175] (signed word~) rotate::$7 ← (signed word~) rotate::$13 << (byte) 1 [ rotate::yr#0 rotate::xr#1 rotate::$7 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 rotate::$7 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 rotate::$7 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [176] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$7 [ rotate::xr#1 rotate::yr#1 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::xr#1 rotate::yr#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::xr#1 rotate::yr#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [179] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$8 [ rotate::return_x#2 rotate::$9 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_x#2 rotate::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [180] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$9 [ rotate::return_x#2 rotate::return_y#2 ] ( show_letter:16::rotate:90 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::return_x#2 rotate::return_y#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } } show_letter:16::rotate:105 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::return_x#2 rotate::return_y#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } } ) always clobbers reg byte a +Statement [183] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [185] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [186] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [187] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [189] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [190] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [191] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [192] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [193] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [195] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [196] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [197] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [199] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a +Statement [200] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [201] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [202] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [204] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a +Statement [205] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a +Statement [207] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [208] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [209] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [210] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [211] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [213] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 [ bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [215] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_line::y#7 bitmap_plot::x#2 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y#7 bitmap_plot::x#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y#7 bitmap_plot::x#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [216] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_plot::x#2 bitmap_plot::y#2 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#2 bitmap_plot::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_plot::x#2 bitmap_plot::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a +Statement [219] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [221] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [222] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a +Statement [224] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [225] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [226] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [227] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [228] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [230] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 [ bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [231] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 [ bitmap_line::y#0 bitmap_plot::x#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y#0 bitmap_plot::x#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y#0 bitmap_plot::x#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [232] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 [ bitmap_plot::x#0 bitmap_plot::y#0 ] ( show_letter:16::bitmap_line:120 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#0 bitmap_plot::y#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_plot::x#0 bitmap_plot::y#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [234] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_x#0 spline_8segB::p2_y#0 spline_8segB::$0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [235] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::$1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [236] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [237] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::p2_y#0 spline_8segB::a_x#0 spline_8segB::$3 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [238] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::$4 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [239] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_x#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [240] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::$6 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [241] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::p1_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [242] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::$8 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [243] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_x#0 spline_8segB::b_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [244] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::$10 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [245] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::b_y#0 spline_8segB::i_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [246] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::$12 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [247] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_x#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [248] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::a_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [249] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 [ spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_x#0 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [250] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 [ spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p0_y#0 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [251] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 [ spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::i_x#0 spline_8segB::i_y#0 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#0 spline_8segB::p_y#0 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [253] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$22 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [254] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [255] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$24 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [256] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [257] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$23 spline_8segB::$25 spline_8segB::$31 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [258] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::$25 spline_8segB::$31 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [259] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_x#2 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [260] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::p_y#2 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [261] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_x#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [262] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::i_y#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [263] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 [ spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::j_x#0 spline_8segB::j_y#0 spline_8segB::n#2 spline_8segB::p_x#1 spline_8segB::p_y#1 spline_8segB::i_x#1 spline_8segB::i_y#1 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [266] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 [ spline_8segB::p_y#1 spline_8segB::$18 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p_y#1 spline_8segB::$18 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [267] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 [ spline_8segB::p_y#1 spline_8segB::$19 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::p_y#1 spline_8segB::$19 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [268] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 [ spline_8segB::$19 spline_8segB::$20 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$19 spline_8segB::$20 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [269] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 [ spline_8segB::$19 spline_8segB::$21 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$19 spline_8segB::$21 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [270] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 [ spline_8segB::$21 ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 spline_8segB::$21 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [271] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 [ ] ( show_letter:16::spline_8segB:132 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { spline_8segB::p0_x#0 = show_letter::current_x#4 } { spline_8segB::p0_y#0 = show_letter::current_y#4 } { spline_8segB::p1_x#0 = show_letter::segment_via_x#0 } { spline_8segB::p1_y#0 = show_letter::segment_via_y#0 } { spline_8segB::p2_x#0 = show_letter::current_x#10 } { spline_8segB::p2_y#0 = show_letter::current_y#10 } } ) always clobbers reg byte a +Statement [273] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) [ bitmap_plot_spline_8seg::current_x#0 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_x#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [274] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) [ bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_y#0 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [276] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$4 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [277] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 [ bitmap_line::x1#1 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$4 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#1 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [278] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 [ bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [279] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) [ bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [280] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) [ bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_line::y2#13 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x1#1 bitmap_line::y1#1 bitmap_line::x2#13 bitmap_line::y2#13 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } } ) always clobbers reg byte a +Statement [282] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::$4 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [283] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::current_y#1 ] ( show_letter:16::bitmap_plot_spline_8seg:134 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::current_x#1 bitmap_plot_spline_8seg::current_y#1 ] { { show_letter::angle#0 = main::angle#2 } } ) always clobbers reg byte a +Statement [288] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 [ mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [289] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 [ mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::a#0 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [291] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [292] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [293] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [294] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$6 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [295] (word~) mulf16s::$11 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#4 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#0 mulf16s::$11 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [296] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$11 [ mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16s::m#1 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [298] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#4 mulf16s::m#5 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [299] (word~) mulf16s::$9 ← > (dword) mulf16s::m#5 [ mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::m#5 mulf16s::$9 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [300] (word~) mulf16s::$12 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::a#4 [ mulf16s::m#5 mulf16s::$12 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::m#5 mulf16s::$12 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [301] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$12 [ mulf16s::m#2 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::m#2 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::m#2 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [303] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( show_letter:16::rotate:90::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:105::mulf16s:148 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } } show_letter:16::rotate:90::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:105::mulf16s:155 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } } show_letter:16::rotate:90::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:105::mulf16s:163 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } } show_letter:16::rotate:90::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } show_letter:16::rotate:105::mulf16s:171 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } } ) always clobbers reg byte a +Statement [309] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( show_letter:16::bitmap_line:120::abs_u16:184 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::abs_u16:184 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } show_letter:16::bitmap_line:120::abs_u16:188 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::abs_u16:188 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x#0 bitmap_line::y#0 bitmap_line::x2#10 bitmap_line::y2#11 bitmap_line::dx#0 abs_u16::return#2 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a +Statement [320] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( show_letter:16::bitmap_line:120::bitmap_plot:206 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:206 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_line:120::bitmap_plot:217 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:217 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_line:120::bitmap_plot:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_line:120::bitmap_plot:233 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:233 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [321] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( show_letter:16::bitmap_line:120::bitmap_plot:206 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:206 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_line:120::bitmap_plot:217 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:217 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_line:120::bitmap_plot:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_line:120::bitmap_plot:233 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:233 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [322] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( show_letter:16::bitmap_line:120::bitmap_plot:206 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:206 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_line:120::bitmap_plot:217 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:217 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_line:120::bitmap_plot:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_line:120::bitmap_plot:233 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:233 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a +Statement [324] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) [ ] ( show_letter:16::bitmap_line:120::bitmap_plot:206 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:206 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::y2#11 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } show_letter:16::bitmap_line:120::bitmap_plot:217 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:217 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } show_letter:16::bitmap_line:120::bitmap_plot:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#0 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:223 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 bitmap_line::x2#10 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::x#0 = bitmap_line::x1#1 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } show_letter:16::bitmap_line:120::bitmap_plot:233 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#0 } { bitmap_line::x2#0 = bitmap_line::x2#10 } { bitmap_line::y2#0 = bitmap_line::y2#11 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#0 } } show_letter:16::bitmap_plot_spline_8seg:134::bitmap_line:281::bitmap_plot:233 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#10 show_letter::current_y#10 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::$4 ] { { show_letter::angle#0 = main::angle#2 } { bitmap_line::y#0 = bitmap_line::y1#1 } { bitmap_line::x2#10 = bitmap_line::x2#13 } { bitmap_line::y2#11 = bitmap_line::y2#13 } { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x#0 bitmap_line::x1#1 } } ) always clobbers reg byte a reg byte y +Statement [326] *((const nomodify word*) mulf16u::memA) ← (word) mulf16u::a#0 [ mulf16u::b#0 ] ( show_letter:16::rotate:90::mulf16s:148::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:148::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:155::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:155::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:163::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:163::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:171::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:171::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::b#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [327] *((const nomodify word*) mulf16u::memB) ← (word) mulf16u::b#0 [ ] ( show_letter:16::rotate:90::mulf16s:148::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:148::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:155::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:155::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:163::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:163::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:171::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:171::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a Statement asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } always clobbers reg byte a reg byte x -Statement [332] (dword) mulf16u::return#0 ← *((const nomodify dword*) mulf16u::memR) [ mulf16u::return#0 ] ( show_letter:16::rotate:90::mulf16s:150::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:150::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:157::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:157::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:165::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:165::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:173::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:106::mulf16s:173::mulf16u:293 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a +Statement [329] (dword) mulf16u::return#0 ← *((const nomodify dword*) mulf16u::memR) [ mulf16u::return#0 ] ( show_letter:16::rotate:90::mulf16s:148::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:148::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::cos_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#0 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#0 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#2 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:155::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:155::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::angle#2 rotate::vector_x#2 rotate::vector_y#2 rotate::xr#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#1 = mulf16s::a#4 rotate::cos_a#0 } { mulf16s::b#1 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#3 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:163::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#0 = rotate::vector_x#2 show_letter::to_x#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#0 show_letter::to_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:163::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::vector_x#2 rotate::xr#0 rotate::yr#0 rotate::sin_a#0 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_x#1 = rotate::vector_x#2 show_letter::via_x#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#2 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#2 = mulf16s::b#4 rotate::vector_y#2 rotate::vector_y#1 show_letter::via_y#1 } { mulf16s::return#0 = mulf16s::return#4 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:90::mulf16s:171::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#0 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#0 = rotate::vector_y#2 show_letter::to_y#1 } { rotate::return_x#0 = rotate::return_x#2 } { rotate::return_y#0 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#0 show_letter::to_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } show_letter:16::rotate:105::mulf16s:171::mulf16u:290 [ main::angle#2 show_letter::angle#0 show_letter::i#10 show_letter::current_x#4 show_letter::current_y#4 show_letter::$21 show_letter::current_x#10 show_letter::current_y#10 rotate::yr#0 rotate::xr#1 mulf16s::a#4 mulf16s::b#4 mulf16u::return#0 ] { { rotate::angle#1 = rotate::angle#2 show_letter::angle#0 main::angle#2 } { rotate::vector_y#1 = rotate::vector_y#2 show_letter::via_y#1 } { rotate::return_x#1 = rotate::return_x#2 } { rotate::return_y#1 = rotate::return_y#2 } { mulf16s::a#3 = mulf16s::a#4 rotate::sin_a#0 } { mulf16s::b#3 = mulf16s::b#4 rotate::vector_x#2 rotate::vector_x#1 show_letter::via_x#1 } { mulf16s::return#0 = mulf16s::return#10 } { mulf16u::return#0 = mulf16u::return#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::angle#2 main::angle#1 ] : zp[1]:2 , Potential registers zp[1]:3 [ main::w#4 main::w#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[2]:4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] : zp[2]:4 , @@ -8359,7 +8327,7 @@ Potential registers zp[1]:87 [ bitmap_init::$7 ] : zp[1]:87 , reg byte a , reg b Potential registers zp[1]:88 [ bitmap_init::$4 ] : zp[1]:88 , reg byte a , reg byte x , reg byte y , reg byte alu , Potential registers zp[1]:89 [ bitmap_init::$5 ] : zp[1]:89 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:90 [ bitmap_init::$6 ] : zp[1]:90 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:91 [ show_letter::$19 ] : zp[1]:91 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:91 [ show_letter::$21 ] : zp[1]:91 , reg byte y , Potential registers zp[1]:92 [ show_letter::$16 ] : zp[1]:92 , reg byte x , reg byte y , Potential registers zp[2]:93 [ show_letter::to_x#0 ] : zp[2]:93 , Potential registers zp[2]:95 [ show_letter::to_y#0 ] : zp[2]:95 , @@ -8371,115 +8339,112 @@ Potential registers zp[2]:105 [ show_letter::to_x#2 ] : zp[2]:105 , Potential registers zp[2]:107 [ show_letter::to_y#2 ] : zp[2]:107 , Potential registers zp[2]:109 [ show_letter::current_x#10 ] : zp[2]:109 , Potential registers zp[2]:111 [ show_letter::current_y#10 ] : zp[2]:111 , -Potential registers zp[1]:113 [ show_letter::$21 ] : zp[1]:113 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:114 [ show_letter::$17 ] : zp[1]:114 , reg byte x , reg byte y , -Potential registers zp[2]:115 [ show_letter::via_x#0 ] : zp[2]:115 , -Potential registers zp[2]:117 [ show_letter::via_y#0 ] : zp[2]:117 , -Potential registers zp[2]:119 [ show_letter::via_x#1 ] : zp[2]:119 , -Potential registers zp[2]:121 [ show_letter::via_y#1 ] : zp[2]:121 , -Potential registers zp[2]:123 [ rotate::return_x#1 ] : zp[2]:123 , -Potential registers zp[2]:125 [ rotate::return_y#1 ] : zp[2]:125 , -Potential registers zp[2]:127 [ show_letter::via_x#2 ] : zp[2]:127 , -Potential registers zp[2]:129 [ show_letter::via_y#2 ] : zp[2]:129 , -Potential registers zp[2]:131 [ show_letter::segment_via_x#0 ] : zp[2]:131 , -Potential registers zp[2]:133 [ show_letter::segment_via_y#0 ] : zp[2]:133 , -Potential registers zp[1]:135 [ show_letter::$23 ] : zp[1]:135 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:136 [ show_letter::$18 ] : zp[1]:136 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:137 [ show_letter::segment_type#0 ] : zp[1]:137 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:138 [ spline_8segB::p0_x#0 ] : zp[2]:138 , -Potential registers zp[2]:140 [ spline_8segB::p0_y#0 ] : zp[2]:140 , -Potential registers zp[2]:142 [ spline_8segB::p1_x#0 ] : zp[2]:142 , -Potential registers zp[2]:144 [ spline_8segB::p1_y#0 ] : zp[2]:144 , -Potential registers zp[2]:146 [ spline_8segB::p2_x#0 ] : zp[2]:146 , -Potential registers zp[2]:148 [ spline_8segB::p2_y#0 ] : zp[2]:148 , -Potential registers zp[2]:150 [ memset::end#0 ] : zp[2]:150 , -Potential registers zp[2]:152 [ rotate::cos_a#0 ] : zp[2]:152 , -Potential registers zp[4]:154 [ mulf16s::return#2 ] : zp[4]:154 , -Potential registers zp[4]:158 [ rotate::$0 ] : zp[4]:158 , -Potential registers zp[2]:162 [ rotate::$10 ] : zp[2]:162 , -Potential registers zp[2]:164 [ rotate::xr#0 ] : zp[2]:164 , -Potential registers zp[4]:166 [ mulf16s::return#3 ] : zp[4]:166 , -Potential registers zp[4]:170 [ rotate::$2 ] : zp[4]:170 , -Potential registers zp[2]:174 [ rotate::$11 ] : zp[2]:174 , -Potential registers zp[2]:176 [ rotate::yr#0 ] : zp[2]:176 , -Potential registers zp[2]:178 [ rotate::sin_a#0 ] : zp[2]:178 , -Potential registers zp[4]:180 [ mulf16s::return#4 ] : zp[4]:180 , -Potential registers zp[4]:184 [ rotate::$4 ] : zp[4]:184 , -Potential registers zp[2]:188 [ rotate::$12 ] : zp[2]:188 , -Potential registers zp[2]:190 [ rotate::$5 ] : zp[2]:190 , -Potential registers zp[2]:192 [ rotate::xr#1 ] : zp[2]:192 , -Potential registers zp[4]:194 [ mulf16s::return#10 ] : zp[4]:194 , -Potential registers zp[4]:198 [ rotate::$6 ] : zp[4]:198 , -Potential registers zp[2]:202 [ rotate::$13 ] : zp[2]:202 , -Potential registers zp[2]:204 [ rotate::$7 ] : zp[2]:204 , -Potential registers zp[2]:206 [ rotate::yr#1 ] : zp[2]:206 , -Potential registers zp[1]:208 [ rotate::$8 ] : zp[1]:208 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:209 [ rotate::$9 ] : zp[1]:209 , reg byte x , reg byte y , -Potential registers zp[2]:210 [ rotate::return_x#2 ] : zp[2]:210 , -Potential registers zp[2]:212 [ rotate::return_y#2 ] : zp[2]:212 , -Potential registers zp[2]:214 [ abs_u16::return#0 ] : zp[2]:214 , -Potential registers zp[2]:216 [ bitmap_line::dx#0 ] : zp[2]:216 , -Potential registers zp[2]:218 [ abs_u16::return#1 ] : zp[2]:218 , -Potential registers zp[2]:220 [ bitmap_line::dy#0 ] : zp[2]:220 , -Potential registers zp[2]:222 [ sgn_u16::return#0 ] : zp[2]:222 , -Potential registers zp[2]:224 [ bitmap_line::sx#0 ] : zp[2]:224 , -Potential registers zp[2]:226 [ sgn_u16::return#1 ] : zp[2]:226 , -Potential registers zp[2]:228 [ bitmap_line::sy#0 ] : zp[2]:228 , -Potential registers zp[2]:230 [ spline_8segB::$0 ] : zp[2]:230 , -Potential registers zp[2]:232 [ spline_8segB::$1 ] : zp[2]:232 , -Potential registers zp[2]:234 [ spline_8segB::a_x#0 ] : zp[2]:234 , -Potential registers zp[2]:236 [ spline_8segB::$3 ] : zp[2]:236 , -Potential registers zp[2]:238 [ spline_8segB::$4 ] : zp[2]:238 , -Potential registers zp[2]:240 [ spline_8segB::a_y#0 ] : zp[2]:240 , -Potential registers zp[2]:242 [ spline_8segB::$6 ] : zp[2]:242 , -Potential registers zp[2]:244 [ spline_8segB::b_x#0 ] : zp[2]:244 , -Potential registers zp[2]:246 [ spline_8segB::$8 ] : zp[2]:246 , -Potential registers zp[2]:248 [ spline_8segB::b_y#0 ] : zp[2]:248 , -Potential registers zp[2]:250 [ spline_8segB::$10 ] : zp[2]:250 , -Potential registers zp[2]:252 [ spline_8segB::$12 ] : zp[2]:252 , -Potential registers zp[2]:254 [ spline_8segB::j_x#0 ] : zp[2]:254 , -Potential registers zp[2]:256 [ spline_8segB::j_y#0 ] : zp[2]:256 , -Potential registers zp[2]:258 [ spline_8segB::$22 ] : zp[2]:258 , -Potential registers zp[2]:260 [ spline_8segB::$23 ] : zp[2]:260 , -Potential registers zp[2]:262 [ spline_8segB::$24 ] : zp[2]:262 , -Potential registers zp[2]:264 [ spline_8segB::$25 ] : zp[2]:264 , -Potential registers zp[1]:266 [ spline_8segB::$31 ] : zp[1]:266 , reg byte x , reg byte y , -Potential registers zp[2]:267 [ spline_8segB::$18 ] : zp[2]:267 , -Potential registers zp[2]:269 [ spline_8segB::$19 ] : zp[2]:269 , -Potential registers zp[2]:271 [ spline_8segB::$20 ] : zp[2]:271 , -Potential registers zp[2]:273 [ spline_8segB::$21 ] : zp[2]:273 , -Potential registers zp[1]:275 [ bitmap_plot_spline_8seg::$3 ] : zp[1]:275 , reg byte x , reg byte y , -Potential registers zp[1]:276 [ bitmap_plot_spline_8seg::$4 ] : zp[1]:276 , reg byte x , reg byte y , -Potential registers zp[2]:277 [ mulf16u::a#0 ] : zp[2]:277 , -Potential registers zp[2]:279 [ mulf16u::b#0 ] : zp[2]:279 , -Potential registers zp[4]:281 [ mulf16u::return#2 ] : zp[4]:281 , -Potential registers zp[2]:285 [ mulf16s::$6 ] : zp[2]:285 , -Potential registers zp[2]:287 [ mulf16s::$11 ] : zp[2]:287 , -Potential registers zp[2]:289 [ mulf16s::$9 ] : zp[2]:289 , -Potential registers zp[2]:291 [ mulf16s::$12 ] : zp[2]:291 , -Potential registers zp[4]:293 [ mulf16s::return#0 ] : zp[4]:293 , -Potential registers zp[1]:297 [ abs_u16::$0 ] : zp[1]:297 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:298 [ abs_u16::$1 ] : zp[1]:298 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:299 [ sgn_u16::$0 ] : zp[1]:299 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:300 [ sgn_u16::$1 ] : zp[1]:300 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:301 [ bitmap_plot::plotter#0 ] : zp[2]:301 , -Potential registers zp[2]:303 [ bitmap_plot::$0 ] : zp[2]:303 , -Potential registers zp[2]:305 [ bitmap_plot::plotter#1 ] : zp[2]:305 , -Potential registers zp[1]:307 [ bitmap_plot::$1 ] : zp[1]:307 , reg byte a , reg byte x , reg byte y , -Potential registers zp[4]:308 [ mulf16u::return#0 ] : zp[4]:308 , +Potential registers zp[1]:113 [ show_letter::$17 ] : zp[1]:113 , reg byte x , reg byte y , +Potential registers zp[2]:114 [ show_letter::via_x#0 ] : zp[2]:114 , +Potential registers zp[2]:116 [ show_letter::via_y#0 ] : zp[2]:116 , +Potential registers zp[2]:118 [ show_letter::via_x#1 ] : zp[2]:118 , +Potential registers zp[2]:120 [ show_letter::via_y#1 ] : zp[2]:120 , +Potential registers zp[2]:122 [ rotate::return_x#1 ] : zp[2]:122 , +Potential registers zp[2]:124 [ rotate::return_y#1 ] : zp[2]:124 , +Potential registers zp[2]:126 [ show_letter::via_x#2 ] : zp[2]:126 , +Potential registers zp[2]:128 [ show_letter::via_y#2 ] : zp[2]:128 , +Potential registers zp[2]:130 [ show_letter::segment_via_x#0 ] : zp[2]:130 , +Potential registers zp[2]:132 [ show_letter::segment_via_y#0 ] : zp[2]:132 , +Potential registers zp[1]:134 [ show_letter::$18 ] : zp[1]:134 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:135 [ show_letter::segment_type#0 ] : zp[1]:135 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:136 [ spline_8segB::p0_x#0 ] : zp[2]:136 , +Potential registers zp[2]:138 [ spline_8segB::p0_y#0 ] : zp[2]:138 , +Potential registers zp[2]:140 [ spline_8segB::p1_x#0 ] : zp[2]:140 , +Potential registers zp[2]:142 [ spline_8segB::p1_y#0 ] : zp[2]:142 , +Potential registers zp[2]:144 [ spline_8segB::p2_x#0 ] : zp[2]:144 , +Potential registers zp[2]:146 [ spline_8segB::p2_y#0 ] : zp[2]:146 , +Potential registers zp[2]:148 [ memset::end#0 ] : zp[2]:148 , +Potential registers zp[2]:150 [ rotate::cos_a#0 ] : zp[2]:150 , +Potential registers zp[4]:152 [ mulf16s::return#2 ] : zp[4]:152 , +Potential registers zp[4]:156 [ rotate::$0 ] : zp[4]:156 , +Potential registers zp[2]:160 [ rotate::$10 ] : zp[2]:160 , +Potential registers zp[2]:162 [ rotate::xr#0 ] : zp[2]:162 , +Potential registers zp[4]:164 [ mulf16s::return#3 ] : zp[4]:164 , +Potential registers zp[4]:168 [ rotate::$2 ] : zp[4]:168 , +Potential registers zp[2]:172 [ rotate::$11 ] : zp[2]:172 , +Potential registers zp[2]:174 [ rotate::yr#0 ] : zp[2]:174 , +Potential registers zp[2]:176 [ rotate::sin_a#0 ] : zp[2]:176 , +Potential registers zp[4]:178 [ mulf16s::return#4 ] : zp[4]:178 , +Potential registers zp[4]:182 [ rotate::$4 ] : zp[4]:182 , +Potential registers zp[2]:186 [ rotate::$12 ] : zp[2]:186 , +Potential registers zp[2]:188 [ rotate::$5 ] : zp[2]:188 , +Potential registers zp[2]:190 [ rotate::xr#1 ] : zp[2]:190 , +Potential registers zp[4]:192 [ mulf16s::return#10 ] : zp[4]:192 , +Potential registers zp[4]:196 [ rotate::$6 ] : zp[4]:196 , +Potential registers zp[2]:200 [ rotate::$13 ] : zp[2]:200 , +Potential registers zp[2]:202 [ rotate::$7 ] : zp[2]:202 , +Potential registers zp[2]:204 [ rotate::yr#1 ] : zp[2]:204 , +Potential registers zp[1]:206 [ rotate::$8 ] : zp[1]:206 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:207 [ rotate::$9 ] : zp[1]:207 , reg byte x , reg byte y , +Potential registers zp[2]:208 [ rotate::return_x#2 ] : zp[2]:208 , +Potential registers zp[2]:210 [ rotate::return_y#2 ] : zp[2]:210 , +Potential registers zp[2]:212 [ abs_u16::return#0 ] : zp[2]:212 , +Potential registers zp[2]:214 [ bitmap_line::dx#0 ] : zp[2]:214 , +Potential registers zp[2]:216 [ abs_u16::return#1 ] : zp[2]:216 , +Potential registers zp[2]:218 [ bitmap_line::dy#0 ] : zp[2]:218 , +Potential registers zp[2]:220 [ sgn_u16::return#0 ] : zp[2]:220 , +Potential registers zp[2]:222 [ bitmap_line::sx#0 ] : zp[2]:222 , +Potential registers zp[2]:224 [ sgn_u16::return#1 ] : zp[2]:224 , +Potential registers zp[2]:226 [ bitmap_line::sy#0 ] : zp[2]:226 , +Potential registers zp[2]:228 [ spline_8segB::$0 ] : zp[2]:228 , +Potential registers zp[2]:230 [ spline_8segB::$1 ] : zp[2]:230 , +Potential registers zp[2]:232 [ spline_8segB::a_x#0 ] : zp[2]:232 , +Potential registers zp[2]:234 [ spline_8segB::$3 ] : zp[2]:234 , +Potential registers zp[2]:236 [ spline_8segB::$4 ] : zp[2]:236 , +Potential registers zp[2]:238 [ spline_8segB::a_y#0 ] : zp[2]:238 , +Potential registers zp[2]:240 [ spline_8segB::$6 ] : zp[2]:240 , +Potential registers zp[2]:242 [ spline_8segB::b_x#0 ] : zp[2]:242 , +Potential registers zp[2]:244 [ spline_8segB::$8 ] : zp[2]:244 , +Potential registers zp[2]:246 [ spline_8segB::b_y#0 ] : zp[2]:246 , +Potential registers zp[2]:248 [ spline_8segB::$10 ] : zp[2]:248 , +Potential registers zp[2]:250 [ spline_8segB::$12 ] : zp[2]:250 , +Potential registers zp[2]:252 [ spline_8segB::j_x#0 ] : zp[2]:252 , +Potential registers zp[2]:254 [ spline_8segB::j_y#0 ] : zp[2]:254 , +Potential registers zp[2]:256 [ spline_8segB::$22 ] : zp[2]:256 , +Potential registers zp[2]:258 [ spline_8segB::$23 ] : zp[2]:258 , +Potential registers zp[2]:260 [ spline_8segB::$24 ] : zp[2]:260 , +Potential registers zp[2]:262 [ spline_8segB::$25 ] : zp[2]:262 , +Potential registers zp[1]:264 [ spline_8segB::$31 ] : zp[1]:264 , reg byte x , reg byte y , +Potential registers zp[2]:265 [ spline_8segB::$18 ] : zp[2]:265 , +Potential registers zp[2]:267 [ spline_8segB::$19 ] : zp[2]:267 , +Potential registers zp[2]:269 [ spline_8segB::$20 ] : zp[2]:269 , +Potential registers zp[2]:271 [ spline_8segB::$21 ] : zp[2]:271 , +Potential registers zp[1]:273 [ bitmap_plot_spline_8seg::$4 ] : zp[1]:273 , reg byte x , +Potential registers zp[2]:274 [ mulf16u::a#0 ] : zp[2]:274 , +Potential registers zp[2]:276 [ mulf16u::b#0 ] : zp[2]:276 , +Potential registers zp[4]:278 [ mulf16u::return#2 ] : zp[4]:278 , +Potential registers zp[2]:282 [ mulf16s::$6 ] : zp[2]:282 , +Potential registers zp[2]:284 [ mulf16s::$11 ] : zp[2]:284 , +Potential registers zp[2]:286 [ mulf16s::$9 ] : zp[2]:286 , +Potential registers zp[2]:288 [ mulf16s::$12 ] : zp[2]:288 , +Potential registers zp[4]:290 [ mulf16s::return#0 ] : zp[4]:290 , +Potential registers zp[1]:294 [ abs_u16::$0 ] : zp[1]:294 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:295 [ abs_u16::$1 ] : zp[1]:295 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:296 [ sgn_u16::$0 ] : zp[1]:296 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:297 [ sgn_u16::$1 ] : zp[1]:297 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:298 [ bitmap_plot::plotter#0 ] : zp[2]:298 , +Potential registers zp[2]:300 [ bitmap_plot::$0 ] : zp[2]:300 , +Potential registers zp[2]:302 [ bitmap_plot::plotter#1 ] : zp[2]:302 , +Potential registers zp[1]:304 [ bitmap_plot::$1 ] : zp[1]:304 , reg byte a , reg byte x , reg byte y , +Potential registers zp[4]:305 [ mulf16u::return#0 ] : zp[4]:305 , REGISTER UPLIFT SCOPES -Uplift Scope [bitmap_plot] 26,006,000,000,014: zp[1]:80 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] 20,000,000,000,002: zp[2]:303 [ bitmap_plot::$0 ] 20,000,000,000,002: zp[1]:307 [ bitmap_plot::$1 ] 15,000,000,000,001.5: zp[2]:305 [ bitmap_plot::plotter#1 ] 7,502,500,000,005.5: zp[2]:81 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] 5,000,000,000,000.5: zp[2]:301 [ bitmap_plot::plotter#0 ] -Uplift Scope [bitmap_line] 6,894,531,823,645.97: zp[2]:46 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] 5,500,637,791,788.03: zp[2]:48 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] 5,235,533,333,340.77: zp[2]:44 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 5,235,533,333,340.77: zp[2]:50 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 83,444,444,444.64: zp[2]:220 [ bitmap_line::dy#0 ] 76,961,538,461.65: zp[2]:228 [ bitmap_line::sy#0 ] 75,100,000,000.18: zp[2]:216 [ bitmap_line::dx#0 ] 66,700,000,000.1: zp[2]:224 [ bitmap_line::sx#0 ] 31,515,645,316.66: zp[2]:42 [ bitmap_line::y2#11 bitmap_line::y2#13 bitmap_line::y2#0 ] 31,415,635,314.66: zp[2]:40 [ bitmap_line::x2#10 bitmap_line::x2#13 bitmap_line::x2#0 ] -Uplift Scope [abs_u16] 37,500,000,008.25: zp[2]:74 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] 20,000,000,002: zp[1]:297 [ abs_u16::$0 ] 20,000,000,002: zp[1]:298 [ abs_u16::$1 ] 2,000,000,002: zp[2]:214 [ abs_u16::return#0 ] 2,000,000,002: zp[2]:218 [ abs_u16::return#1 ] -Uplift Scope [sgn_u16] 20,000,000,002: zp[1]:299 [ sgn_u16::$0 ] 20,000,000,002: zp[1]:300 [ sgn_u16::$1 ] 16,000,000,007: zp[2]:76 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] 2,000,000,002: zp[2]:222 [ sgn_u16::return#0 ] 2,000,000,002: zp[2]:226 [ sgn_u16::return#1 ] 500,000,000.5: zp[2]:78 [ sgn_u16::return#4 ] -Uplift Scope [spline_8segB] 200,000,002: zp[2]:258 [ spline_8segB::$22 ] 200,000,002: zp[2]:262 [ spline_8segB::$24 ] 175,000,001.75: zp[1]:56 [ spline_8segB::n#2 spline_8segB::n#1 ] 150,000,001.5: zp[1]:266 [ spline_8segB::$31 ] 93,988,486.28: zp[2]:59 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] 80,038,572.61: zp[2]:57 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] 70,962,502: zp[2]:52 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] 66,666,667.33: zp[2]:264 [ spline_8segB::$25 ] 62,130,161.6: zp[2]:54 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] 50,000,000.5: zp[2]:260 [ spline_8segB::$23 ] 5,888,235.41: zp[2]:256 [ spline_8segB::j_y#0 ] 5,561,111.22: zp[2]:254 [ spline_8segB::j_x#0 ] 200,002: zp[2]:230 [ spline_8segB::$0 ] 200,002: zp[2]:232 [ spline_8segB::$1 ] 200,002: zp[2]:236 [ spline_8segB::$3 ] 200,002: zp[2]:238 [ spline_8segB::$4 ] 200,002: zp[2]:242 [ spline_8segB::$6 ] 200,002: zp[2]:246 [ spline_8segB::$8 ] 200,002: zp[2]:250 [ spline_8segB::$10 ] 200,002: zp[2]:252 [ spline_8segB::$12 ] 200,002: zp[2]:267 [ spline_8segB::$18 ] 200,002: zp[2]:271 [ spline_8segB::$20 ] 100,001: zp[2]:273 [ spline_8segB::$21 ] 66,667.33: zp[2]:244 [ spline_8segB::b_x#0 ] 66,667.33: zp[2]:248 [ spline_8segB::b_y#0 ] 66,667.33: zp[2]:269 [ spline_8segB::$19 ] 36,667.33: zp[2]:146 [ spline_8segB::p2_x#0 ] 30,000.3: zp[2]:240 [ spline_8segB::a_y#0 ] 25,000.25: zp[2]:234 [ spline_8segB::a_x#0 ] 22,000.4: zp[2]:148 [ spline_8segB::p2_y#0 ] 21,000.3: zp[2]:142 [ spline_8segB::p1_x#0 ] 19,091.18: zp[2]:144 [ spline_8segB::p1_y#0 ] 14,091.09: zp[2]:138 [ spline_8segB::p0_x#0 ] 14,091.09: zp[2]:140 [ spline_8segB::p0_y#0 ] -Uplift Scope [bitmap_plot_spline_8seg] 190,000,001.9: zp[1]:61 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] 150,000,001.5: zp[1]:276 [ bitmap_plot_spline_8seg::$4 ] 100,233,336.67: zp[2]:64 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#1 ] 100,150,002.5: zp[2]:62 [ bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#1 ] 25,000,000.25: zp[1]:275 [ bitmap_plot_spline_8seg::$3 ] -Uplift Scope [mulf16s] 8,250,008.25: zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] 2,000,002: zp[2]:285 [ mulf16s::$6 ] 2,000,002: zp[2]:287 [ mulf16s::$11 ] 2,000,002: zp[2]:289 [ mulf16s::$9 ] 2,000,002: zp[2]:291 [ mulf16s::$12 ] 927,281.18: zp[2]:68 [ mulf16s::b#4 mulf16s::b#0 mulf16s::b#1 mulf16s::b#2 mulf16s::b#3 ] 507,696.69: zp[2]:66 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 ] 233,334.17: zp[4]:293 [ mulf16s::return#0 ] 200,002: zp[4]:154 [ mulf16s::return#2 ] 200,002: zp[4]:166 [ mulf16s::return#3 ] 200,002: zp[4]:180 [ mulf16s::return#4 ] 200,002: zp[4]:194 [ mulf16s::return#10 ] -Uplift Scope [mulf16u] 5,500,001: zp[2]:277 [ mulf16u::a#0 ] 5,500,001: zp[2]:279 [ mulf16u::b#0 ] 3,666,667.33: zp[4]:308 [ mulf16u::return#0 ] 2,000,002: zp[4]:281 [ mulf16u::return#2 ] -Uplift Scope [rotate] 200,002: zp[2]:162 [ rotate::$10 ] 200,002: zp[2]:174 [ rotate::$11 ] 200,002: zp[2]:188 [ rotate::$12 ] 200,002: zp[2]:190 [ rotate::$5 ] 200,002: zp[2]:202 [ rotate::$13 ] 200,002: zp[2]:204 [ rotate::$7 ] 100,001: zp[4]:158 [ rotate::$0 ] 100,001: zp[4]:170 [ rotate::$2 ] 100,001: zp[4]:184 [ rotate::$4 ] 100,001: zp[4]:198 [ rotate::$6 ] 100,001: zp[2]:206 [ rotate::yr#1 ] 50,000.5: zp[1]:208 [ rotate::$8 ] 50,000.5: zp[1]:209 [ rotate::$9 ] 41,254.12: zp[1]:35 [ rotate::angle#2 rotate::angle#0 rotate::angle#1 ] 37,500.38: zp[2]:152 [ rotate::cos_a#0 ] 33,333.67: zp[2]:178 [ rotate::sin_a#0 ] 32,224.44: zp[2]:38 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 ] 24,000.6: zp[2]:210 [ rotate::return_x#2 ] 22,222.44: zp[2]:192 [ rotate::xr#1 ] 21,796.36: zp[2]:36 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 ] 20,000.5: zp[2]:212 [ rotate::return_y#2 ] 12,500.12: zp[2]:164 [ rotate::xr#0 ] 11,764.82: zp[2]:176 [ rotate::yr#0 ] 10,001: zp[2]:101 [ rotate::return_x#0 ] 10,001: zp[2]:103 [ rotate::return_y#0 ] 10,001: zp[2]:123 [ rotate::return_x#1 ] 10,001: zp[2]:125 [ rotate::return_y#1 ] -Uplift Scope [memset] 335,672.33: zp[2]:33 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 16,833.67: zp[2]:150 [ memset::end#0 ] 12,500.12: zp[1]:32 [ memset::c#4 ] 1,001: zp[2]:28 [ memset::num#2 ] 0: zp[2]:30 [ memset::str#3 ] -Uplift Scope [show_letter] 20,502.05: zp[2]:26 [ show_letter::current_y#4 show_letter::current_y#11 ] 20,002: zp[1]:91 [ show_letter::$19 ] 20,002: zp[1]:113 [ show_letter::$21 ] 20,002: zp[1]:135 [ show_letter::$23 ] 20,002: zp[1]:136 [ show_letter::$18 ] 15,001.5: zp[1]:92 [ show_letter::$16 ] 15,001.5: zp[1]:114 [ show_letter::$17 ] 15,001.5: zp[1]:137 [ show_letter::segment_type#0 ] 10,527.37: zp[2]:24 [ show_letter::current_x#4 show_letter::current_x#11 ] 10,001: zp[2]:93 [ show_letter::to_x#0 ] 10,001: zp[2]:95 [ show_letter::to_y#0 ] 10,001: zp[2]:97 [ show_letter::to_x#1 ] 10,001: zp[2]:99 [ show_letter::to_y#1 ] 10,001: zp[2]:105 [ show_letter::to_x#2 ] 10,001: zp[2]:107 [ show_letter::to_y#2 ] 10,001: zp[2]:115 [ show_letter::via_x#0 ] 10,001: zp[2]:117 [ show_letter::via_y#0 ] 10,001: zp[2]:119 [ show_letter::via_x#1 ] 10,001: zp[2]:121 [ show_letter::via_y#1 ] 10,001: zp[2]:127 [ show_letter::via_x#2 ] 10,001: zp[2]:129 [ show_letter::via_y#2 ] 9,039.37: zp[1]:23 [ show_letter::i#10 show_letter::i#1 ] 2,222.44: zp[2]:131 [ show_letter::segment_via_x#0 ] 2,222.44: zp[2]:133 [ show_letter::segment_via_y#0 ] 769.31: zp[2]:109 [ show_letter::current_x#10 ] 769.31: zp[2]:111 [ show_letter::current_y#10 ] 345.05: zp[1]:83 [ show_letter::angle#0 ] +Uplift Scope [bitmap_plot] 26,006,000,000,014: zp[1]:80 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] 20,000,000,000,002: zp[2]:300 [ bitmap_plot::$0 ] 20,000,000,000,002: zp[1]:304 [ bitmap_plot::$1 ] 15,000,000,000,001.5: zp[2]:302 [ bitmap_plot::plotter#1 ] 7,502,500,000,005.5: zp[2]:81 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] 5,000,000,000,000.5: zp[2]:298 [ bitmap_plot::plotter#0 ] +Uplift Scope [bitmap_line] 6,894,531,823,645.97: zp[2]:46 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] 5,500,637,791,788.03: zp[2]:48 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] 5,235,533,333,340.77: zp[2]:44 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 5,235,533,333,340.77: zp[2]:50 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 83,444,444,444.64: zp[2]:218 [ bitmap_line::dy#0 ] 76,961,538,461.65: zp[2]:226 [ bitmap_line::sy#0 ] 75,100,000,000.18: zp[2]:214 [ bitmap_line::dx#0 ] 66,700,000,000.1: zp[2]:222 [ bitmap_line::sx#0 ] 31,515,645,316.66: zp[2]:42 [ bitmap_line::y2#11 bitmap_line::y2#13 bitmap_line::y2#0 ] 31,415,635,314.66: zp[2]:40 [ bitmap_line::x2#10 bitmap_line::x2#13 bitmap_line::x2#0 ] +Uplift Scope [abs_u16] 37,500,000,008.25: zp[2]:74 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] 20,000,000,002: zp[1]:294 [ abs_u16::$0 ] 20,000,000,002: zp[1]:295 [ abs_u16::$1 ] 2,000,000,002: zp[2]:212 [ abs_u16::return#0 ] 2,000,000,002: zp[2]:216 [ abs_u16::return#1 ] +Uplift Scope [sgn_u16] 20,000,000,002: zp[1]:296 [ sgn_u16::$0 ] 20,000,000,002: zp[1]:297 [ sgn_u16::$1 ] 16,000,000,007: zp[2]:76 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] 2,000,000,002: zp[2]:220 [ sgn_u16::return#0 ] 2,000,000,002: zp[2]:224 [ sgn_u16::return#1 ] 500,000,000.5: zp[2]:78 [ sgn_u16::return#4 ] +Uplift Scope [spline_8segB] 200,000,002: zp[2]:256 [ spline_8segB::$22 ] 200,000,002: zp[2]:260 [ spline_8segB::$24 ] 175,000,001.75: zp[1]:56 [ spline_8segB::n#2 spline_8segB::n#1 ] 150,000,001.5: zp[1]:264 [ spline_8segB::$31 ] 93,988,486.28: zp[2]:59 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] 80,038,572.61: zp[2]:57 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] 70,962,502: zp[2]:52 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] 66,666,667.33: zp[2]:262 [ spline_8segB::$25 ] 62,130,161.6: zp[2]:54 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] 50,000,000.5: zp[2]:258 [ spline_8segB::$23 ] 5,888,235.41: zp[2]:254 [ spline_8segB::j_y#0 ] 5,561,111.22: zp[2]:252 [ spline_8segB::j_x#0 ] 200,002: zp[2]:228 [ spline_8segB::$0 ] 200,002: zp[2]:230 [ spline_8segB::$1 ] 200,002: zp[2]:234 [ spline_8segB::$3 ] 200,002: zp[2]:236 [ spline_8segB::$4 ] 200,002: zp[2]:240 [ spline_8segB::$6 ] 200,002: zp[2]:244 [ spline_8segB::$8 ] 200,002: zp[2]:248 [ spline_8segB::$10 ] 200,002: zp[2]:250 [ spline_8segB::$12 ] 200,002: zp[2]:265 [ spline_8segB::$18 ] 200,002: zp[2]:269 [ spline_8segB::$20 ] 100,001: zp[2]:271 [ spline_8segB::$21 ] 66,667.33: zp[2]:242 [ spline_8segB::b_x#0 ] 66,667.33: zp[2]:246 [ spline_8segB::b_y#0 ] 66,667.33: zp[2]:267 [ spline_8segB::$19 ] 36,667.33: zp[2]:144 [ spline_8segB::p2_x#0 ] 30,000.3: zp[2]:238 [ spline_8segB::a_y#0 ] 25,000.25: zp[2]:232 [ spline_8segB::a_x#0 ] 22,000.4: zp[2]:146 [ spline_8segB::p2_y#0 ] 21,000.3: zp[2]:140 [ spline_8segB::p1_x#0 ] 19,091.18: zp[2]:142 [ spline_8segB::p1_y#0 ] 14,091.09: zp[2]:136 [ spline_8segB::p0_x#0 ] 14,091.09: zp[2]:138 [ spline_8segB::p0_y#0 ] +Uplift Scope [bitmap_plot_spline_8seg] 183,333,335.17: zp[1]:61 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] 100,233,336.67: zp[2]:64 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#1 ] 100,150,002.5: zp[2]:62 [ bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#1 ] 42,857,143.29: zp[1]:273 [ bitmap_plot_spline_8seg::$4 ] +Uplift Scope [mulf16s] 8,250,008.25: zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] 2,000,002: zp[2]:282 [ mulf16s::$6 ] 2,000,002: zp[2]:284 [ mulf16s::$11 ] 2,000,002: zp[2]:286 [ mulf16s::$9 ] 2,000,002: zp[2]:288 [ mulf16s::$12 ] 927,281.18: zp[2]:68 [ mulf16s::b#4 mulf16s::b#0 mulf16s::b#1 mulf16s::b#2 mulf16s::b#3 ] 507,696.69: zp[2]:66 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 ] 233,334.17: zp[4]:290 [ mulf16s::return#0 ] 200,002: zp[4]:152 [ mulf16s::return#2 ] 200,002: zp[4]:164 [ mulf16s::return#3 ] 200,002: zp[4]:178 [ mulf16s::return#4 ] 200,002: zp[4]:192 [ mulf16s::return#10 ] +Uplift Scope [mulf16u] 5,500,001: zp[2]:274 [ mulf16u::a#0 ] 5,500,001: zp[2]:276 [ mulf16u::b#0 ] 3,666,667.33: zp[4]:305 [ mulf16u::return#0 ] 2,000,002: zp[4]:278 [ mulf16u::return#2 ] +Uplift Scope [rotate] 200,002: zp[2]:160 [ rotate::$10 ] 200,002: zp[2]:172 [ rotate::$11 ] 200,002: zp[2]:186 [ rotate::$12 ] 200,002: zp[2]:188 [ rotate::$5 ] 200,002: zp[2]:200 [ rotate::$13 ] 200,002: zp[2]:202 [ rotate::$7 ] 100,001: zp[4]:156 [ rotate::$0 ] 100,001: zp[4]:168 [ rotate::$2 ] 100,001: zp[4]:182 [ rotate::$4 ] 100,001: zp[4]:196 [ rotate::$6 ] 100,001: zp[2]:204 [ rotate::yr#1 ] 50,000.5: zp[1]:206 [ rotate::$8 ] 50,000.5: zp[1]:207 [ rotate::$9 ] 41,254.12: zp[1]:35 [ rotate::angle#2 rotate::angle#0 rotate::angle#1 ] 37,500.38: zp[2]:150 [ rotate::cos_a#0 ] 33,333.67: zp[2]:176 [ rotate::sin_a#0 ] 32,224.44: zp[2]:38 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 ] 24,000.6: zp[2]:208 [ rotate::return_x#2 ] 22,222.44: zp[2]:190 [ rotate::xr#1 ] 21,796.36: zp[2]:36 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 ] 20,000.5: zp[2]:210 [ rotate::return_y#2 ] 12,500.12: zp[2]:162 [ rotate::xr#0 ] 11,764.82: zp[2]:174 [ rotate::yr#0 ] 10,001: zp[2]:101 [ rotate::return_x#0 ] 10,001: zp[2]:103 [ rotate::return_y#0 ] 10,001: zp[2]:122 [ rotate::return_x#1 ] 10,001: zp[2]:124 [ rotate::return_y#1 ] +Uplift Scope [memset] 335,672.33: zp[2]:33 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 16,833.67: zp[2]:148 [ memset::end#0 ] 12,500.12: zp[1]:32 [ memset::c#4 ] 1,001: zp[2]:28 [ memset::num#2 ] 0: zp[2]:30 [ memset::str#3 ] +Uplift Scope [show_letter] 20,528.37: zp[2]:26 [ show_letter::current_y#4 show_letter::current_y#11 ] 20,002: zp[1]:134 [ show_letter::$18 ] 15,001.5: zp[1]:92 [ show_letter::$16 ] 15,001.5: zp[1]:113 [ show_letter::$17 ] 15,001.5: zp[1]:135 [ show_letter::segment_type#0 ] 10,556.61: zp[2]:24 [ show_letter::current_x#4 show_letter::current_x#11 ] 10,001: zp[2]:93 [ show_letter::to_x#0 ] 10,001: zp[2]:95 [ show_letter::to_y#0 ] 10,001: zp[2]:97 [ show_letter::to_x#1 ] 10,001: zp[2]:99 [ show_letter::to_y#1 ] 10,001: zp[2]:105 [ show_letter::to_x#2 ] 10,001: zp[2]:107 [ show_letter::to_y#2 ] 10,001: zp[2]:114 [ show_letter::via_x#0 ] 10,001: zp[2]:116 [ show_letter::via_y#0 ] 10,001: zp[2]:118 [ show_letter::via_x#1 ] 10,001: zp[2]:120 [ show_letter::via_y#1 ] 10,001: zp[2]:126 [ show_letter::via_x#2 ] 10,001: zp[2]:128 [ show_letter::via_y#2 ] 8,700.87: zp[1]:23 [ show_letter::i#10 show_letter::i#1 ] 2,500.25: zp[2]:130 [ show_letter::segment_via_x#0 ] 2,500.25: zp[2]:132 [ show_letter::segment_via_y#0 ] 1,290.45: zp[1]:91 [ show_letter::$21 ] 810.89: zp[2]:109 [ show_letter::current_x#10 ] 810.89: zp[2]:111 [ show_letter::current_y#10 ] 357.38: zp[1]:83 [ show_letter::angle#0 ] Uplift Scope [mulf_init] 437.67: zp[2]:16 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 246.89: zp[2]:10 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 230.86: zp[2]:4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 212.1: zp[1]:9 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 202: zp[1]:84 [ mulf_init::$1 ] 202: zp[1]:85 [ mulf_init::$4 ] 202: zp[1]:86 [ mulf_init::$5 ] 141.4: zp[1]:12 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 138.88: zp[1]:15 [ mulf_init::dir#2 mulf_init::dir#4 ] 124.31: zp[1]:6 [ mulf_init::c#2 mulf_init::c#1 ] 109.42: zp[2]:13 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 92.58: zp[2]:7 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Uplift Scope [bitmap_init] 366.12: zp[2]:21 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 319.83: zp[1]:18 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 202: zp[1]:19 [ bitmap_init::x#2 bitmap_init::x#1 ] 202: zp[1]:20 [ bitmap_init::y#2 bitmap_init::y#1 ] 202: zp[1]:88 [ bitmap_init::$4 ] 202: zp[1]:89 [ bitmap_init::$5 ] 202: zp[1]:90 [ bitmap_init::$6 ] 50.5: zp[1]:87 [ bitmap_init::$7 ] Uplift Scope [main] 886.17: zp[1]:3 [ main::w#4 main::w#1 ] 25.3: zp[1]:2 [ main::angle#2 main::angle#1 ] @@ -8494,139 +8459,137 @@ Uplift Scope [Segment] Uplift Scope [Segment::SegmentType] Uplift Scope [] -Uplifting [bitmap_plot] best 843250 combination reg byte a [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] zp[2]:303 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:305 [ bitmap_plot::plotter#1 ] zp[2]:81 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] zp[2]:301 [ bitmap_plot::plotter#0 ] -Uplifting [bitmap_line] best 843250 combination zp[2]:46 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:48 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:44 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:50 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:220 [ bitmap_line::dy#0 ] zp[2]:228 [ bitmap_line::sy#0 ] zp[2]:216 [ bitmap_line::dx#0 ] zp[2]:224 [ bitmap_line::sx#0 ] zp[2]:42 [ bitmap_line::y2#11 bitmap_line::y2#13 bitmap_line::y2#0 ] zp[2]:40 [ bitmap_line::x2#10 bitmap_line::x2#13 bitmap_line::x2#0 ] -Uplifting [abs_u16] best 843238 combination zp[2]:74 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] zp[2]:214 [ abs_u16::return#0 ] zp[2]:218 [ abs_u16::return#1 ] -Uplifting [sgn_u16] best 843226 combination reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:76 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp[2]:222 [ sgn_u16::return#0 ] zp[2]:226 [ sgn_u16::return#1 ] zp[2]:78 [ sgn_u16::return#4 ] -Uplifting [spline_8segB] best 826226 combination zp[2]:258 [ spline_8segB::$22 ] zp[2]:262 [ spline_8segB::$24 ] reg byte y [ spline_8segB::n#2 spline_8segB::n#1 ] reg byte x [ spline_8segB::$31 ] zp[2]:59 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] zp[2]:57 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] zp[2]:52 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] zp[2]:264 [ spline_8segB::$25 ] zp[2]:54 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] zp[2]:260 [ spline_8segB::$23 ] zp[2]:256 [ spline_8segB::j_y#0 ] zp[2]:254 [ spline_8segB::j_x#0 ] zp[2]:230 [ spline_8segB::$0 ] zp[2]:232 [ spline_8segB::$1 ] zp[2]:236 [ spline_8segB::$3 ] zp[2]:238 [ spline_8segB::$4 ] zp[2]:242 [ spline_8segB::$6 ] zp[2]:246 [ spline_8segB::$8 ] zp[2]:250 [ spline_8segB::$10 ] zp[2]:252 [ spline_8segB::$12 ] zp[2]:267 [ spline_8segB::$18 ] zp[2]:271 [ spline_8segB::$20 ] zp[2]:273 [ spline_8segB::$21 ] zp[2]:244 [ spline_8segB::b_x#0 ] zp[2]:248 [ spline_8segB::b_y#0 ] zp[2]:269 [ spline_8segB::$19 ] zp[2]:146 [ spline_8segB::p2_x#0 ] zp[2]:240 [ spline_8segB::a_y#0 ] zp[2]:234 [ spline_8segB::a_x#0 ] zp[2]:148 [ spline_8segB::p2_y#0 ] zp[2]:142 [ spline_8segB::p1_x#0 ] zp[2]:144 [ spline_8segB::p1_y#0 ] zp[2]:138 [ spline_8segB::p0_x#0 ] zp[2]:140 [ spline_8segB::p0_y#0 ] -Uplifting [bitmap_plot_spline_8seg] best 812226 combination zp[1]:61 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] reg byte x [ bitmap_plot_spline_8seg::$4 ] zp[2]:64 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#1 ] zp[2]:62 [ bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#1 ] reg byte x [ bitmap_plot_spline_8seg::$3 ] -Uplifting [mulf16s] best 812226 combination zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp[2]:285 [ mulf16s::$6 ] zp[2]:287 [ mulf16s::$11 ] zp[2]:289 [ mulf16s::$9 ] zp[2]:291 [ mulf16s::$12 ] zp[2]:68 [ mulf16s::b#4 mulf16s::b#0 mulf16s::b#1 mulf16s::b#2 mulf16s::b#3 ] zp[2]:66 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 ] zp[4]:293 [ mulf16s::return#0 ] zp[4]:154 [ mulf16s::return#2 ] zp[4]:166 [ mulf16s::return#3 ] zp[4]:180 [ mulf16s::return#4 ] zp[4]:194 [ mulf16s::return#10 ] -Uplifting [mulf16u] best 812226 combination zp[2]:277 [ mulf16u::a#0 ] zp[2]:279 [ mulf16u::b#0 ] zp[4]:308 [ mulf16u::return#0 ] zp[4]:281 [ mulf16u::return#2 ] -Uplifting [rotate] best 811610 combination zp[2]:162 [ rotate::$10 ] zp[2]:174 [ rotate::$11 ] zp[2]:188 [ rotate::$12 ] zp[2]:190 [ rotate::$5 ] zp[2]:202 [ rotate::$13 ] zp[2]:204 [ rotate::$7 ] zp[4]:158 [ rotate::$0 ] zp[4]:170 [ rotate::$2 ] zp[4]:184 [ rotate::$4 ] zp[4]:198 [ rotate::$6 ] zp[2]:206 [ rotate::yr#1 ] reg byte a [ rotate::$8 ] reg byte x [ rotate::$9 ] reg byte y [ rotate::angle#2 rotate::angle#0 rotate::angle#1 ] zp[2]:152 [ rotate::cos_a#0 ] zp[2]:178 [ rotate::sin_a#0 ] zp[2]:38 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 ] zp[2]:210 [ rotate::return_x#2 ] zp[2]:192 [ rotate::xr#1 ] zp[2]:36 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 ] zp[2]:212 [ rotate::return_y#2 ] zp[2]:164 [ rotate::xr#0 ] zp[2]:176 [ rotate::yr#0 ] zp[2]:101 [ rotate::return_x#0 ] zp[2]:103 [ rotate::return_y#0 ] zp[2]:123 [ rotate::return_x#1 ] zp[2]:125 [ rotate::return_y#1 ] -Uplifting [memset] best 811504 combination zp[2]:33 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:150 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:28 [ memset::num#2 ] zp[2]:30 [ memset::str#3 ] -Uplifting [show_letter] best 809304 combination zp[2]:26 [ show_letter::current_y#4 show_letter::current_y#11 ] reg byte a [ show_letter::$19 ] reg byte a [ show_letter::$21 ] reg byte a [ show_letter::$23 ] reg byte a [ show_letter::$18 ] zp[1]:92 [ show_letter::$16 ] zp[1]:114 [ show_letter::$17 ] zp[1]:137 [ show_letter::segment_type#0 ] zp[2]:24 [ show_letter::current_x#4 show_letter::current_x#11 ] zp[2]:93 [ show_letter::to_x#0 ] zp[2]:95 [ show_letter::to_y#0 ] zp[2]:97 [ show_letter::to_x#1 ] zp[2]:99 [ show_letter::to_y#1 ] zp[2]:105 [ show_letter::to_x#2 ] zp[2]:107 [ show_letter::to_y#2 ] zp[2]:115 [ show_letter::via_x#0 ] zp[2]:117 [ show_letter::via_y#0 ] zp[2]:119 [ show_letter::via_x#1 ] zp[2]:121 [ show_letter::via_y#1 ] zp[2]:127 [ show_letter::via_x#2 ] zp[2]:129 [ show_letter::via_y#2 ] zp[1]:23 [ show_letter::i#10 show_letter::i#1 ] zp[2]:131 [ show_letter::segment_via_x#0 ] zp[2]:133 [ show_letter::segment_via_y#0 ] zp[2]:109 [ show_letter::current_x#10 ] zp[2]:111 [ show_letter::current_y#10 ] zp[1]:83 [ show_letter::angle#0 ] -Limited combination testing to 100 combinations of 9216 possible. -Uplifting [mulf_init] best 809054 combination zp[2]:16 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:10 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:12 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:15 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:6 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:13 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:7 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [bitmap_plot] best 830850 combination reg byte a [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] zp[2]:300 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:302 [ bitmap_plot::plotter#1 ] zp[2]:81 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] zp[2]:298 [ bitmap_plot::plotter#0 ] +Uplifting [bitmap_line] best 830850 combination zp[2]:46 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:48 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:44 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:50 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:218 [ bitmap_line::dy#0 ] zp[2]:226 [ bitmap_line::sy#0 ] zp[2]:214 [ bitmap_line::dx#0 ] zp[2]:222 [ bitmap_line::sx#0 ] zp[2]:42 [ bitmap_line::y2#11 bitmap_line::y2#13 bitmap_line::y2#0 ] zp[2]:40 [ bitmap_line::x2#10 bitmap_line::x2#13 bitmap_line::x2#0 ] +Uplifting [abs_u16] best 830838 combination zp[2]:74 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] zp[2]:212 [ abs_u16::return#0 ] zp[2]:216 [ abs_u16::return#1 ] +Uplifting [sgn_u16] best 830826 combination reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:76 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp[2]:220 [ sgn_u16::return#0 ] zp[2]:224 [ sgn_u16::return#1 ] zp[2]:78 [ sgn_u16::return#4 ] +Uplifting [spline_8segB] best 813826 combination zp[2]:256 [ spline_8segB::$22 ] zp[2]:260 [ spline_8segB::$24 ] reg byte y [ spline_8segB::n#2 spline_8segB::n#1 ] reg byte x [ spline_8segB::$31 ] zp[2]:59 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] zp[2]:57 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] zp[2]:52 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] zp[2]:262 [ spline_8segB::$25 ] zp[2]:54 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] zp[2]:258 [ spline_8segB::$23 ] zp[2]:254 [ spline_8segB::j_y#0 ] zp[2]:252 [ spline_8segB::j_x#0 ] zp[2]:228 [ spline_8segB::$0 ] zp[2]:230 [ spline_8segB::$1 ] zp[2]:234 [ spline_8segB::$3 ] zp[2]:236 [ spline_8segB::$4 ] zp[2]:240 [ spline_8segB::$6 ] zp[2]:244 [ spline_8segB::$8 ] zp[2]:248 [ spline_8segB::$10 ] zp[2]:250 [ spline_8segB::$12 ] zp[2]:265 [ spline_8segB::$18 ] zp[2]:269 [ spline_8segB::$20 ] zp[2]:271 [ spline_8segB::$21 ] zp[2]:242 [ spline_8segB::b_x#0 ] zp[2]:246 [ spline_8segB::b_y#0 ] zp[2]:267 [ spline_8segB::$19 ] zp[2]:144 [ spline_8segB::p2_x#0 ] zp[2]:238 [ spline_8segB::a_y#0 ] zp[2]:232 [ spline_8segB::a_x#0 ] zp[2]:146 [ spline_8segB::p2_y#0 ] zp[2]:140 [ spline_8segB::p1_x#0 ] zp[2]:142 [ spline_8segB::p1_y#0 ] zp[2]:136 [ spline_8segB::p0_x#0 ] zp[2]:138 [ spline_8segB::p0_y#0 ] +Uplifting [bitmap_plot_spline_8seg] best 813826 combination zp[1]:61 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] zp[2]:64 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#1 ] zp[2]:62 [ bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#1 ] zp[1]:273 [ bitmap_plot_spline_8seg::$4 ] +Uplifting [mulf16s] best 813826 combination zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp[2]:282 [ mulf16s::$6 ] zp[2]:284 [ mulf16s::$11 ] zp[2]:286 [ mulf16s::$9 ] zp[2]:288 [ mulf16s::$12 ] zp[2]:68 [ mulf16s::b#4 mulf16s::b#0 mulf16s::b#1 mulf16s::b#2 mulf16s::b#3 ] zp[2]:66 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 ] zp[4]:290 [ mulf16s::return#0 ] zp[4]:152 [ mulf16s::return#2 ] zp[4]:164 [ mulf16s::return#3 ] zp[4]:178 [ mulf16s::return#4 ] zp[4]:192 [ mulf16s::return#10 ] +Uplifting [mulf16u] best 813826 combination zp[2]:274 [ mulf16u::a#0 ] zp[2]:276 [ mulf16u::b#0 ] zp[4]:305 [ mulf16u::return#0 ] zp[4]:278 [ mulf16u::return#2 ] +Uplifting [rotate] best 813210 combination zp[2]:160 [ rotate::$10 ] zp[2]:172 [ rotate::$11 ] zp[2]:186 [ rotate::$12 ] zp[2]:188 [ rotate::$5 ] zp[2]:200 [ rotate::$13 ] zp[2]:202 [ rotate::$7 ] zp[4]:156 [ rotate::$0 ] zp[4]:168 [ rotate::$2 ] zp[4]:182 [ rotate::$4 ] zp[4]:196 [ rotate::$6 ] zp[2]:204 [ rotate::yr#1 ] reg byte a [ rotate::$8 ] reg byte x [ rotate::$9 ] reg byte y [ rotate::angle#2 rotate::angle#0 rotate::angle#1 ] zp[2]:150 [ rotate::cos_a#0 ] zp[2]:176 [ rotate::sin_a#0 ] zp[2]:38 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 ] zp[2]:208 [ rotate::return_x#2 ] zp[2]:190 [ rotate::xr#1 ] zp[2]:36 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 ] zp[2]:210 [ rotate::return_y#2 ] zp[2]:162 [ rotate::xr#0 ] zp[2]:174 [ rotate::yr#0 ] zp[2]:101 [ rotate::return_x#0 ] zp[2]:103 [ rotate::return_y#0 ] zp[2]:122 [ rotate::return_x#1 ] zp[2]:124 [ rotate::return_y#1 ] +Uplifting [memset] best 813104 combination zp[2]:33 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:148 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:28 [ memset::num#2 ] zp[2]:30 [ memset::str#3 ] +Uplifting [show_letter] best 810404 combination zp[2]:26 [ show_letter::current_y#4 show_letter::current_y#11 ] reg byte a [ show_letter::$18 ] reg byte x [ show_letter::$16 ] reg byte x [ show_letter::$17 ] reg byte a [ show_letter::segment_type#0 ] zp[2]:24 [ show_letter::current_x#4 show_letter::current_x#11 ] zp[2]:93 [ show_letter::to_x#0 ] zp[2]:95 [ show_letter::to_y#0 ] zp[2]:97 [ show_letter::to_x#1 ] zp[2]:99 [ show_letter::to_y#1 ] zp[2]:105 [ show_letter::to_x#2 ] zp[2]:107 [ show_letter::to_y#2 ] zp[2]:114 [ show_letter::via_x#0 ] zp[2]:116 [ show_letter::via_y#0 ] zp[2]:118 [ show_letter::via_x#1 ] zp[2]:120 [ show_letter::via_y#1 ] zp[2]:126 [ show_letter::via_x#2 ] zp[2]:128 [ show_letter::via_y#2 ] zp[1]:23 [ show_letter::i#10 show_letter::i#1 ] zp[2]:130 [ show_letter::segment_via_x#0 ] zp[2]:132 [ show_letter::segment_via_y#0 ] zp[1]:91 [ show_letter::$21 ] zp[2]:109 [ show_letter::current_x#10 ] zp[2]:111 [ show_letter::current_y#10 ] zp[1]:83 [ show_letter::angle#0 ] +Limited combination testing to 100 combinations of 288 possible. +Uplifting [mulf_init] best 810154 combination zp[2]:16 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:10 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:12 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:15 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:6 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:13 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:7 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [bitmap_init] best 808544 combination zp[2]:21 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:89 [ bitmap_init::$5 ] zp[1]:90 [ bitmap_init::$6 ] zp[1]:87 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 809644 combination zp[2]:21 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:89 [ bitmap_init::$5 ] zp[1]:90 [ bitmap_init::$6 ] zp[1]:87 [ bitmap_init::$7 ] Limited combination testing to 100 combinations of 15360 possible. -Uplifting [main] best 804944 combination reg byte x [ main::w#4 main::w#1 ] zp[1]:2 [ main::angle#2 main::angle#1 ] -Uplifting [SplineVector16] best 804944 combination -Uplifting [SplineVector32] best 804944 combination -Uplifting [bitmap_clear] best 804944 combination -Uplifting [MOS6526_CIA] best 804944 combination -Uplifting [MOS6569_VICII] best 804944 combination -Uplifting [MOS6581_SID] best 804944 combination -Uplifting [RADIX] best 804944 combination -Uplifting [Segment] best 804944 combination -Uplifting [Segment::SegmentType] best 804944 combination -Uplifting [] best 804944 combination +Uplifting [main] best 806044 combination reg byte x [ main::w#4 main::w#1 ] zp[1]:2 [ main::angle#2 main::angle#1 ] +Uplifting [SplineVector16] best 806044 combination +Uplifting [SplineVector32] best 806044 combination +Uplifting [bitmap_clear] best 806044 combination +Uplifting [MOS6526_CIA] best 806044 combination +Uplifting [MOS6569_VICII] best 806044 combination +Uplifting [MOS6581_SID] best 806044 combination +Uplifting [RADIX] best 806044 combination +Uplifting [Segment] best 806044 combination +Uplifting [Segment::SegmentType] best 806044 combination +Uplifting [] best 806044 combination Attempting to uplift remaining variables inzp[1]:61 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] -Uplifting [bitmap_plot_spline_8seg] best 804944 combination zp[1]:61 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] -Attempting to uplift remaining variables inzp[1]:92 [ show_letter::$16 ] -Uplifting [show_letter] best 804244 combination reg byte x [ show_letter::$16 ] -Attempting to uplift remaining variables inzp[1]:114 [ show_letter::$17 ] -Uplifting [show_letter] best 803544 combination reg byte x [ show_letter::$17 ] -Attempting to uplift remaining variables inzp[1]:137 [ show_letter::segment_type#0 ] -Uplifting [show_letter] best 802644 combination reg byte a [ show_letter::segment_type#0 ] +Uplifting [bitmap_plot_spline_8seg] best 806044 combination zp[1]:61 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] +Attempting to uplift remaining variables inzp[1]:273 [ bitmap_plot_spline_8seg::$4 ] +Uplifting [bitmap_plot_spline_8seg] best 806044 combination zp[1]:273 [ bitmap_plot_spline_8seg::$4 ] Attempting to uplift remaining variables inzp[1]:23 [ show_letter::i#10 show_letter::i#1 ] -Uplifting [show_letter] best 802644 combination zp[1]:23 [ show_letter::i#10 show_letter::i#1 ] +Uplifting [show_letter] best 806044 combination zp[1]:23 [ show_letter::i#10 show_letter::i#1 ] +Attempting to uplift remaining variables inzp[1]:91 [ show_letter::$21 ] +Uplifting [show_letter] best 806044 combination zp[1]:91 [ show_letter::$21 ] Attempting to uplift remaining variables inzp[1]:83 [ show_letter::angle#0 ] -Uplifting [show_letter] best 802644 combination zp[1]:83 [ show_letter::angle#0 ] +Uplifting [show_letter] best 806044 combination zp[1]:83 [ show_letter::angle#0 ] Attempting to uplift remaining variables inzp[1]:89 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 802584 combination reg byte a [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 805984 combination reg byte a [ bitmap_init::$5 ] Attempting to uplift remaining variables inzp[1]:90 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 802524 combination reg byte a [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 805924 combination reg byte a [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp[1]:12 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 802384 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 805784 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] Attempting to uplift remaining variables inzp[1]:15 [ mulf_init::dir#2 mulf_init::dir#4 ] -Uplifting [mulf_init] best 802384 combination zp[1]:15 [ mulf_init::dir#2 mulf_init::dir#4 ] +Uplifting [mulf_init] best 805784 combination zp[1]:15 [ mulf_init::dir#2 mulf_init::dir#4 ] Attempting to uplift remaining variables inzp[1]:6 [ mulf_init::c#2 mulf_init::c#1 ] -Uplifting [mulf_init] best 802384 combination zp[1]:6 [ mulf_init::c#2 mulf_init::c#1 ] +Uplifting [mulf_init] best 805784 combination zp[1]:6 [ mulf_init::c#2 mulf_init::c#1 ] Attempting to uplift remaining variables inzp[1]:87 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 802384 combination zp[1]:87 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 805784 combination zp[1]:87 [ bitmap_init::$7 ] Attempting to uplift remaining variables inzp[1]:2 [ main::angle#2 main::angle#1 ] -Uplifting [main] best 802384 combination zp[1]:2 [ main::angle#2 main::angle#1 ] +Uplifting [main] best 805784 combination zp[1]:2 [ main::angle#2 main::angle#1 ] Coalescing zero page register [ zp[2]:46 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] ] with [ zp[2]:81 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] ] - score: 4 -Coalescing zero page register [ zp[2]:66 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 ] ] with [ zp[2]:152 [ rotate::cos_a#0 ] ] - score: 2 -Coalescing zero page register [ zp[2]:66 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 rotate::cos_a#0 ] ] with [ zp[2]:178 [ rotate::sin_a#0 ] ] - score: 2 +Coalescing zero page register [ zp[2]:66 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 ] ] with [ zp[2]:150 [ rotate::cos_a#0 ] ] - score: 2 +Coalescing zero page register [ zp[2]:66 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 rotate::cos_a#0 ] ] with [ zp[2]:176 [ rotate::sin_a#0 ] ] - score: 2 Coalescing zero page register [ zp[1]:2 [ main::angle#2 main::angle#1 ] ] with [ zp[1]:83 [ show_letter::angle#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:24 [ show_letter::current_x#4 show_letter::current_x#11 ] ] with [ zp[2]:46 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] ] - score: 1 -Coalescing zero page register [ zp[2]:24 [ show_letter::current_x#4 show_letter::current_x#11 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] ] with [ zp[2]:138 [ spline_8segB::p0_x#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:24 [ show_letter::current_x#4 show_letter::current_x#11 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] ] with [ zp[2]:136 [ spline_8segB::p0_x#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:26 [ show_letter::current_y#4 show_letter::current_y#11 ] ] with [ zp[2]:48 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] ] - score: 1 -Coalescing zero page register [ zp[2]:26 [ show_letter::current_y#4 show_letter::current_y#11 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] ] with [ zp[2]:140 [ spline_8segB::p0_y#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:28 [ memset::num#2 ] ] with [ zp[2]:150 [ memset::end#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:26 [ show_letter::current_y#4 show_letter::current_y#11 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] ] with [ zp[2]:138 [ spline_8segB::p0_y#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:28 [ memset::num#2 ] ] with [ zp[2]:148 [ memset::end#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:30 [ memset::str#3 ] ] with [ zp[2]:33 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:36 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 ] ] with [ zp[2]:97 [ show_letter::to_x#1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:36 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 show_letter::to_x#1 ] ] with [ zp[2]:119 [ show_letter::via_x#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:36 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 show_letter::to_x#1 ] ] with [ zp[2]:118 [ show_letter::via_x#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:38 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 ] ] with [ zp[2]:99 [ show_letter::to_y#1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:38 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 show_letter::to_y#1 ] ] with [ zp[2]:121 [ show_letter::via_y#1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:52 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] ] with [ zp[2]:267 [ spline_8segB::$18 ] ] - score: 1 -Coalescing zero page register [ zp[2]:54 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] ] with [ zp[2]:271 [ spline_8segB::$20 ] ] - score: 1 -Coalescing zero page register [ zp[2]:57 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] ] with [ zp[2]:250 [ spline_8segB::$10 ] ] - score: 1 -Coalescing zero page register [ zp[2]:59 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] ] with [ zp[2]:252 [ spline_8segB::$12 ] ] - score: 1 -Coalescing zero page register [ zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] ] with [ zp[4]:281 [ mulf16u::return#2 ] ] - score: 1 -Coalescing zero page register [ zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 ] ] with [ zp[4]:293 [ mulf16s::return#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:74 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] ] with [ zp[2]:214 [ abs_u16::return#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:74 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 ] ] with [ zp[2]:218 [ abs_u16::return#1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:78 [ sgn_u16::return#4 ] ] with [ zp[2]:222 [ sgn_u16::return#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:78 [ sgn_u16::return#4 sgn_u16::return#0 ] ] with [ zp[2]:226 [ sgn_u16::return#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:38 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 show_letter::to_y#1 ] ] with [ zp[2]:120 [ show_letter::via_y#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:52 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 ] ] with [ zp[2]:265 [ spline_8segB::$18 ] ] - score: 1 +Coalescing zero page register [ zp[2]:54 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 ] ] with [ zp[2]:269 [ spline_8segB::$20 ] ] - score: 1 +Coalescing zero page register [ zp[2]:57 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 ] ] with [ zp[2]:248 [ spline_8segB::$10 ] ] - score: 1 +Coalescing zero page register [ zp[2]:59 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 ] ] with [ zp[2]:250 [ spline_8segB::$12 ] ] - score: 1 +Coalescing zero page register [ zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] ] with [ zp[4]:278 [ mulf16u::return#2 ] ] - score: 1 +Coalescing zero page register [ zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 ] ] with [ zp[4]:290 [ mulf16s::return#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:74 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] ] with [ zp[2]:212 [ abs_u16::return#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:74 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 ] ] with [ zp[2]:216 [ abs_u16::return#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:78 [ sgn_u16::return#4 ] ] with [ zp[2]:220 [ sgn_u16::return#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:78 [ sgn_u16::return#4 sgn_u16::return#0 ] ] with [ zp[2]:224 [ sgn_u16::return#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:101 [ rotate::return_x#0 ] ] with [ zp[2]:105 [ show_letter::to_x#2 ] ] - score: 1 -Coalescing zero page register [ zp[2]:101 [ rotate::return_x#0 show_letter::to_x#2 ] ] with [ zp[2]:210 [ rotate::return_x#2 ] ] - score: 1 +Coalescing zero page register [ zp[2]:101 [ rotate::return_x#0 show_letter::to_x#2 ] ] with [ zp[2]:208 [ rotate::return_x#2 ] ] - score: 1 Coalescing zero page register [ zp[2]:103 [ rotate::return_y#0 ] ] with [ zp[2]:107 [ show_letter::to_y#2 ] ] - score: 1 -Coalescing zero page register [ zp[2]:103 [ rotate::return_y#0 show_letter::to_y#2 ] ] with [ zp[2]:212 [ rotate::return_y#2 ] ] - score: 1 -Coalescing zero page register [ zp[2]:109 [ show_letter::current_x#10 ] ] with [ zp[2]:146 [ spline_8segB::p2_x#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:111 [ show_letter::current_y#10 ] ] with [ zp[2]:148 [ spline_8segB::p2_y#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:123 [ rotate::return_x#1 ] ] with [ zp[2]:127 [ show_letter::via_x#2 ] ] - score: 1 -Coalescing zero page register [ zp[2]:125 [ rotate::return_y#1 ] ] with [ zp[2]:129 [ show_letter::via_y#2 ] ] - score: 1 -Coalescing zero page register [ zp[2]:131 [ show_letter::segment_via_x#0 ] ] with [ zp[2]:142 [ spline_8segB::p1_x#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:133 [ show_letter::segment_via_y#0 ] ] with [ zp[2]:144 [ spline_8segB::p1_y#0 ] ] - score: 1 -Coalescing zero page register [ zp[4]:154 [ mulf16s::return#2 ] ] with [ zp[4]:158 [ rotate::$0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:162 [ rotate::$10 ] ] with [ zp[2]:164 [ rotate::xr#0 ] ] - score: 1 -Coalescing zero page register [ zp[4]:166 [ mulf16s::return#3 ] ] with [ zp[4]:170 [ rotate::$2 ] ] - score: 1 -Coalescing zero page register [ zp[2]:174 [ rotate::$11 ] ] with [ zp[2]:176 [ rotate::yr#0 ] ] - score: 1 -Coalescing zero page register [ zp[4]:180 [ mulf16s::return#4 ] ] with [ zp[4]:184 [ rotate::$4 ] ] - score: 1 -Coalescing zero page register [ zp[2]:188 [ rotate::$12 ] ] with [ zp[2]:190 [ rotate::$5 ] ] - score: 1 -Coalescing zero page register [ zp[4]:194 [ mulf16s::return#10 ] ] with [ zp[4]:198 [ rotate::$6 ] ] - score: 1 -Coalescing zero page register [ zp[2]:202 [ rotate::$13 ] ] with [ zp[2]:204 [ rotate::$7 ] ] - score: 1 -Coalescing zero page register [ zp[2]:230 [ spline_8segB::$0 ] ] with [ zp[2]:232 [ spline_8segB::$1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:234 [ spline_8segB::a_x#0 ] ] with [ zp[2]:254 [ spline_8segB::j_x#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:236 [ spline_8segB::$3 ] ] with [ zp[2]:238 [ spline_8segB::$4 ] ] - score: 1 -Coalescing zero page register [ zp[2]:240 [ spline_8segB::a_y#0 ] ] with [ zp[2]:256 [ spline_8segB::j_y#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:242 [ spline_8segB::$6 ] ] with [ zp[2]:244 [ spline_8segB::b_x#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:246 [ spline_8segB::$8 ] ] with [ zp[2]:248 [ spline_8segB::b_y#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:258 [ spline_8segB::$22 ] ] with [ zp[2]:260 [ spline_8segB::$23 ] ] - score: 1 -Coalescing zero page register [ zp[2]:262 [ spline_8segB::$24 ] ] with [ zp[2]:264 [ spline_8segB::$25 ] ] - score: 1 -Coalescing zero page register [ zp[2]:285 [ mulf16s::$6 ] ] with [ zp[2]:287 [ mulf16s::$11 ] ] - score: 1 -Coalescing zero page register [ zp[2]:289 [ mulf16s::$9 ] ] with [ zp[2]:291 [ mulf16s::$12 ] ] - score: 1 -Coalescing zero page register [ zp[2]:301 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:305 [ bitmap_plot::plotter#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:103 [ rotate::return_y#0 show_letter::to_y#2 ] ] with [ zp[2]:210 [ rotate::return_y#2 ] ] - score: 1 +Coalescing zero page register [ zp[2]:109 [ show_letter::current_x#10 ] ] with [ zp[2]:144 [ spline_8segB::p2_x#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:111 [ show_letter::current_y#10 ] ] with [ zp[2]:146 [ spline_8segB::p2_y#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:122 [ rotate::return_x#1 ] ] with [ zp[2]:126 [ show_letter::via_x#2 ] ] - score: 1 +Coalescing zero page register [ zp[2]:124 [ rotate::return_y#1 ] ] with [ zp[2]:128 [ show_letter::via_y#2 ] ] - score: 1 +Coalescing zero page register [ zp[2]:130 [ show_letter::segment_via_x#0 ] ] with [ zp[2]:140 [ spline_8segB::p1_x#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:132 [ show_letter::segment_via_y#0 ] ] with [ zp[2]:142 [ spline_8segB::p1_y#0 ] ] - score: 1 +Coalescing zero page register [ zp[4]:152 [ mulf16s::return#2 ] ] with [ zp[4]:156 [ rotate::$0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:160 [ rotate::$10 ] ] with [ zp[2]:162 [ rotate::xr#0 ] ] - score: 1 +Coalescing zero page register [ zp[4]:164 [ mulf16s::return#3 ] ] with [ zp[4]:168 [ rotate::$2 ] ] - score: 1 +Coalescing zero page register [ zp[2]:172 [ rotate::$11 ] ] with [ zp[2]:174 [ rotate::yr#0 ] ] - score: 1 +Coalescing zero page register [ zp[4]:178 [ mulf16s::return#4 ] ] with [ zp[4]:182 [ rotate::$4 ] ] - score: 1 +Coalescing zero page register [ zp[2]:186 [ rotate::$12 ] ] with [ zp[2]:188 [ rotate::$5 ] ] - score: 1 +Coalescing zero page register [ zp[4]:192 [ mulf16s::return#10 ] ] with [ zp[4]:196 [ rotate::$6 ] ] - score: 1 +Coalescing zero page register [ zp[2]:200 [ rotate::$13 ] ] with [ zp[2]:202 [ rotate::$7 ] ] - score: 1 +Coalescing zero page register [ zp[2]:228 [ spline_8segB::$0 ] ] with [ zp[2]:230 [ spline_8segB::$1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:232 [ spline_8segB::a_x#0 ] ] with [ zp[2]:252 [ spline_8segB::j_x#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:234 [ spline_8segB::$3 ] ] with [ zp[2]:236 [ spline_8segB::$4 ] ] - score: 1 +Coalescing zero page register [ zp[2]:238 [ spline_8segB::a_y#0 ] ] with [ zp[2]:254 [ spline_8segB::j_y#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:240 [ spline_8segB::$6 ] ] with [ zp[2]:242 [ spline_8segB::b_x#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:244 [ spline_8segB::$8 ] ] with [ zp[2]:246 [ spline_8segB::b_y#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:256 [ spline_8segB::$22 ] ] with [ zp[2]:258 [ spline_8segB::$23 ] ] - score: 1 +Coalescing zero page register [ zp[2]:260 [ spline_8segB::$24 ] ] with [ zp[2]:262 [ spline_8segB::$25 ] ] - score: 1 +Coalescing zero page register [ zp[2]:282 [ mulf16s::$6 ] ] with [ zp[2]:284 [ mulf16s::$11 ] ] - score: 1 +Coalescing zero page register [ zp[2]:286 [ mulf16s::$9 ] ] with [ zp[2]:288 [ mulf16s::$12 ] ] - score: 1 +Coalescing zero page register [ zp[2]:298 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:302 [ bitmap_plot::plotter#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:24 [ show_letter::current_x#4 show_letter::current_x#11 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 spline_8segB::p0_x#0 ] ] with [ zp[2]:52 [ spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 spline_8segB::$18 ] ] - score: 1 Coalescing zero page register [ zp[2]:24 [ show_letter::current_x#4 show_letter::current_x#11 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 spline_8segB::p0_x#0 spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 spline_8segB::$18 ] ] with [ zp[2]:62 [ bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:26 [ show_letter::current_y#4 show_letter::current_y#11 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 spline_8segB::p0_y#0 ] ] with [ zp[2]:54 [ spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 spline_8segB::$20 ] ] - score: 1 Coalescing zero page register [ zp[2]:26 [ show_letter::current_y#4 show_letter::current_y#11 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 spline_8segB::p0_y#0 spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 spline_8segB::$20 ] ] with [ zp[2]:64 [ bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:36 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 show_letter::to_x#1 show_letter::via_x#1 ] ] with [ zp[2]:93 [ show_letter::to_x#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:36 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 show_letter::to_x#1 show_letter::via_x#1 show_letter::to_x#0 ] ] with [ zp[2]:115 [ show_letter::via_x#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:36 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 show_letter::to_x#1 show_letter::via_x#1 show_letter::to_x#0 ] ] with [ zp[2]:114 [ show_letter::via_x#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:38 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 show_letter::to_y#1 show_letter::via_y#1 ] ] with [ zp[2]:95 [ show_letter::to_y#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:38 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 show_letter::to_y#1 show_letter::via_y#1 show_letter::to_y#0 ] ] with [ zp[2]:117 [ show_letter::via_y#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:57 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 spline_8segB::$10 ] ] with [ zp[2]:242 [ spline_8segB::$6 spline_8segB::b_x#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:59 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 spline_8segB::$12 ] ] with [ zp[2]:246 [ spline_8segB::$8 spline_8segB::b_y#0 ] ] - score: 1 -Coalescing zero page register [ zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 ] ] with [ zp[4]:154 [ mulf16s::return#2 rotate::$0 ] ] - score: 1 -Coalescing zero page register [ zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 rotate::$0 ] ] with [ zp[4]:166 [ mulf16s::return#3 rotate::$2 ] ] - score: 1 -Coalescing zero page register [ zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 rotate::$0 mulf16s::return#3 rotate::$2 ] ] with [ zp[4]:180 [ mulf16s::return#4 rotate::$4 ] ] - score: 1 -Coalescing zero page register [ zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 rotate::$0 mulf16s::return#3 rotate::$2 mulf16s::return#4 rotate::$4 ] ] with [ zp[4]:194 [ mulf16s::return#10 rotate::$6 ] ] - score: 1 -Coalescing zero page register [ zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 rotate::$0 mulf16s::return#3 rotate::$2 mulf16s::return#4 rotate::$4 mulf16s::return#10 rotate::$6 ] ] with [ zp[4]:308 [ mulf16u::return#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:74 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 ] ] with [ zp[2]:220 [ bitmap_line::dy#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:78 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 ] ] with [ zp[2]:228 [ bitmap_line::sy#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:101 [ rotate::return_x#0 show_letter::to_x#2 rotate::return_x#2 ] ] with [ zp[2]:123 [ rotate::return_x#1 show_letter::via_x#2 ] ] - score: 1 -Coalescing zero page register [ zp[2]:103 [ rotate::return_y#0 show_letter::to_y#2 rotate::return_y#2 ] ] with [ zp[2]:125 [ rotate::return_y#1 show_letter::via_y#2 ] ] - score: 1 -Coalescing zero page register [ zp[2]:162 [ rotate::$10 rotate::xr#0 ] ] with [ zp[2]:192 [ rotate::xr#1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:174 [ rotate::$11 rotate::yr#0 ] ] with [ zp[2]:206 [ rotate::yr#1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:230 [ spline_8segB::$0 spline_8segB::$1 ] ] with [ zp[2]:234 [ spline_8segB::a_x#0 spline_8segB::j_x#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:236 [ spline_8segB::$3 spline_8segB::$4 ] ] with [ zp[2]:240 [ spline_8segB::a_y#0 spline_8segB::j_y#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:24 [ show_letter::current_x#4 show_letter::current_x#11 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 spline_8segB::p0_x#0 spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 spline_8segB::$18 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#1 ] ] with [ zp[2]:269 [ spline_8segB::$19 ] ] - score: 1 -Coalescing zero page register [ zp[2]:26 [ show_letter::current_y#4 show_letter::current_y#11 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 spline_8segB::p0_y#0 spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 spline_8segB::$20 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#1 ] ] with [ zp[2]:273 [ spline_8segB::$21 ] ] - score: 1 -Coalescing zero page register [ zp[2]:57 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 spline_8segB::$10 spline_8segB::$6 spline_8segB::b_x#0 ] ] with [ zp[2]:131 [ show_letter::segment_via_x#0 spline_8segB::p1_x#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:59 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 spline_8segB::$12 spline_8segB::$8 spline_8segB::b_y#0 ] ] with [ zp[2]:133 [ show_letter::segment_via_y#0 spline_8segB::p1_y#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:38 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 show_letter::to_y#1 show_letter::via_y#1 show_letter::to_y#0 ] ] with [ zp[2]:116 [ show_letter::via_y#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:57 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 spline_8segB::$10 ] ] with [ zp[2]:240 [ spline_8segB::$6 spline_8segB::b_x#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:59 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 spline_8segB::$12 ] ] with [ zp[2]:244 [ spline_8segB::$8 spline_8segB::b_y#0 ] ] - score: 1 +Coalescing zero page register [ zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 ] ] with [ zp[4]:152 [ mulf16s::return#2 rotate::$0 ] ] - score: 1 +Coalescing zero page register [ zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 rotate::$0 ] ] with [ zp[4]:164 [ mulf16s::return#3 rotate::$2 ] ] - score: 1 +Coalescing zero page register [ zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 rotate::$0 mulf16s::return#3 rotate::$2 ] ] with [ zp[4]:178 [ mulf16s::return#4 rotate::$4 ] ] - score: 1 +Coalescing zero page register [ zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 rotate::$0 mulf16s::return#3 rotate::$2 mulf16s::return#4 rotate::$4 ] ] with [ zp[4]:192 [ mulf16s::return#10 rotate::$6 ] ] - score: 1 +Coalescing zero page register [ zp[4]:70 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 rotate::$0 mulf16s::return#3 rotate::$2 mulf16s::return#4 rotate::$4 mulf16s::return#10 rotate::$6 ] ] with [ zp[4]:305 [ mulf16u::return#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:74 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 ] ] with [ zp[2]:218 [ bitmap_line::dy#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:78 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 ] ] with [ zp[2]:226 [ bitmap_line::sy#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:101 [ rotate::return_x#0 show_letter::to_x#2 rotate::return_x#2 ] ] with [ zp[2]:122 [ rotate::return_x#1 show_letter::via_x#2 ] ] - score: 1 +Coalescing zero page register [ zp[2]:103 [ rotate::return_y#0 show_letter::to_y#2 rotate::return_y#2 ] ] with [ zp[2]:124 [ rotate::return_y#1 show_letter::via_y#2 ] ] - score: 1 +Coalescing zero page register [ zp[2]:160 [ rotate::$10 rotate::xr#0 ] ] with [ zp[2]:190 [ rotate::xr#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:172 [ rotate::$11 rotate::yr#0 ] ] with [ zp[2]:204 [ rotate::yr#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:228 [ spline_8segB::$0 spline_8segB::$1 ] ] with [ zp[2]:232 [ spline_8segB::a_x#0 spline_8segB::j_x#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:234 [ spline_8segB::$3 spline_8segB::$4 ] ] with [ zp[2]:238 [ spline_8segB::a_y#0 spline_8segB::j_y#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:24 [ show_letter::current_x#4 show_letter::current_x#11 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 spline_8segB::p0_x#0 spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 spline_8segB::$18 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#1 ] ] with [ zp[2]:267 [ spline_8segB::$19 ] ] - score: 1 +Coalescing zero page register [ zp[2]:26 [ show_letter::current_y#4 show_letter::current_y#11 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 spline_8segB::p0_y#0 spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 spline_8segB::$20 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#1 ] ] with [ zp[2]:271 [ spline_8segB::$21 ] ] - score: 1 +Coalescing zero page register [ zp[2]:57 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 spline_8segB::$10 spline_8segB::$6 spline_8segB::b_x#0 ] ] with [ zp[2]:130 [ show_letter::segment_via_x#0 spline_8segB::p1_x#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:59 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 spline_8segB::$12 spline_8segB::$8 spline_8segB::b_y#0 ] ] with [ zp[2]:132 [ show_letter::segment_via_y#0 spline_8segB::p1_y#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:57 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 spline_8segB::$10 spline_8segB::$6 spline_8segB::b_x#0 show_letter::segment_via_x#0 spline_8segB::p1_x#0 ] ] with [ zp[2]:101 [ rotate::return_x#0 show_letter::to_x#2 rotate::return_x#2 rotate::return_x#1 show_letter::via_x#2 ] ] - score: 1 Coalescing zero page register [ zp[2]:59 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 spline_8segB::$12 spline_8segB::$8 spline_8segB::b_y#0 show_letter::segment_via_y#0 spline_8segB::p1_y#0 ] ] with [ zp[2]:103 [ rotate::return_y#0 show_letter::to_y#2 rotate::return_y#2 rotate::return_y#1 show_letter::via_y#2 ] ] - score: 1 Coalescing zero page register [ zp[2]:21 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] with [ zp[2]:4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] @@ -8640,42 +8603,44 @@ Coalescing zero page register [ zp[2]:59 [ spline_8segB::i_y#2 spline_8segB::i_y Coalescing zero page register [ zp[1]:61 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 ] ] with [ zp[1]:15 [ mulf_init::dir#2 mulf_init::dir#4 ] ] Coalescing zero page register [ zp[2]:66 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 rotate::cos_a#0 rotate::sin_a#0 ] ] with [ zp[2]:44 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] ] Coalescing zero page register [ zp[2]:68 [ mulf16s::b#4 mulf16s::b#0 mulf16s::b#1 mulf16s::b#2 mulf16s::b#3 ] ] with [ zp[2]:50 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] ] -Coalescing zero page register [ zp[2]:162 [ rotate::$10 rotate::xr#0 rotate::xr#1 ] ] with [ zp[2]:74 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ] ] -Coalescing zero page register [ zp[2]:174 [ rotate::$11 rotate::yr#0 rotate::yr#1 ] ] with [ zp[2]:76 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] ] -Coalescing zero page register [ zp[2]:188 [ rotate::$12 rotate::$5 ] ] with [ zp[2]:78 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ] ] -Coalescing zero page register [ zp[2]:216 [ bitmap_line::dx#0 ] ] with [ zp[2]:202 [ rotate::$13 rotate::$7 ] ] -Coalescing zero page register [ zp[2]:230 [ spline_8segB::$0 spline_8segB::$1 spline_8segB::a_x#0 spline_8segB::j_x#0 ] ] with [ zp[2]:224 [ bitmap_line::sx#0 ] ] -Coalescing zero page register [ zp[2]:277 [ mulf16u::a#0 ] ] with [ zp[2]:236 [ spline_8segB::$3 spline_8segB::$4 spline_8segB::a_y#0 spline_8segB::j_y#0 ] ] -Coalescing zero page register [ zp[2]:279 [ mulf16u::b#0 ] ] with [ zp[2]:258 [ spline_8segB::$22 spline_8segB::$23 ] ] -Coalescing zero page register [ zp[2]:285 [ mulf16s::$6 mulf16s::$11 ] ] with [ zp[2]:262 [ spline_8segB::$24 spline_8segB::$25 ] ] -Coalescing zero page register [ zp[2]:301 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:289 [ mulf16s::$9 mulf16s::$12 ] ] +Coalescing zero page register [ zp[1]:91 [ show_letter::$21 ] ] with [ zp[1]:87 [ bitmap_init::$7 ] ] +Coalescing zero page register [ zp[2]:160 [ rotate::$10 rotate::xr#0 rotate::xr#1 ] ] with [ zp[2]:74 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ] ] +Coalescing zero page register [ zp[2]:172 [ rotate::$11 rotate::yr#0 rotate::yr#1 ] ] with [ zp[2]:76 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] ] +Coalescing zero page register [ zp[2]:186 [ rotate::$12 rotate::$5 ] ] with [ zp[2]:78 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ] ] +Coalescing zero page register [ zp[2]:214 [ bitmap_line::dx#0 ] ] with [ zp[2]:200 [ rotate::$13 rotate::$7 ] ] +Coalescing zero page register [ zp[2]:228 [ spline_8segB::$0 spline_8segB::$1 spline_8segB::a_x#0 spline_8segB::j_x#0 ] ] with [ zp[2]:222 [ bitmap_line::sx#0 ] ] +Coalescing zero page register [ zp[2]:274 [ mulf16u::a#0 ] ] with [ zp[2]:234 [ spline_8segB::$3 spline_8segB::$4 spline_8segB::a_y#0 spline_8segB::j_y#0 ] ] +Coalescing zero page register [ zp[2]:276 [ mulf16u::b#0 ] ] with [ zp[2]:256 [ spline_8segB::$22 spline_8segB::$23 ] ] +Coalescing zero page register [ zp[2]:282 [ mulf16s::$6 mulf16s::$11 ] ] with [ zp[2]:260 [ spline_8segB::$24 spline_8segB::$25 ] ] +Coalescing zero page register [ zp[2]:298 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:286 [ mulf16s::$9 mulf16s::$12 ] ] Coalescing zero page register [ zp[2]:36 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 show_letter::to_x#1 show_letter::via_x#1 show_letter::to_x#0 show_letter::via_x#0 ] ] with [ zp[2]:21 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] Coalescing zero page register [ zp[2]:38 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 show_letter::to_y#1 show_letter::via_y#1 show_letter::to_y#0 show_letter::via_y#0 ] ] with [ zp[2]:28 [ memset::num#2 memset::end#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] ] Coalescing zero page register [ zp[2]:57 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 spline_8segB::$10 spline_8segB::$6 spline_8segB::b_x#0 show_letter::segment_via_x#0 spline_8segB::p1_x#0 rotate::return_x#0 show_letter::to_x#2 rotate::return_x#2 rotate::return_x#1 show_letter::via_x#2 bitmap_line::x2#10 bitmap_line::x2#13 bitmap_line::x2#0 ] ] with [ zp[2]:30 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] ] -Coalescing zero page register [ zp[1]:87 [ bitmap_init::$7 ] ] with [ zp[1]:23 [ show_letter::i#10 show_letter::i#1 mulf_init::c#2 mulf_init::c#1 ] ] -Coalescing zero page register [ zp[2]:301 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 mulf16s::$9 mulf16s::$12 ] ] with [ zp[2]:277 [ mulf16u::a#0 spline_8segB::$3 spline_8segB::$4 spline_8segB::a_y#0 spline_8segB::j_y#0 ] ] -Coalescing zero page register [ zp[2]:303 [ bitmap_plot::$0 ] ] with [ zp[2]:174 [ rotate::$11 rotate::yr#0 rotate::yr#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] ] -Allocated (was zp[2]:24) zp[2]:3 [ show_letter::current_x#4 show_letter::current_x#11 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 spline_8segB::p0_x#0 spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 spline_8segB::$18 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#1 spline_8segB::$19 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Allocated (was zp[2]:26) zp[2]:5 [ show_letter::current_y#4 show_letter::current_y#11 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 spline_8segB::p0_y#0 spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 spline_8segB::$20 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#1 spline_8segB::$21 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] -Allocated (was zp[2]:36) zp[2]:7 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 show_letter::to_x#1 show_letter::via_x#1 show_letter::to_x#0 show_letter::via_x#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] -Allocated (was zp[2]:38) zp[2]:9 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 show_letter::to_y#1 show_letter::via_y#1 show_letter::to_y#0 show_letter::via_y#0 memset::num#2 memset::end#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] -Allocated (was zp[2]:57) zp[2]:11 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 spline_8segB::$10 spline_8segB::$6 spline_8segB::b_x#0 show_letter::segment_via_x#0 spline_8segB::p1_x#0 rotate::return_x#0 show_letter::to_x#2 rotate::return_x#2 rotate::return_x#1 show_letter::via_x#2 bitmap_line::x2#10 bitmap_line::x2#13 bitmap_line::x2#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] -Allocated (was zp[2]:59) zp[2]:13 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 spline_8segB::$12 spline_8segB::$8 spline_8segB::b_y#0 show_letter::segment_via_y#0 spline_8segB::p1_y#0 rotate::return_y#0 show_letter::to_y#2 rotate::return_y#2 rotate::return_y#1 show_letter::via_y#2 bitmap_line::y2#11 bitmap_line::y2#13 bitmap_line::y2#0 ] -Allocated (was zp[1]:61) zp[1]:15 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 mulf_init::dir#2 mulf_init::dir#4 ] +Coalescing zero page register [ zp[1]:91 [ show_letter::$21 bitmap_init::$7 ] ] with [ zp[1]:61 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 mulf_init::dir#2 mulf_init::dir#4 ] ] +Coalescing zero page register [ zp[2]:298 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 mulf16s::$9 mulf16s::$12 ] ] with [ zp[2]:274 [ mulf16u::a#0 spline_8segB::$3 spline_8segB::$4 spline_8segB::a_y#0 spline_8segB::j_y#0 ] ] +Coalescing zero page register [ zp[2]:300 [ bitmap_plot::$0 ] ] with [ zp[2]:172 [ rotate::$11 rotate::yr#0 rotate::yr#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] ] +Allocated (was zp[1]:23) zp[1]:3 [ show_letter::i#10 show_letter::i#1 mulf_init::c#2 mulf_init::c#1 ] +Allocated (was zp[2]:24) zp[2]:4 [ show_letter::current_x#4 show_letter::current_x#11 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 spline_8segB::p0_x#0 spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 spline_8segB::$18 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#1 spline_8segB::$19 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Allocated (was zp[2]:26) zp[2]:6 [ show_letter::current_y#4 show_letter::current_y#11 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 spline_8segB::p0_y#0 spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 spline_8segB::$20 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#1 spline_8segB::$21 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] +Allocated (was zp[2]:36) zp[2]:8 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 show_letter::to_x#1 show_letter::via_x#1 show_letter::to_x#0 show_letter::via_x#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] +Allocated (was zp[2]:38) zp[2]:10 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 show_letter::to_y#1 show_letter::via_y#1 show_letter::to_y#0 show_letter::via_y#0 memset::num#2 memset::end#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] +Allocated (was zp[2]:57) zp[2]:12 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 spline_8segB::$10 spline_8segB::$6 spline_8segB::b_x#0 show_letter::segment_via_x#0 spline_8segB::p1_x#0 rotate::return_x#0 show_letter::to_x#2 rotate::return_x#2 rotate::return_x#1 show_letter::via_x#2 bitmap_line::x2#10 bitmap_line::x2#13 bitmap_line::x2#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] +Allocated (was zp[2]:59) zp[2]:14 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 spline_8segB::$12 spline_8segB::$8 spline_8segB::b_y#0 show_letter::segment_via_y#0 spline_8segB::p1_y#0 rotate::return_y#0 show_letter::to_y#2 rotate::return_y#2 rotate::return_y#1 show_letter::via_y#2 bitmap_line::y2#11 bitmap_line::y2#13 bitmap_line::y2#0 ] Allocated (was zp[2]:66) zp[2]:16 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 rotate::cos_a#0 rotate::sin_a#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] Allocated (was zp[2]:68) zp[2]:18 [ mulf16s::b#4 mulf16s::b#0 mulf16s::b#1 mulf16s::b#2 mulf16s::b#3 bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] Allocated (was zp[4]:70) zp[4]:20 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 rotate::$0 mulf16s::return#3 rotate::$2 mulf16s::return#4 rotate::$4 mulf16s::return#10 rotate::$6 mulf16u::return#0 ] -Allocated (was zp[1]:87) zp[1]:24 [ bitmap_init::$7 show_letter::i#10 show_letter::i#1 mulf_init::c#2 mulf_init::c#1 ] +Allocated (was zp[1]:91) zp[1]:24 [ show_letter::$21 bitmap_init::$7 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 mulf_init::dir#2 mulf_init::dir#4 ] Allocated (was zp[2]:109) zp[2]:25 [ show_letter::current_x#10 spline_8segB::p2_x#0 ] Allocated (was zp[2]:111) zp[2]:27 [ show_letter::current_y#10 spline_8segB::p2_y#0 ] -Allocated (was zp[2]:162) zp[2]:29 [ rotate::$10 rotate::xr#0 rotate::xr#1 abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ] -Allocated (was zp[2]:188) zp[2]:31 [ rotate::$12 rotate::$5 sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ] -Allocated (was zp[2]:216) zp[2]:33 [ bitmap_line::dx#0 rotate::$13 rotate::$7 ] -Allocated (was zp[2]:230) zp[2]:35 [ spline_8segB::$0 spline_8segB::$1 spline_8segB::a_x#0 spline_8segB::j_x#0 bitmap_line::sx#0 ] -Allocated (was zp[2]:279) zp[2]:37 [ mulf16u::b#0 spline_8segB::$22 spline_8segB::$23 ] -Allocated (was zp[2]:285) zp[2]:39 [ mulf16s::$6 mulf16s::$11 spline_8segB::$24 spline_8segB::$25 ] -Allocated (was zp[2]:301) zp[2]:41 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 mulf16s::$9 mulf16s::$12 mulf16u::a#0 spline_8segB::$3 spline_8segB::$4 spline_8segB::a_y#0 spline_8segB::j_y#0 ] -Allocated (was zp[2]:303) zp[2]:43 [ bitmap_plot::$0 rotate::$11 rotate::yr#0 rotate::yr#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] +Allocated (was zp[2]:160) zp[2]:29 [ rotate::$10 rotate::xr#0 rotate::xr#1 abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ] +Allocated (was zp[2]:186) zp[2]:31 [ rotate::$12 rotate::$5 sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ] +Allocated (was zp[2]:214) zp[2]:33 [ bitmap_line::dx#0 rotate::$13 rotate::$7 ] +Allocated (was zp[2]:228) zp[2]:35 [ spline_8segB::$0 spline_8segB::$1 spline_8segB::a_x#0 spline_8segB::j_x#0 bitmap_line::sx#0 ] +Allocated (was zp[1]:273) zp[1]:37 [ bitmap_plot_spline_8seg::$4 ] +Allocated (was zp[2]:276) zp[2]:38 [ mulf16u::b#0 spline_8segB::$22 spline_8segB::$23 ] +Allocated (was zp[2]:282) zp[2]:40 [ mulf16s::$6 mulf16s::$11 spline_8segB::$24 spline_8segB::$25 ] +Allocated (was zp[2]:298) zp[2]:42 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 mulf16s::$9 mulf16s::$12 mulf16u::a#0 spline_8segB::$3 spline_8segB::$4 spline_8segB::a_y#0 spline_8segB::j_y#0 ] +Allocated (was zp[2]:300) zp[2]:44 [ bitmap_plot::$0 rotate::$11 rotate::yr#0 rotate::yr#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -8835,17 +8800,17 @@ main: { // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { // x/2 - .label c = $18 + .label c = 3 // Counter used for determining x%2==0 - .label sqr1_hi = 3 + .label sqr1_hi = 4 // Fill mulf_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4 - .label sqr = $b - .label sqr1_lo = 7 + .label sqr = $c + .label sqr1_lo = 8 // Decrease or increase x_255 - initially we decrease - .label sqr2_hi = 9 - .label sqr2_lo = 5 + .label sqr2_hi = $a + .label sqr2_lo = 6 //Start with g(0)=f(255) - .label dir = $f + .label dir = $18 // [24] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] __b1_from_mulf_init: // [24] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuxx=vbuc1 @@ -9041,7 +9006,7 @@ mulf_init: { // Initialize bitmap plotting tables bitmap_init: { .label __7 = $18 - .label yoffs = 7 + .label yoffs = 8 // [53] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] __b1_from_bitmap_init: // [53] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 @@ -9154,16 +9119,16 @@ bitmap_init: { bitmap_clear: { .const col = WHITE<<4 // [75] call memset - // [137] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + // [135] phi from bitmap_clear to memset [phi:bitmap_clear->memset] memset_from_bitmap_clear: - // [137] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 + // [135] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 ldx #col - // [137] phi (void*) memset::str#3 = (void*)(const nomodify byte*) BITMAP_SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 + // [135] phi (void*) memset::str#3 = (void*)(const nomodify byte*) BITMAP_SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 lda #BITMAP_SCREEN sta.z memset.str+1 - // [137] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 + // [135] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 lda #<$3e8 sta.z memset.num lda #>$3e8 @@ -9175,16 +9140,16 @@ bitmap_clear: { // bitmap_clear::@1 __b1: // [77] call memset - // [137] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + // [135] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] memset_from___b1: - // [137] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 + // [135] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 ldx #0 - // [137] phi (void*) memset::str#3 = (void*)(const nomodify byte*) BITMAP_GRAPHICS [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 + // [135] phi (void*) memset::str#3 = (void*)(const nomodify byte*) BITMAP_GRAPHICS [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 lda #BITMAP_GRAPHICS sta.z memset.str+1 - // [137] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 + // [135] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 lda #<$1f40 sta.z memset.num lda #>$1f40 @@ -9200,21 +9165,22 @@ bitmap_clear: { // show_letter(byte zp(2) angle) show_letter: { .label angle = 2 - .label to_x = 7 - .label to_y = 9 - .label to_x_1 = $b - .label to_y_1 = $d - .label via_x = 7 - .label via_y = 9 - .label via_x_1 = $b - .label via_y_1 = $d - .label segment_via_x = $b - .label segment_via_y = $d - .label i = $18 - .label current_x = 3 - .label current_y = 5 + .label to_x = 8 + .label to_y = $a + .label to_x_1 = $c + .label to_y_1 = $e + .label via_x = 8 + .label via_y = $a + .label via_x_1 = $c + .label via_y_1 = $e + .label segment_via_x = $c + .label segment_via_y = $e + .label i = 3 + .label current_x = 4 + .label current_y = 6 .label current_x_1 = $19 .label current_y_1 = $1b + .label __21 = $18 // [80] phi from show_letter to show_letter::@1 [phi:show_letter->show_letter::@1] __b1_from_show_letter: // [80] phi (signed word) show_letter::current_y#4 = (signed word) 0 [phi:show_letter->show_letter::@1#0] -- vwsz1=vwsc1 @@ -9233,12 +9199,14 @@ show_letter: { jmp __b1 // show_letter::@1 __b1: - // [81] (byte~) show_letter::$19 ← (byte) show_letter::i#10 << (byte) 3 -- vbuaa=vbuz1_rol_3 + // [81] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3 -- vbuz1=vbuz2_rol_3 lda.z i asl asl asl - // [82] (byte~) show_letter::$16 ← (byte~) show_letter::$19 + (byte) show_letter::i#10 -- vbuxx=vbuaa_plus_vbuz1 + sta.z __21 + // [82] (byte~) show_letter::$16 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 -- vbuxx=vbuz1_plus_vbuz2 + lda.z __21 clc adc.z i tax @@ -9273,11 +9241,11 @@ show_letter: { // [89] (byte) rotate::angle#0 ← (byte) show_letter::angle#0 -- vbuyy=vbuz1 ldy.z angle // [90] call rotate - // [146] phi from show_letter::@1 to rotate [phi:show_letter::@1->rotate] + // [144] phi from show_letter::@1 to rotate [phi:show_letter::@1->rotate] rotate_from___b1: - // [146] phi (signed word) rotate::vector_y#2 = (signed word) rotate::vector_y#0 [phi:show_letter::@1->rotate#0] -- register_copy - // [146] phi (signed word) rotate::vector_x#2 = (signed word) rotate::vector_x#0 [phi:show_letter::@1->rotate#1] -- register_copy - // [146] phi (byte) rotate::angle#2 = (byte) rotate::angle#0 [phi:show_letter::@1->rotate#2] -- register_copy + // [144] phi (signed word) rotate::vector_y#2 = (signed word) rotate::vector_y#0 [phi:show_letter::@1->rotate#0] -- register_copy + // [144] phi (signed word) rotate::vector_x#2 = (signed word) rotate::vector_x#0 [phi:show_letter::@1->rotate#1] -- register_copy + // [144] phi (byte) rotate::angle#2 = (byte) rotate::angle#0 [phi:show_letter::@1->rotate#2] -- register_copy jsr rotate // [91] (signed word) rotate::return_x#0 ← (signed word) rotate::return_x#2 // [92] (signed word) rotate::return_y#0 ← (signed word) rotate::return_y#2 @@ -9302,26 +9270,22 @@ show_letter: { lda.z to_y_1+1 adc #>$64 sta.z current_y_1+1 - // [97] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3 -- vbuaa=vbuz1_rol_3 - lda.z i - asl - asl - asl - // [98] (byte~) show_letter::$17 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 -- vbuxx=vbuaa_plus_vbuz1 + // [97] (byte~) show_letter::$17 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 -- vbuxx=vbuz1_plus_vbuz2 + lda.z __21 clc adc.z i tax - // [99] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$17) -- vwsz1=pwsc1_derefidx_vbuxx + // [98] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$17) -- vwsz1=pwsc1_derefidx_vbuxx lda letter_c+OFFSET_STRUCT_SEGMENT_VIA,x sta.z via_x lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+1,x sta.z via_x+1 - // [100] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17) -- vwsz1=pwsc1_derefidx_vbuxx + // [99] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17) -- vwsz1=pwsc1_derefidx_vbuxx lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y,x sta.z via_y lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x sta.z via_y+1 - // [101] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 -- vwsz1=vwsz1_minus_vbsc1 + // [100] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 -- vwsz1=vwsz1_minus_vbsc1 lda.z via_x sec sbc #$32 @@ -9329,7 +9293,7 @@ show_letter: { lda.z via_x+1 sbc #>$32 sta.z via_x+1 - // [102] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 -- vwsz1=vwsz1_minus_vwsc1 + // [101] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 -- vwsz1=vwsz1_minus_vwsc1 lda.z via_y sec sbc #<$96 @@ -9337,25 +9301,25 @@ show_letter: { lda.z via_y+1 sbc #>$96 sta.z via_y+1 - // [103] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 - // [104] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 - // [105] (byte) rotate::angle#1 ← (byte) show_letter::angle#0 -- vbuyy=vbuz1 + // [102] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 + // [103] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 + // [104] (byte) rotate::angle#1 ← (byte) show_letter::angle#0 -- vbuyy=vbuz1 ldy.z angle - // [106] call rotate - // [146] phi from show_letter::@6 to rotate [phi:show_letter::@6->rotate] + // [105] call rotate + // [144] phi from show_letter::@6 to rotate [phi:show_letter::@6->rotate] rotate_from___b6: - // [146] phi (signed word) rotate::vector_y#2 = (signed word) rotate::vector_y#1 [phi:show_letter::@6->rotate#0] -- register_copy - // [146] phi (signed word) rotate::vector_x#2 = (signed word) rotate::vector_x#1 [phi:show_letter::@6->rotate#1] -- register_copy - // [146] phi (byte) rotate::angle#2 = (byte) rotate::angle#1 [phi:show_letter::@6->rotate#2] -- register_copy + // [144] phi (signed word) rotate::vector_y#2 = (signed word) rotate::vector_y#1 [phi:show_letter::@6->rotate#0] -- register_copy + // [144] phi (signed word) rotate::vector_x#2 = (signed word) rotate::vector_x#1 [phi:show_letter::@6->rotate#1] -- register_copy + // [144] phi (byte) rotate::angle#2 = (byte) rotate::angle#1 [phi:show_letter::@6->rotate#2] -- register_copy jsr rotate - // [107] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 - // [108] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 + // [106] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 + // [107] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 jmp __b7 // show_letter::@7 __b7: - // [109] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 - // [110] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 - // [111] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 -- vwsz1=vwsz1_plus_vbsc1 + // [108] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 + // [109] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 + // [110] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 -- vwsz1=vwsz1_plus_vbsc1 lda.z segment_via_x clc adc #<$64 @@ -9363,7 +9327,7 @@ show_letter: { lda.z segment_via_x+1 adc #>$64 sta.z segment_via_x+1 - // [112] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 -- vwsz1=vwsz1_plus_vbsc1 + // [111] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 -- vwsz1=vwsz1_plus_vbsc1 lda.z segment_via_y clc adc #<$64 @@ -9371,71 +9335,67 @@ show_letter: { lda.z segment_via_y+1 adc #>$64 sta.z segment_via_y+1 - // [113] (byte~) show_letter::$23 ← (byte) show_letter::i#10 << (byte) 3 -- vbuaa=vbuz1_rol_3 - lda.z i - asl - asl - asl - // [114] (byte~) show_letter::$18 ← (byte~) show_letter::$23 + (byte) show_letter::i#10 -- vbuaa=vbuaa_plus_vbuz1 + // [112] (byte~) show_letter::$18 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 -- vbuaa=vbuz1_plus_vbuz2 + lda.z __21 clc adc.z i - // [115] (byte) show_letter::segment_type#0 ← *((byte*)(const struct Segment*) letter_c + (byte~) show_letter::$18) -- vbuaa=pbuc1_derefidx_vbuaa + // [113] (byte) show_letter::segment_type#0 ← *((byte*)(const struct Segment*) letter_c + (byte~) show_letter::$18) -- vbuaa=pbuc1_derefidx_vbuaa tay lda letter_c,y - // [116] if((byte) show_letter::segment_type#0==(const byte) MOVE_TO) goto show_letter::@3 -- vbuaa_eq_vbuc1_then_la1 + // [114] if((byte) show_letter::segment_type#0==(const byte) MOVE_TO) goto show_letter::@3 -- vbuaa_eq_vbuc1_then_la1 cmp #MOVE_TO beq __b3 jmp __b4 // show_letter::@4 __b4: - // [117] if((byte) show_letter::segment_type#0==(const byte) SPLINE_TO) goto show_letter::@2 -- vbuaa_eq_vbuc1_then_la1 + // [115] if((byte) show_letter::segment_type#0==(const byte) SPLINE_TO) goto show_letter::@2 -- vbuaa_eq_vbuc1_then_la1 cmp #SPLINE_TO beq __b2 jmp __b5 // show_letter::@5 __b5: - // [118] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 - // [119] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 - // [120] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 -- vwuz1=vwuz2 + // [116] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 + // [117] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 + // [118] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 -- vwuz1=vwuz2 lda.z current_x_1 sta.z bitmap_line.x2 lda.z current_x_1+1 sta.z bitmap_line.x2+1 - // [121] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 -- vwuz1=vwuz2 + // [119] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 -- vwuz1=vwuz2 lda.z current_y_1 sta.z bitmap_line.y2 lda.z current_y_1+1 sta.z bitmap_line.y2+1 - // [122] call bitmap_line - // [184] phi from show_letter::@5 to bitmap_line [phi:show_letter::@5->bitmap_line] + // [120] call bitmap_line + // [182] phi from show_letter::@5 to bitmap_line [phi:show_letter::@5->bitmap_line] bitmap_line_from___b5: - // [184] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#0 [phi:show_letter::@5->bitmap_line#0] -- register_copy - // [184] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#0 [phi:show_letter::@5->bitmap_line#1] -- register_copy - // [184] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#0 [phi:show_letter::@5->bitmap_line#2] -- register_copy - // [184] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#0 [phi:show_letter::@5->bitmap_line#3] -- register_copy + // [182] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#0 [phi:show_letter::@5->bitmap_line#0] -- register_copy + // [182] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#0 [phi:show_letter::@5->bitmap_line#1] -- register_copy + // [182] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#0 [phi:show_letter::@5->bitmap_line#2] -- register_copy + // [182] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#0 [phi:show_letter::@5->bitmap_line#3] -- register_copy jsr bitmap_line jmp __b3 // show_letter::@3 __b3: - // [123] (byte) show_letter::i#1 ← ++ (byte) show_letter::i#10 -- vbuz1=_inc_vbuz1 + // [121] (byte) show_letter::i#1 ← ++ (byte) show_letter::i#10 -- vbuz1=_inc_vbuz1 inc.z i - // [124] if((byte) show_letter::i#1!=(byte) $16) goto show_letter::@9 -- vbuz1_neq_vbuc1_then_la1 + // [122] if((byte) show_letter::i#1!=(byte) $16) goto show_letter::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$16 cmp.z i bne __b9 jmp __breturn // show_letter::@return __breturn: - // [125] return + // [123] return rts // show_letter::@9 __b9: - // [126] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 -- vwsz1=vwsz2 + // [124] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 -- vwsz1=vwsz2 lda.z current_x_1 sta.z current_x lda.z current_x_1+1 sta.z current_x+1 - // [127] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 -- vwsz1=vwsz2 + // [125] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 -- vwsz1=vwsz2 lda.z current_y_1 sta.z current_y lda.z current_y_1+1 @@ -9448,32 +9408,32 @@ show_letter: { jmp __b1 // show_letter::@2 __b2: - // [128] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 - // [129] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 - // [130] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 - // [131] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 - // [132] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 - // [133] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 - // [134] call spline_8segB + // [126] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 + // [127] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 + // [128] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 + // [129] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 + // [130] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 + // [131] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 + // [132] call spline_8segB jsr spline_8segB - // [135] phi from show_letter::@2 to show_letter::@8 [phi:show_letter::@2->show_letter::@8] + // [133] phi from show_letter::@2 to show_letter::@8 [phi:show_letter::@2->show_letter::@8] __b8_from___b2: jmp __b8 // show_letter::@8 __b8: - // [136] call bitmap_plot_spline_8seg + // [134] call bitmap_plot_spline_8seg jsr bitmap_plot_spline_8seg jmp __b3 } // memset // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. -// memset(void* zp($b) str, byte register(X) c, word zp(9) num) +// memset(void* zp($c) str, byte register(X) c, word zp($a) num) memset: { - .label end = 9 - .label dst = $b - .label num = 9 - .label str = $b - // [138] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + .label end = $a + .label dst = $c + .label num = $a + .label str = $c + // [136] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 lda.z num bne !+ lda.z num+1 @@ -9482,7 +9442,7 @@ memset: { jmp __b1 // memset::@1 __b1: - // [139] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 + // [137] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 lda.z end clc adc.z str @@ -9490,15 +9450,15 @@ memset: { lda.z end+1 adc.z str+1 sta.z end+1 - // [140] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 - // [141] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] + // [138] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 + // [139] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] __b2_from___b1: __b2_from___b3: - // [141] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy + // [139] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy jmp __b2 // memset::@2 __b2: - // [142] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 + // [140] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 lda.z dst+1 cmp.z end+1 bne __b3 @@ -9508,15 +9468,15 @@ memset: { jmp __breturn // memset::@return __breturn: - // [143] return + // [141] return rts // memset::@3 __b3: - // [144] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuxx + // [142] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuxx txa ldy #0 sta (dst),y - // [145] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [143] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 @@ -9525,7 +9485,7 @@ memset: { } // rotate // 2D-rotate a vector by an angle -// rotate(signed word zp(7) vector_x, signed word zp(9) vector_y, byte register(Y) angle) +// rotate(signed word zp(8) vector_x, signed word zp($a) vector_y, byte register(Y) angle) rotate: { .label __0 = $14 .label __2 = $14 @@ -9534,18 +9494,18 @@ rotate: { .label __6 = $14 .label __7 = $21 .label __10 = $1d - .label __11 = $2b + .label __11 = $2c .label __12 = $1f .label __13 = $21 - .label vector_x = 7 - .label vector_y = 9 - .label return_x = $b - .label return_y = $d + .label vector_x = 8 + .label vector_y = $a + .label return_x = $c + .label return_y = $e .label cos_a = $10 .label xr = $1d - .label yr = $2b + .label yr = $2c .label sin_a = $10 - // [147] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) -- vwsz1=_sword_pbsc1_derefidx_vbuyy + // [145] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) -- vwsz1=_sword_pbsc1_derefidx_vbuyy lda COS,y sta.z cos_a ora #$7f @@ -9553,57 +9513,57 @@ rotate: { lda #0 !: sta.z cos_a+1 - // [148] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 - // [149] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 -- vwsz1=vwsz2 + // [146] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 + // [147] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 -- vwsz1=vwsz2 lda.z vector_x sta.z mulf16s.b lda.z vector_x+1 sta.z mulf16s.b+1 - // [150] call mulf16s - // [290] phi from rotate to mulf16s [phi:rotate->mulf16s] + // [148] call mulf16s + // [287] phi from rotate to mulf16s [phi:rotate->mulf16s] mulf16s_from_rotate: - // [290] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#0 [phi:rotate->mulf16s#0] -- register_copy - // [290] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#0 [phi:rotate->mulf16s#1] -- register_copy + // [287] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#0 [phi:rotate->mulf16s#0] -- register_copy + // [287] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#0 [phi:rotate->mulf16s#1] -- register_copy jsr mulf16s - // [151] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 + // [149] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 jmp __b1 // rotate::@1 __b1: - // [152] (signed dword~) rotate::$0 ← (signed dword) mulf16s::return#2 - // [153] (signed word~) rotate::$10 ← (signed word)(signed dword~) rotate::$0 -- vwsz1=_sword_vdsz2 + // [150] (signed dword~) rotate::$0 ← (signed dword) mulf16s::return#2 + // [151] (signed word~) rotate::$10 ← (signed word)(signed dword~) rotate::$0 -- vwsz1=_sword_vdsz2 lda.z __0 sta.z __10 lda.z __0+1 sta.z __10+1 - // [154] (signed word) rotate::xr#0 ← (signed word~) rotate::$10 << (byte) 1 -- vwsz1=vwsz1_rol_1 + // [152] (signed word) rotate::xr#0 ← (signed word~) rotate::$10 << (byte) 1 -- vwsz1=vwsz1_rol_1 asl.z xr rol.z xr+1 - // [155] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 - // [156] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 -- vwsz1=vwsz2 + // [153] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 + // [154] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 -- vwsz1=vwsz2 lda.z vector_y sta.z mulf16s.b lda.z vector_y+1 sta.z mulf16s.b+1 - // [157] call mulf16s - // [290] phi from rotate::@1 to mulf16s [phi:rotate::@1->mulf16s] + // [155] call mulf16s + // [287] phi from rotate::@1 to mulf16s [phi:rotate::@1->mulf16s] mulf16s_from___b1: - // [290] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#1 [phi:rotate::@1->mulf16s#0] -- register_copy - // [290] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#1 [phi:rotate::@1->mulf16s#1] -- register_copy + // [287] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#1 [phi:rotate::@1->mulf16s#0] -- register_copy + // [287] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#1 [phi:rotate::@1->mulf16s#1] -- register_copy jsr mulf16s - // [158] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 + // [156] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 jmp __b2 // rotate::@2 __b2: - // [159] (signed dword~) rotate::$2 ← (signed dword) mulf16s::return#3 - // [160] (signed word~) rotate::$11 ← (signed word)(signed dword~) rotate::$2 -- vwsz1=_sword_vdsz2 + // [157] (signed dword~) rotate::$2 ← (signed dword) mulf16s::return#3 + // [158] (signed word~) rotate::$11 ← (signed word)(signed dword~) rotate::$2 -- vwsz1=_sword_vdsz2 lda.z __2 sta.z __11 lda.z __2+1 sta.z __11+1 - // [161] (signed word) rotate::yr#0 ← (signed word~) rotate::$11 << (byte) 1 -- vwsz1=vwsz1_rol_1 + // [159] (signed word) rotate::yr#0 ← (signed word~) rotate::$11 << (byte) 1 -- vwsz1=vwsz1_rol_1 asl.z yr rol.z yr+1 - // [162] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) -- vwsz1=_sword_pbsc1_derefidx_vbuyy + // [160] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) -- vwsz1=_sword_pbsc1_derefidx_vbuyy // signed fixed[8.8] lda SIN,y sta.z sin_a @@ -9612,32 +9572,32 @@ rotate: { lda #0 !: sta.z sin_a+1 - // [163] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 - // [164] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 -- vwsz1=vwsz2 + // [161] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 + // [162] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 -- vwsz1=vwsz2 lda.z vector_y sta.z mulf16s.b lda.z vector_y+1 sta.z mulf16s.b+1 - // [165] call mulf16s - // [290] phi from rotate::@2 to mulf16s [phi:rotate::@2->mulf16s] + // [163] call mulf16s + // [287] phi from rotate::@2 to mulf16s [phi:rotate::@2->mulf16s] mulf16s_from___b2: - // [290] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#2 [phi:rotate::@2->mulf16s#0] -- register_copy - // [290] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#2 [phi:rotate::@2->mulf16s#1] -- register_copy + // [287] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#2 [phi:rotate::@2->mulf16s#0] -- register_copy + // [287] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#2 [phi:rotate::@2->mulf16s#1] -- register_copy jsr mulf16s - // [166] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 + // [164] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 jmp __b3 // rotate::@3 __b3: - // [167] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#4 - // [168] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$4 -- vwsz1=_sword_vdsz2 + // [165] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#4 + // [166] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$4 -- vwsz1=_sword_vdsz2 lda.z __4 sta.z __12 lda.z __4+1 sta.z __12+1 - // [169] (signed word~) rotate::$5 ← (signed word~) rotate::$12 << (byte) 1 -- vwsz1=vwsz1_rol_1 + // [167] (signed word~) rotate::$5 ← (signed word~) rotate::$12 << (byte) 1 -- vwsz1=vwsz1_rol_1 asl.z __5 rol.z __5+1 - // [170] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$5 -- vwsz1=vwsz1_minus_vwsz2 + // [168] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$5 -- vwsz1=vwsz1_minus_vwsz2 // signed fixed[0.7] lda.z xr sec @@ -9646,32 +9606,32 @@ rotate: { lda.z xr+1 sbc.z __5+1 sta.z xr+1 - // [171] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 - // [172] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 -- vwsz1=vwsz2 + // [169] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 + // [170] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 -- vwsz1=vwsz2 lda.z vector_x sta.z mulf16s.b lda.z vector_x+1 sta.z mulf16s.b+1 - // [173] call mulf16s - // [290] phi from rotate::@3 to mulf16s [phi:rotate::@3->mulf16s] + // [171] call mulf16s + // [287] phi from rotate::@3 to mulf16s [phi:rotate::@3->mulf16s] mulf16s_from___b3: - // [290] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#3 [phi:rotate::@3->mulf16s#0] -- register_copy - // [290] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#3 [phi:rotate::@3->mulf16s#1] -- register_copy + // [287] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#3 [phi:rotate::@3->mulf16s#0] -- register_copy + // [287] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#3 [phi:rotate::@3->mulf16s#1] -- register_copy jsr mulf16s - // [174] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 + // [172] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 jmp __b4 // rotate::@4 __b4: - // [175] (signed dword~) rotate::$6 ← (signed dword) mulf16s::return#10 - // [176] (signed word~) rotate::$13 ← (signed word)(signed dword~) rotate::$6 -- vwsz1=_sword_vdsz2 + // [173] (signed dword~) rotate::$6 ← (signed dword) mulf16s::return#10 + // [174] (signed word~) rotate::$13 ← (signed word)(signed dword~) rotate::$6 -- vwsz1=_sword_vdsz2 lda.z __6 sta.z __13 lda.z __6+1 sta.z __13+1 - // [177] (signed word~) rotate::$7 ← (signed word~) rotate::$13 << (byte) 1 -- vwsz1=vwsz1_rol_1 + // [175] (signed word~) rotate::$7 ← (signed word~) rotate::$13 << (byte) 1 -- vwsz1=vwsz1_rol_1 asl.z __7 rol.z __7+1 - // [178] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$7 -- vwsz1=vwsz1_plus_vwsz2 + // [176] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$7 -- vwsz1=vwsz1_plus_vwsz2 // signed fixed[8.8] lda.z yr clc @@ -9680,18 +9640,18 @@ rotate: { lda.z yr+1 adc.z __7+1 sta.z yr+1 - // [179] (byte~) rotate::$8 ← > (signed word) rotate::xr#1 -- vbuaa=_hi_vwsz1 + // [177] (byte~) rotate::$8 ← > (signed word) rotate::xr#1 -- vbuaa=_hi_vwsz1 lda.z xr+1 - // [180] (byte~) rotate::$9 ← > (signed word) rotate::yr#1 -- vbuxx=_hi_vwsz1 + // [178] (byte~) rotate::$9 ← > (signed word) rotate::yr#1 -- vbuxx=_hi_vwsz1 ldx.z yr+1 - // [181] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$8 -- vwsz1=_sword_vbsaa + // [179] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$8 -- vwsz1=_sword_vbsaa sta.z return_x ora #$7f bmi !+ lda #0 !: sta.z return_x+1 - // [182] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$9 -- vwsz1=_sword_vbsxx + // [180] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$9 -- vwsz1=_sword_vbsxx txa sta.z return_y ora #$7f @@ -9702,26 +9662,26 @@ rotate: { jmp __breturn // rotate::@return __breturn: - // [183] return + // [181] return rts } // bitmap_line // Draw a line on the bitmap using bresenhams algorithm -// bitmap_line(word zp(3) x1, word zp(5) y1, word zp($b) x2, word zp($d) y2) +// bitmap_line(word zp(4) x1, word zp(6) y1, word zp($c) x2, word zp($e) y2) bitmap_line: { - .label x = 3 - .label y = 5 + .label x = 4 + .label y = 6 .label dx = $21 .label dy = $1d .label sx = $23 .label sy = $1f .label e1 = $12 .label e = $10 - .label x1 = 3 - .label y1 = 5 - .label x2 = $b - .label y2 = $d - // [185] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 + .label x1 = 4 + .label y1 = 6 + .label x2 = $c + .label y2 = $e + // [183] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z x2 sec sbc.z x @@ -9729,21 +9689,21 @@ bitmap_line: { lda.z x2+1 sbc.z x+1 sta.z abs_u16.w+1 - // [186] call abs_u16 - // [308] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] + // [184] call abs_u16 + // [305] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] abs_u16_from_bitmap_line: - // [308] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy + // [305] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy jsr abs_u16 - // [187] (word) abs_u16::return#0 ← (word) abs_u16::return#4 + // [185] (word) abs_u16::return#0 ← (word) abs_u16::return#4 jmp __b12 // bitmap_line::@12 __b12: - // [188] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 -- vwuz1=vwuz2 + // [186] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 -- vwuz1=vwuz2 lda.z abs_u16.return sta.z dx lda.z abs_u16.return+1 sta.z dx+1 - // [189] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 + // [187] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z y2 sec sbc.z y @@ -9751,17 +9711,17 @@ bitmap_line: { lda.z y2+1 sbc.z y+1 sta.z abs_u16.w+1 - // [190] call abs_u16 - // [308] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16] + // [188] call abs_u16 + // [305] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16] abs_u16_from___b12: - // [308] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy + // [305] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy jsr abs_u16 - // [191] (word) abs_u16::return#1 ← (word) abs_u16::return#4 + // [189] (word) abs_u16::return#1 ← (word) abs_u16::return#4 jmp __b13 // bitmap_line::@13 __b13: - // [192] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 - // [193] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 + // [190] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 + // [191] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 lda.z dx bne __b1 lda.z dx+1 @@ -9769,7 +9729,7 @@ bitmap_line: { jmp __b18 // bitmap_line::@18 __b18: - // [194] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 + // [192] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 lda.z dy bne !+ lda.z dy+1 @@ -9778,7 +9738,7 @@ bitmap_line: { jmp __b1 // bitmap_line::@1 __b1: - // [195] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 + // [193] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z x2 sec sbc.z x @@ -9786,21 +9746,21 @@ bitmap_line: { lda.z x2+1 sbc.z x+1 sta.z sgn_u16.w+1 - // [196] call sgn_u16 - // [315] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16] + // [194] call sgn_u16 + // [312] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16] sgn_u16_from___b1: - // [315] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy + // [312] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy jsr sgn_u16 - // [197] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 + // [195] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 jmp __b14 // bitmap_line::@14 __b14: - // [198] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 + // [196] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 lda.z sgn_u16.return sta.z sx lda.z sgn_u16.return+1 sta.z sx+1 - // [199] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 + // [197] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z y2 sec sbc.z y @@ -9808,17 +9768,17 @@ bitmap_line: { lda.z y2+1 sbc.z y+1 sta.z sgn_u16.w+1 - // [200] call sgn_u16 - // [315] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16] + // [198] call sgn_u16 + // [312] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16] sgn_u16_from___b14: - // [315] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy + // [312] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy jsr sgn_u16 - // [201] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 + // [199] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 jmp __b15 // bitmap_line::@15 __b15: - // [202] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 - // [203] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 + // [200] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 + // [201] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 lda.z dy+1 cmp.z dx+1 bcc __b2 @@ -9830,35 +9790,35 @@ bitmap_line: { jmp __b5 // bitmap_line::@5 __b5: - // [204] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + // [202] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 lda.z dx+1 lsr sta.z e+1 lda.z dx ror sta.z e - // [205] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6] + // [203] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6] __b6_from___b5: __b6_from___b7: - // [205] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy - // [205] phi (word) bitmap_line::y#4 = (word) bitmap_line::y#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy - // [205] phi (word) bitmap_line::x#13 = (word) bitmap_line::x#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy + // [203] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy + // [203] phi (word) bitmap_line::y#4 = (word) bitmap_line::y#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy + // [203] phi (word) bitmap_line::x#13 = (word) bitmap_line::x#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy jmp __b6 // bitmap_line::@6 __b6: - // [206] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 - // [207] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 -- vbuaa=_byte_vwuz1 + // [204] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 + // [205] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 -- vbuaa=_byte_vwuz1 lda.z y - // [208] call bitmap_plot - // [322] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot] + // [206] call bitmap_plot + // [319] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot] bitmap_plot_from___b6: - // [322] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy - // [322] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy + // [319] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy + // [319] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b16 // bitmap_line::@16 __b16: - // [209] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + // [207] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z y clc adc.z sy @@ -9866,7 +9826,7 @@ bitmap_line: { lda.z y+1 adc.z sy+1 sta.z y+1 - // [210] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 + // [208] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z e clc adc.z dx @@ -9874,7 +9834,7 @@ bitmap_line: { lda.z e+1 adc.z dx+1 sta.z e+1 - // [211] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 + // [209] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 lda.z e+1 cmp.z dy+1 bne !+ @@ -9886,7 +9846,7 @@ bitmap_line: { jmp __b8 // bitmap_line::@8 __b8: - // [212] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + // [210] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z x clc adc.z sx @@ -9894,7 +9854,7 @@ bitmap_line: { lda.z x+1 adc.z sx+1 sta.z x+1 - // [213] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 + // [211] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 lda.z e sec sbc.z dy @@ -9902,74 +9862,74 @@ bitmap_line: { lda.z e+1 sbc.z dy+1 sta.z e+1 - // [214] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7] + // [212] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7] __b7_from___b16: __b7_from___b8: - // [214] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy - // [214] phi (word) bitmap_line::x#12 = (word) bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy + // [212] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy + // [212] phi (word) bitmap_line::x#12 = (word) bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy jmp __b7 // bitmap_line::@7 __b7: - // [215] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 + // [213] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 lda.z y+1 cmp.z y2+1 bne __b6_from___b7 lda.z y cmp.z y2 bne __b6_from___b7 - // [216] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3] + // [214] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3] __b3_from___b10: __b3_from___b7: - // [216] phi (word) bitmap_line::y#7 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy - // [216] phi (word) bitmap_line::x#6 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy + // [214] phi (word) bitmap_line::y#7 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy + // [214] phi (word) bitmap_line::x#6 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy jmp __b3 // bitmap_line::@3 __b3: - // [217] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 - // [218] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 -- vbuaa=_byte_vwuz1 + // [215] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 + // [216] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 -- vbuaa=_byte_vwuz1 lda.z y - // [219] call bitmap_plot - // [322] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot] + // [217] call bitmap_plot + // [319] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot] bitmap_plot_from___b3: - // [322] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy - // [322] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy + // [319] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy + // [319] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __breturn // bitmap_line::@return __breturn: - // [220] return + // [218] return rts // bitmap_line::@2 __b2: - // [221] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + // [219] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 lda.z dy+1 lsr sta.z e1+1 lda.z dy ror sta.z e1 - // [222] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9] + // [220] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9] __b9_from___b10: __b9_from___b2: - // [222] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy - // [222] phi (word) bitmap_line::y#15 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy - // [222] phi (word) bitmap_line::x#7 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy + // [220] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy + // [220] phi (word) bitmap_line::y#15 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy + // [220] phi (word) bitmap_line::x#7 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy jmp __b9 // bitmap_line::@9 __b9: - // [223] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 - // [224] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 -- vbuaa=_byte_vwuz1 + // [221] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 + // [222] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 -- vbuaa=_byte_vwuz1 lda.z y - // [225] call bitmap_plot - // [322] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot] + // [223] call bitmap_plot + // [319] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot] bitmap_plot_from___b9: - // [322] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy - // [322] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy + // [319] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy + // [319] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b17 // bitmap_line::@17 __b17: - // [226] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + // [224] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z x clc adc.z sx @@ -9977,7 +9937,7 @@ bitmap_line: { lda.z x+1 adc.z sx+1 sta.z x+1 - // [227] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 + // [225] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z e1 clc adc.z dy @@ -9985,7 +9945,7 @@ bitmap_line: { lda.z e1+1 adc.z dy+1 sta.z e1+1 - // [228] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 + // [226] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 lda.z e1+1 cmp.z dx+1 bne !+ @@ -9997,7 +9957,7 @@ bitmap_line: { jmp __b11 // bitmap_line::@11 __b11: - // [229] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + // [227] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z y clc adc.z sy @@ -10005,7 +9965,7 @@ bitmap_line: { lda.z y+1 adc.z sy+1 sta.z y+1 - // [230] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 + // [228] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 lda.z e1 sec sbc.z dx @@ -10013,15 +9973,15 @@ bitmap_line: { lda.z e1+1 sbc.z dx+1 sta.z e1+1 - // [231] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10] + // [229] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10] __b10_from___b11: __b10_from___b17: - // [231] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy - // [231] phi (word) bitmap_line::y#13 = (word) bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy + // [229] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy + // [229] phi (word) bitmap_line::y#13 = (word) bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy jmp __b10 // bitmap_line::@10 __b10: - // [232] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 + // [230] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 lda.z x+1 cmp.z x2+1 bne __b9_from___b10 @@ -10031,14 +9991,14 @@ bitmap_line: { jmp __b3_from___b10 // bitmap_line::@4 __b4: - // [233] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 - // [234] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 -- vbuaa=_byte_vwuz1 + // [231] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 + // [232] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 -- vbuaa=_byte_vwuz1 lda.z y - // [235] call bitmap_plot - // [322] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] + // [233] call bitmap_plot + // [319] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] bitmap_plot_from___b4: - // [322] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy - // [322] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy + // [319] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy + // [319] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __breturn } @@ -10048,48 +10008,48 @@ bitmap_line: { // Point values must be within [-200 ; 1ff] for the calculation to not overflow. // A quadratic spline is a curve defined by 3 points: P0, P1 and P2. // The curve connects P0 to P2 through a smooth curve that moves towards P1, but does usually not touch it. -// spline_8segB(signed word zp(3) p0_x, signed word zp(5) p0_y, signed word zp($b) p1_x, signed word zp($d) p1_y, signed word zp($19) p2_x, signed word zp($1b) p2_y) +// spline_8segB(signed word zp(4) p0_x, signed word zp(6) p0_y, signed word zp($c) p1_x, signed word zp($e) p1_y, signed word zp($19) p2_x, signed word zp($1b) p2_y) spline_8segB: { .label __0 = $23 .label __1 = $23 - .label __3 = $29 - .label __4 = $29 - .label __6 = $b - .label __8 = $d - .label __10 = $b - .label __12 = $d - .label __18 = 3 - .label __19 = 3 - .label __20 = 5 - .label __21 = 5 - .label __22 = $25 - .label __23 = $25 - .label __24 = $27 - .label __25 = $27 + .label __3 = $2a + .label __4 = $2a + .label __6 = $c + .label __8 = $e + .label __10 = $c + .label __12 = $e + .label __18 = 4 + .label __19 = 4 + .label __20 = 6 + .label __21 = 6 + .label __22 = $26 + .label __23 = $26 + .label __24 = $28 + .label __25 = $28 .label a_x = $23 - .label a_y = $29 - .label b_x = $b - .label b_y = $d - .label i_x = $b - .label i_y = $d + .label a_y = $2a + .label b_x = $c + .label b_y = $e + .label i_x = $c + .label i_y = $e .label j_x = $23 - .label j_y = $29 - .label p_x = 3 - .label p_y = 5 - .label p0_x = 3 - .label p0_y = 5 - .label p1_x = $b - .label p1_y = $d + .label j_y = $2a + .label p_x = 4 + .label p_y = 6 + .label p0_x = 4 + .label p0_y = 6 + .label p1_x = $c + .label p1_y = $e .label p2_x = $19 .label p2_y = $1b - // [236] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 + // [234] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 lda.z p1_x asl sta.z __0 lda.z p1_x+1 rol sta.z __0+1 - // [237] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 -- vwsz1=vwsz2_minus_vwsz1 + // [235] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 -- vwsz1=vwsz2_minus_vwsz1 lda.z p2_x sec sbc.z __1 @@ -10097,7 +10057,7 @@ spline_8segB: { lda.z p2_x+1 sbc.z __1+1 sta.z __1+1 - // [238] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz1_plus_vwsz2 + // [236] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz1_plus_vwsz2 lda.z a_x clc adc.z p0_x @@ -10105,14 +10065,14 @@ spline_8segB: { lda.z a_x+1 adc.z p0_x+1 sta.z a_x+1 - // [239] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 + // [237] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 lda.z p1_y asl sta.z __3 lda.z p1_y+1 rol sta.z __3+1 - // [240] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 -- vwsz1=vwsz2_minus_vwsz1 + // [238] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 -- vwsz1=vwsz2_minus_vwsz1 lda.z p2_y sec sbc.z __4 @@ -10120,7 +10080,7 @@ spline_8segB: { lda.z p2_y+1 sbc.z __4+1 sta.z __4+1 - // [241] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz1_plus_vwsz2 + // [239] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz1_plus_vwsz2 lda.z a_y clc adc.z p0_y @@ -10128,7 +10088,7 @@ spline_8segB: { lda.z a_y+1 adc.z p0_y+1 sta.z a_y+1 - // [242] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz1_minus_vwsz2 + // [240] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz1_minus_vwsz2 lda.z __6 sec sbc.z p0_x @@ -10136,10 +10096,10 @@ spline_8segB: { lda.z __6+1 sbc.z p0_x+1 sta.z __6+1 - // [243] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 -- vwsz1=vwsz1_rol_1 + // [241] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 -- vwsz1=vwsz1_rol_1 asl.z b_x rol.z b_x+1 - // [244] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz1_minus_vwsz2 + // [242] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz1_minus_vwsz2 lda.z __8 sec sbc.z p0_y @@ -10147,17 +10107,17 @@ spline_8segB: { lda.z __8+1 sbc.z p0_y+1 sta.z __8+1 - // [245] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 -- vwsz1=vwsz1_rol_1 + // [243] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 -- vwsz1=vwsz1_rol_1 asl.z b_y rol.z b_y+1 - // [246] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 -- vwsz1=vwsz1_rol_3 + // [244] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 -- vwsz1=vwsz1_rol_3 asl.z __10 rol.z __10+1 asl.z __10 rol.z __10+1 asl.z __10 rol.z __10+1 - // [247] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 -- vwsz1=vwsz2_plus_vwsz1 + // [245] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 -- vwsz1=vwsz2_plus_vwsz1 lda.z i_x clc adc.z a_x @@ -10165,14 +10125,14 @@ spline_8segB: { lda.z i_x+1 adc.z a_x+1 sta.z i_x+1 - // [248] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 -- vwsz1=vwsz1_rol_3 + // [246] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 -- vwsz1=vwsz1_rol_3 asl.z __12 rol.z __12+1 asl.z __12 rol.z __12+1 asl.z __12 rol.z __12+1 - // [249] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 -- vwsz1=vwsz2_plus_vwsz1 + // [247] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 -- vwsz1=vwsz2_plus_vwsz1 lda.z i_y clc adc.z a_y @@ -10180,13 +10140,13 @@ spline_8segB: { lda.z i_y+1 adc.z a_y+1 sta.z i_y+1 - // [250] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 -- vwsz1=vwsz1_rol_1 + // [248] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 -- vwsz1=vwsz1_rol_1 asl.z j_x rol.z j_x+1 - // [251] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 -- vwsz1=vwsz1_rol_1 + // [249] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 -- vwsz1=vwsz1_rol_1 asl.z j_y rol.z j_y+1 - // [252] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 -- vwsz1=vwsz1_rol_6 + // [250] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 -- vwsz1=vwsz1_rol_6 lda.z p_x+1 sta.z $ff lda.z p_x @@ -10199,7 +10159,7 @@ spline_8segB: { lsr.z $ff ror.z p_x+1 ror.z p_x - // [253] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 -- vwsz1=vwsz1_rol_6 + // [251] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 -- vwsz1=vwsz1_rol_6 lda.z p_y+1 sta.z $ff lda.z p_y @@ -10212,26 +10172,26 @@ spline_8segB: { lsr.z $ff ror.z p_y+1 ror.z p_y - // [254] phi from spline_8segB to spline_8segB::@1 [phi:spline_8segB->spline_8segB::@1] + // [252] phi from spline_8segB to spline_8segB::@1 [phi:spline_8segB->spline_8segB::@1] __b1_from_spline_8segB: - // [254] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#0 [phi:spline_8segB->spline_8segB::@1#0] -- register_copy - // [254] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#0 [phi:spline_8segB->spline_8segB::@1#1] -- register_copy - // [254] phi (byte) spline_8segB::n#2 = (byte) 0 [phi:spline_8segB->spline_8segB::@1#2] -- vbuyy=vbuc1 + // [252] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#0 [phi:spline_8segB->spline_8segB::@1#0] -- register_copy + // [252] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#0 [phi:spline_8segB->spline_8segB::@1#1] -- register_copy + // [252] phi (byte) spline_8segB::n#2 = (byte) 0 [phi:spline_8segB->spline_8segB::@1#2] -- vbuyy=vbuc1 ldy #0 - // [254] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#0 [phi:spline_8segB->spline_8segB::@1#3] -- register_copy - // [254] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#0 [phi:spline_8segB->spline_8segB::@1#4] -- register_copy + // [252] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#0 [phi:spline_8segB->spline_8segB::@1#3] -- register_copy + // [252] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#0 [phi:spline_8segB->spline_8segB::@1#4] -- register_copy jmp __b1 - // [254] phi from spline_8segB::@1 to spline_8segB::@1 [phi:spline_8segB::@1->spline_8segB::@1] + // [252] phi from spline_8segB::@1 to spline_8segB::@1 [phi:spline_8segB::@1->spline_8segB::@1] __b1_from___b1: - // [254] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#1 [phi:spline_8segB::@1->spline_8segB::@1#0] -- register_copy - // [254] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#1 [phi:spline_8segB::@1->spline_8segB::@1#1] -- register_copy - // [254] phi (byte) spline_8segB::n#2 = (byte) spline_8segB::n#1 [phi:spline_8segB::@1->spline_8segB::@1#2] -- register_copy - // [254] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#1 [phi:spline_8segB::@1->spline_8segB::@1#3] -- register_copy - // [254] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#1 [phi:spline_8segB::@1->spline_8segB::@1#4] -- register_copy + // [252] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#1 [phi:spline_8segB::@1->spline_8segB::@1#0] -- register_copy + // [252] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#1 [phi:spline_8segB::@1->spline_8segB::@1#1] -- register_copy + // [252] phi (byte) spline_8segB::n#2 = (byte) spline_8segB::n#1 [phi:spline_8segB::@1->spline_8segB::@1#2] -- register_copy + // [252] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#1 [phi:spline_8segB::@1->spline_8segB::@1#3] -- register_copy + // [252] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#1 [phi:spline_8segB::@1->spline_8segB::@1#4] -- register_copy jmp __b1 // spline_8segB::@1 __b1: - // [255] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 + // [253] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 lda.z p_x clc adc #<$20 @@ -10239,7 +10199,7 @@ spline_8segB: { lda.z p_x+1 adc #>$20 sta.z __22+1 - // [256] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 -- vwsz1=vwsz1_ror_6 + // [254] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 -- vwsz1=vwsz1_ror_6 lda.z __23 sta.z $ff lda.z __23+1 @@ -10256,7 +10216,7 @@ spline_8segB: { rol.z $ff rol.z __23 rol.z __23+1 - // [257] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 + // [255] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 lda.z p_y clc adc #<$20 @@ -10264,7 +10224,7 @@ spline_8segB: { lda.z p_y+1 adc #>$20 sta.z __24+1 - // [258] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 -- vwsz1=vwsz1_ror_6 + // [256] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 -- vwsz1=vwsz1_ror_6 lda.z __25 sta.z $ff lda.z __25+1 @@ -10281,22 +10241,22 @@ spline_8segB: { rol.z $ff rol.z __25 rol.z __25+1 - // [259] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 -- vbuxx=vbuyy_rol_2 + // [257] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 -- vbuxx=vbuyy_rol_2 tya asl asl tax - // [260] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 -- pwsc1_derefidx_vbuxx=vwsz1 + // [258] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 -- pwsc1_derefidx_vbuxx=vwsz1 lda.z __23 sta SPLINE_8SEG,x lda.z __23+1 sta SPLINE_8SEG+1,x - // [261] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 -- pwsc1_derefidx_vbuxx=vwsz1 + // [259] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 -- pwsc1_derefidx_vbuxx=vwsz1 lda.z __25 sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,x lda.z __25+1 sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x - // [262] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 -- vwsz1=vwsz1_plus_vwsz2 + // [260] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 -- vwsz1=vwsz1_plus_vwsz2 lda.z p_x clc adc.z i_x @@ -10304,7 +10264,7 @@ spline_8segB: { lda.z p_x+1 adc.z i_x+1 sta.z p_x+1 - // [263] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 -- vwsz1=vwsz1_plus_vwsz2 + // [261] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 -- vwsz1=vwsz1_plus_vwsz2 lda.z p_y clc adc.z i_y @@ -10312,7 +10272,7 @@ spline_8segB: { lda.z p_y+1 adc.z i_y+1 sta.z p_y+1 - // [264] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 -- vwsz1=vwsz1_plus_vwsz2 + // [262] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 -- vwsz1=vwsz1_plus_vwsz2 lda.z i_x clc adc.z j_x @@ -10320,7 +10280,7 @@ spline_8segB: { lda.z i_x+1 adc.z j_x+1 sta.z i_x+1 - // [265] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 -- vwsz1=vwsz1_plus_vwsz2 + // [263] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 -- vwsz1=vwsz1_plus_vwsz2 lda.z i_y clc adc.z j_y @@ -10328,15 +10288,15 @@ spline_8segB: { lda.z i_y+1 adc.z j_y+1 sta.z i_y+1 - // [266] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2 -- vbuyy=_inc_vbuyy + // [264] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2 -- vbuyy=_inc_vbuyy iny - // [267] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1 -- vbuyy_neq_vbuc1_then_la1 + // [265] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne __b1_from___b1 jmp __b2 // spline_8segB::@2 __b2: - // [268] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 -- vwsz1=vwsz1_plus_vbsc1 + // [266] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 -- vwsz1=vwsz1_plus_vbsc1 lda.z __18 clc adc #<$20 @@ -10344,7 +10304,7 @@ spline_8segB: { lda.z __18+1 adc #>$20 sta.z __18+1 - // [269] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 -- vwsz1=vwsz1_ror_6 + // [267] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 -- vwsz1=vwsz1_ror_6 lda.z __19 sta.z $ff lda.z __19+1 @@ -10361,7 +10321,7 @@ spline_8segB: { rol.z $ff rol.z __19 rol.z __19+1 - // [270] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 -- vwsz1=vwsz1_plus_vbsc1 + // [268] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 -- vwsz1=vwsz1_plus_vbsc1 lda.z __20 clc adc #<$20 @@ -10369,7 +10329,7 @@ spline_8segB: { lda.z __20+1 adc #>$20 sta.z __20+1 - // [271] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 -- vwsz1=vwsz1_ror_6 + // [269] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 -- vwsz1=vwsz1_ror_6 lda.z __21 sta.z $ff lda.z __21+1 @@ -10386,12 +10346,12 @@ spline_8segB: { rol.z $ff rol.z __21 rol.z __21+1 - // [272] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 -- _deref_pwsc1=vwsz1 + // [270] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 -- _deref_pwsc1=vwsz1 lda.z __19 sta SPLINE_8SEG+8*SIZEOF_STRUCT_SPLINEVECTOR16 lda.z __19+1 sta SPLINE_8SEG+8*SIZEOF_STRUCT_SPLINEVECTOR16+1 - // [273] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 -- _deref_pwsc1=vwsz1 + // [271] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 -- _deref_pwsc1=vwsz1 lda.z __21 sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SPLINEVECTOR16 lda.z __21+1 @@ -10399,94 +10359,94 @@ spline_8segB: { jmp __breturn // spline_8segB::@return __breturn: - // [274] return + // [272] return rts } // bitmap_plot_spline_8seg // Plot the spline in the SPLINE_8SEG array bitmap_plot_spline_8seg: { - .label current_x = 3 - .label current_y = 5 - .label n = $f - // [275] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) -- vwsz1=_deref_pwsc1 + .label __4 = $25 + .label current_x = 4 + .label current_y = 6 + .label n = $18 + // [273] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) -- vwsz1=_deref_pwsc1 lda SPLINE_8SEG sta.z current_x lda SPLINE_8SEG+1 sta.z current_x+1 - // [276] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) -- vwsz1=_deref_pwsc1 + // [274] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) -- vwsz1=_deref_pwsc1 lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y sta.z current_y lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1 sta.z current_y+1 - // [277] phi from bitmap_plot_spline_8seg to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1] + // [275] phi from bitmap_plot_spline_8seg to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1] __b1_from_bitmap_plot_spline_8seg: - // [277] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word) bitmap_plot_spline_8seg::current_y#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#0] -- register_copy - // [277] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word) bitmap_plot_spline_8seg::current_x#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#1] -- register_copy - // [277] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) 1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#2] -- vbuz1=vbuc1 + // [275] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word) bitmap_plot_spline_8seg::current_y#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#0] -- register_copy + // [275] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word) bitmap_plot_spline_8seg::current_x#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#1] -- register_copy + // [275] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) 1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#2] -- vbuz1=vbuc1 lda #1 sta.z n jmp __b1 - // [277] phi from bitmap_plot_spline_8seg::@2 to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1] + // [275] phi from bitmap_plot_spline_8seg::@2 to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1] __b1_from___b2: - // [277] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word) bitmap_plot_spline_8seg::current_y#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#0] -- register_copy - // [277] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word) bitmap_plot_spline_8seg::current_x#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#1] -- register_copy - // [277] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) bitmap_plot_spline_8seg::n#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#2] -- register_copy + // [275] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word) bitmap_plot_spline_8seg::current_y#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#0] -- register_copy + // [275] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word) bitmap_plot_spline_8seg::current_x#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#1] -- register_copy + // [275] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) bitmap_plot_spline_8seg::n#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#2] -- register_copy jmp __b1 // bitmap_plot_spline_8seg::@1 __b1: - // [278] (byte~) bitmap_plot_spline_8seg::$3 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 -- vbuxx=vbuz1_rol_2 + // [276] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 lda.z n asl asl - tax - // [279] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 - // [280] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 - // [281] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$3) -- vwuz1=pwuc1_derefidx_vbuxx - lda SPLINE_8SEG,x + sta.z __4 + // [277] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 + // [278] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 + // [279] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy.z __4 + lda SPLINE_8SEG,y sta.z bitmap_line.x2 - lda SPLINE_8SEG+1,x + lda SPLINE_8SEG+1,y sta.z bitmap_line.x2+1 - // [282] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$3) -- vwuz1=pwuc1_derefidx_vbuxx - lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,x + // [280] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy.z __4 + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,y sta.z bitmap_line.y2 - lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y sta.z bitmap_line.y2+1 - // [283] call bitmap_line - // [184] phi from bitmap_plot_spline_8seg::@1 to bitmap_line [phi:bitmap_plot_spline_8seg::@1->bitmap_line] + // [281] call bitmap_line + // [182] phi from bitmap_plot_spline_8seg::@1 to bitmap_line [phi:bitmap_plot_spline_8seg::@1->bitmap_line] bitmap_line_from___b1: - // [184] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#13 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#0] -- register_copy - // [184] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#13 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#1] -- register_copy - // [184] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#2] -- register_copy - // [184] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#3] -- register_copy + // [182] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#13 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#0] -- register_copy + // [182] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#13 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#1] -- register_copy + // [182] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#2] -- register_copy + // [182] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#3] -- register_copy jsr bitmap_line jmp __b2 // bitmap_plot_spline_8seg::@2 __b2: - // [284] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 -- vbuxx=vbuz1_rol_2 - lda.z n - asl - asl - tax - // [285] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) -- vwsz1=pwsc1_derefidx_vbuxx - lda SPLINE_8SEG,x + // [282] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) -- vwsz1=pwsc1_derefidx_vbuz2 + ldy.z __4 + lda SPLINE_8SEG,y sta.z current_x - lda SPLINE_8SEG+1,x + lda SPLINE_8SEG+1,y sta.z current_x+1 - // [286] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) -- vwsz1=pwsc1_derefidx_vbuxx - lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,x + // [283] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) -- vwsz1=pwsc1_derefidx_vbuz2 + ldy.z __4 + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,y sta.z current_y - lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y sta.z current_y+1 - // [287] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2 -- vbuz1=_inc_vbuz1 + // [284] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2 -- vbuz1=_inc_vbuz1 inc.z n - // [288] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@1 -- vbuz1_neq_vbuc1_then_la1 + // [285] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@1 -- vbuz1_neq_vbuc1_then_la1 lda #9 cmp.z n bne __b1_from___b2 jmp __breturn // bitmap_plot_spline_8seg::@return __breturn: - // [289] return + // [286] return rts } // mulf16s @@ -10494,43 +10454,43 @@ bitmap_plot_spline_8seg: { // Fixes offsets introduced by using unsigned multiplication // mulf16s(signed word zp($10) a, signed word zp($12) b) mulf16s: { - .label __6 = $27 - .label __9 = $29 - .label __11 = $27 - .label __12 = $29 + .label __6 = $28 + .label __9 = $2a + .label __11 = $28 + .label __12 = $2a .label m = $14 .label return = $14 .label a = $10 .label b = $12 - // [291] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 -- vwuz1=vwuz2 + // [288] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 -- vwuz1=vwuz2 lda.z a sta.z mulf16u.a lda.z a+1 sta.z mulf16u.a+1 - // [292] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 -- vwuz1=vwuz2 + // [289] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 -- vwuz1=vwuz2 lda.z b sta.z mulf16u.b lda.z b+1 sta.z mulf16u.b+1 - // [293] call mulf16u + // [290] call mulf16u jsr mulf16u - // [294] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 + // [291] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 jmp __b5 // mulf16s::@5 __b5: - // [295] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 - // [296] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 + // [292] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 + // [293] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 lda.z a+1 bpl __b1_from___b5 jmp __b3 // mulf16s::@3 __b3: - // [297] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + // [294] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda.z m+2 sta.z __6 lda.z m+3 sta.z __6+1 - // [298] (word~) mulf16s::$11 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#4 -- vwuz1=vwuz1_minus_vwuz2 + // [295] (word~) mulf16s::$11 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#4 -- vwuz1=vwuz1_minus_vwuz2 lda.z __11 sec sbc.z b @@ -10538,30 +10498,30 @@ mulf16s: { lda.z __11+1 sbc.z b+1 sta.z __11+1 - // [299] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$11 -- vduz1=vduz1_sethi_vwuz2 + // [296] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$11 -- vduz1=vduz1_sethi_vwuz2 lda.z __11 sta.z m+2 lda.z __11+1 sta.z m+3 - // [300] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] + // [297] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] __b1_from___b3: __b1_from___b5: - // [300] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy + // [297] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy jmp __b1 // mulf16s::@1 __b1: - // [301] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 + // [298] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 lda.z b+1 bpl __b2_from___b1 jmp __b4 // mulf16s::@4 __b4: - // [302] (word~) mulf16s::$9 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + // [299] (word~) mulf16s::$9 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda.z m+2 sta.z __9 lda.z m+3 sta.z __9+1 - // [303] (word~) mulf16s::$12 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::a#4 -- vwuz1=vwuz1_minus_vwuz2 + // [300] (word~) mulf16s::$12 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::a#4 -- vwuz1=vwuz1_minus_vwuz2 lda.z __12 sec sbc.z a @@ -10569,23 +10529,23 @@ mulf16s: { lda.z __12+1 sbc.z a+1 sta.z __12+1 - // [304] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$12 -- vduz1=vduz1_sethi_vwuz2 + // [301] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$12 -- vduz1=vduz1_sethi_vwuz2 lda.z __12 sta.z m+2 lda.z __12+1 sta.z m+3 - // [305] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + // [302] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] __b2_from___b1: __b2_from___b4: - // [305] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + // [302] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy jmp __b2 // mulf16s::@2 __b2: - // [306] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 + // [303] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 jmp __breturn // mulf16s::@return __breturn: - // [307] return + // [304] return rts } // abs_u16 @@ -10594,21 +10554,21 @@ mulf16s: { abs_u16: { .label w = $1d .label return = $1d - // [309] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuaa=_hi_vwuz1 + // [306] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuaa=_hi_vwuz1 lda.z w+1 - // [310] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + // [307] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - // [311] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuaa_then_la1 + // [308] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuaa_then_la1 cmp #0 bne __b1 - // [313] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] + // [310] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] __breturn_from_abs_u16: __breturn_from___b1: - // [313] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy + // [310] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy jmp __breturn // abs_u16::@1 __b1: - // [312] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 + // [309] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 sec lda #0 sbc.z return @@ -10619,39 +10579,39 @@ abs_u16: { jmp __breturn_from___b1 // abs_u16::@return __breturn: - // [314] return + // [311] return rts } // sgn_u16 // Get the sign of a 16-bit unsigned number treated as a signed number. // Returns unsigned -1 if the number is -// sgn_u16(word zp($2b) w) +// sgn_u16(word zp($2c) w) sgn_u16: { - .label w = $2b + .label w = $2c .label return = $1f - // [316] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuaa=_hi_vwuz1 + // [313] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuaa=_hi_vwuz1 lda.z w+1 - // [317] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + // [314] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - // [318] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuaa_then_la1 + // [315] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuaa_then_la1 cmp #0 bne __b1_from_sgn_u16 - // [320] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] + // [317] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] __breturn_from_sgn_u16: - // [320] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 + // [317] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 lda #<1 sta.z return lda #>1 sta.z return+1 jmp __breturn - // [319] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] + // [316] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] __b1_from_sgn_u16: jmp __b1 // sgn_u16::@1 __b1: - // [320] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] + // [317] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] __breturn_from___b1: - // [320] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 + // [317] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 lda #<-1 sta.z return lda #>-1 @@ -10659,30 +10619,30 @@ sgn_u16: { jmp __breturn // sgn_u16::@return __breturn: - // [321] return + // [318] return rts } // bitmap_plot // Plot a single dot in the bitmap -// bitmap_plot(word zp(3) x, byte register(A) y) +// bitmap_plot(word zp(4) x, byte register(A) y) bitmap_plot: { - .label __0 = $2b - .label plotter = $29 - .label x = 3 - // [323] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa + .label __0 = $2c + .label plotter = $2a + .label x = 4 + // [320] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa tay lda bitmap_plot_yhi,y sta.z plotter+1 lda bitmap_plot_ylo,y sta.z plotter - // [324] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + // [321] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda.z x and #<$fff8 sta.z __0 lda.z x+1 and #>$fff8 sta.z __0+1 - // [325] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2 + // [322] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2 lda.z plotter clc adc.z __0 @@ -10690,9 +10650,9 @@ bitmap_plot: { lda.z plotter+1 adc.z __0+1 sta.z plotter+1 - // [326] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#4 -- vbuxx=_lo_vwuz1 + // [323] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#4 -- vbuxx=_lo_vwuz1 ldx.z x - // [327] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx + // [324] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx lda bitmap_plot_bit,x ldy #0 ora (plotter),y @@ -10701,26 +10661,26 @@ bitmap_plot: { jmp __breturn // bitmap_plot::@return __breturn: - // [328] return + // [325] return rts } // mulf16u // Fast multiply two unsigned ints to a double unsigned int result // Done in assembler to utilize fast addition A+X -// mulf16u(word zp($29) a, word zp($25) b) +// mulf16u(word zp($2a) a, word zp($26) b) mulf16u: { .label memA = $f8 .label memB = $fa .label memR = $fc .label return = $14 - .label a = $29 - .label b = $25 - // [329] *((const nomodify word*) mulf16u::memA) ← (word) mulf16u::a#0 -- _deref_pwuc1=vwuz1 + .label a = $2a + .label b = $26 + // [326] *((const nomodify word*) mulf16u::memA) ← (word) mulf16u::a#0 -- _deref_pwuc1=vwuz1 lda.z a sta memA lda.z a+1 sta memA+1 - // [330] *((const nomodify word*) mulf16u::memB) ← (word) mulf16u::b#0 -- _deref_pwuc1=vwuz1 + // [327] *((const nomodify word*) mulf16u::memB) ← (word) mulf16u::b#0 -- _deref_pwuc1=vwuz1 lda.z b sta memB lda.z b+1 @@ -10818,7 +10778,7 @@ mulf16u: { bcc !+ inc memR+3 !: - // [332] (dword) mulf16u::return#0 ← *((const nomodify dword*) mulf16u::memR) -- vduz1=_deref_pduc1 + // [329] (dword) mulf16u::return#0 ← *((const nomodify dword*) mulf16u::memR) -- vduz1=_deref_pduc1 lda memR sta.z return lda memR+1 @@ -10830,7 +10790,7 @@ mulf16u: { jmp __breturn // mulf16u::@return __breturn: - // [333] return + // [330] return rts } // File Data @@ -10998,8 +10958,12 @@ Removing instruction lda #>0 Removing instruction lda #<0 Removing instruction lda #>0 Removing instruction lda #0 +Removing instruction lda.z __21 Removing instruction lda.z e+1 Removing instruction lda.z e1+1 +Replacing instruction ldy.z __4 with TAY +Removing instruction ldy.z __4 +Removing instruction ldy.z __4 Removing instruction lda #>-1 Removing instruction ldy #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination @@ -11182,8 +11146,8 @@ Removing instruction __b2: Removing instruction __breturn: Removing instruction __breturn: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [984] bne __b1 to beq -Fixing long branch [599] beq __b4 to bne +Fixing long branch [980] bne __b1 to beq +Fixing long branch [595] beq __b4 to bne FINAL SYMBOL TABLE (const nomodify byte*) BITMAP_GRAPHICS = (byte*) 24576 @@ -11354,9 +11318,9 @@ FINAL SYMBOL TABLE (byte) bitmap_init::y#1 reg byte x 151.5 (byte) bitmap_init::y#2 reg byte x 50.5 (byte*) bitmap_init::yoffs -(byte*) bitmap_init::yoffs#1 yoffs zp[2]:7 202.0 -(byte*) bitmap_init::yoffs#2 yoffs zp[2]:7 63.125 -(byte*) bitmap_init::yoffs#4 yoffs zp[2]:7 101.0 +(byte*) bitmap_init::yoffs#1 yoffs zp[2]:8 202.0 +(byte*) bitmap_init::yoffs#2 yoffs zp[2]:8 63.125 +(byte*) bitmap_init::yoffs#4 yoffs zp[2]:8 101.0 (void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2) (label) bitmap_line::@1 (label) bitmap_line::@10 @@ -11398,48 +11362,48 @@ FINAL SYMBOL TABLE (word) bitmap_line::sy (word) bitmap_line::sy#0 sy zp[2]:31 7.696153846165384E10 (word) bitmap_line::x -(word) bitmap_line::x#0 x zp[2]:3 2.318186366818182E8 -(word) bitmap_line::x#1 x zp[2]:3 1.000000000001E12 -(word) bitmap_line::x#12 x zp[2]:3 2.000000000002E12 -(word) bitmap_line::x#13 x zp[2]:3 5.715714285721428E11 -(word) bitmap_line::x#15 x zp[2]:3 5.714285714291428E11 -(word) bitmap_line::x#6 x zp[2]:3 2.001000000003E12 -(word) bitmap_line::x#7 x zp[2]:3 7.50250000001E11 +(word) bitmap_line::x#0 x zp[2]:4 2.318186366818182E8 +(word) bitmap_line::x#1 x zp[2]:4 1.000000000001E12 +(word) bitmap_line::x#12 x zp[2]:4 2.000000000002E12 +(word) bitmap_line::x#13 x zp[2]:4 5.715714285721428E11 +(word) bitmap_line::x#15 x zp[2]:4 5.714285714291428E11 +(word) bitmap_line::x#6 x zp[2]:4 2.001000000003E12 +(word) bitmap_line::x#7 x zp[2]:4 7.50250000001E11 (word) bitmap_line::x1 -(word) bitmap_line::x1#0 x1 zp[2]:3 5000.5 -(word) bitmap_line::x1#1 x1 zp[2]:3 5.00000005E7 +(word) bitmap_line::x1#0 x1 zp[2]:4 5000.5 +(word) bitmap_line::x1#1 x1 zp[2]:4 5.00000005E7 (word) bitmap_line::x2 -(word) bitmap_line::x2#0 x2 zp[2]:11 10001.0 -(word) bitmap_line::x2#10 x2 zp[2]:11 3.131562531265625E10 -(word) bitmap_line::x2#13 x2 zp[2]:11 1.00000001E8 +(word) bitmap_line::x2#0 x2 zp[2]:12 10001.0 +(word) bitmap_line::x2#10 x2 zp[2]:12 3.131562531265625E10 +(word) bitmap_line::x2#13 x2 zp[2]:12 1.00000001E8 (word) bitmap_line::y -(word) bitmap_line::y#0 y zp[2]:5 1.7826130460869563E8 -(word) bitmap_line::y#1 y zp[2]:5 5.714285714291428E11 -(word) bitmap_line::y#13 y zp[2]:5 2.000000000002E12 -(word) bitmap_line::y#15 y zp[2]:5 4.287142857148571E11 -(word) bitmap_line::y#2 y zp[2]:5 1.000000000001E12 -(word) bitmap_line::y#4 y zp[2]:5 5.0025000000075E11 -(word) bitmap_line::y#7 y zp[2]:5 1.000000000001E12 +(word) bitmap_line::y#0 y zp[2]:6 1.7826130460869563E8 +(word) bitmap_line::y#1 y zp[2]:6 5.714285714291428E11 +(word) bitmap_line::y#13 y zp[2]:6 2.000000000002E12 +(word) bitmap_line::y#15 y zp[2]:6 4.287142857148571E11 +(word) bitmap_line::y#2 y zp[2]:6 1.000000000001E12 +(word) bitmap_line::y#4 y zp[2]:6 5.0025000000075E11 +(word) bitmap_line::y#7 y zp[2]:6 1.000000000001E12 (word) bitmap_line::y1 -(word) bitmap_line::y1#0 y1 zp[2]:5 6667.333333333333 -(word) bitmap_line::y1#1 y1 zp[2]:5 6.6666667333333336E7 +(word) bitmap_line::y1#0 y1 zp[2]:6 6667.333333333333 +(word) bitmap_line::y1#1 y1 zp[2]:6 6.6666667333333336E7 (word) bitmap_line::y2 -(word) bitmap_line::y2#0 y2 zp[2]:13 20002.0 -(word) bitmap_line::y2#11 y2 zp[2]:13 3.131562531265625E10 -(word) bitmap_line::y2#13 y2 zp[2]:13 2.00000002E8 +(word) bitmap_line::y2#0 y2 zp[2]:14 20002.0 +(word) bitmap_line::y2#11 y2 zp[2]:14 3.131562531265625E10 +(word) bitmap_line::y2#13 y2 zp[2]:14 2.00000002E8 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) -(word~) bitmap_plot::$0 zp[2]:43 2.0000000000002E13 +(word~) bitmap_plot::$0 zp[2]:44 2.0000000000002E13 (byte~) bitmap_plot::$1 reg byte x 2.0000000000002E13 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(word) bitmap_plot::plotter#0 plotter zp[2]:41 5.0000000000005E12 -(byte*) bitmap_plot::plotter#1 plotter zp[2]:41 1.50000000000015E13 +(word) bitmap_plot::plotter#0 plotter zp[2]:42 5.0000000000005E12 +(byte*) bitmap_plot::plotter#1 plotter zp[2]:42 1.50000000000015E13 (word) bitmap_plot::x -(word) bitmap_plot::x#0 x zp[2]:3 1.000000001E9 -(word) bitmap_plot::x#1 x zp[2]:3 1.000000000001E12 -(word) bitmap_plot::x#2 x zp[2]:3 1.000000001E9 -(word) bitmap_plot::x#3 x zp[2]:3 1.000000000001E12 -(word) bitmap_plot::x#4 x zp[2]:3 5.5005000000015E12 +(word) bitmap_plot::x#0 x zp[2]:4 1.000000001E9 +(word) bitmap_plot::x#1 x zp[2]:4 1.000000000001E12 +(word) bitmap_plot::x#2 x zp[2]:4 1.000000001E9 +(word) bitmap_plot::x#3 x zp[2]:4 1.000000000001E12 +(word) bitmap_plot::x#4 x zp[2]:4 5.5005000000015E12 (byte) bitmap_plot::y (byte) bitmap_plot::y#0 reg byte a 2.000000002E9 (byte) bitmap_plot::y#1 reg byte a 2.000000000002E12 @@ -11448,22 +11412,21 @@ FINAL SYMBOL TABLE (byte) bitmap_plot::y#4 reg byte a 2.2002000000006E13 (const to_nomodify byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (void()) bitmap_plot_spline_8seg() -(byte~) bitmap_plot_spline_8seg::$3 reg byte x 2.500000025E7 -(byte~) bitmap_plot_spline_8seg::$4 reg byte x 1.500000015E8 +(byte~) bitmap_plot_spline_8seg::$4 zp[1]:37 4.285714328571428E7 (label) bitmap_plot_spline_8seg::@1 (label) bitmap_plot_spline_8seg::@2 (label) bitmap_plot_spline_8seg::@return (signed word) bitmap_plot_spline_8seg::current_x -(signed word) bitmap_plot_spline_8seg::current_x#0 current_x zp[2]:3 100001.0 -(signed word) bitmap_plot_spline_8seg::current_x#1 current_x zp[2]:3 5.00000005E7 -(signed word) bitmap_plot_spline_8seg::current_x#2 current_x zp[2]:3 5.0050001E7 +(signed word) bitmap_plot_spline_8seg::current_x#0 current_x zp[2]:4 100001.0 +(signed word) bitmap_plot_spline_8seg::current_x#1 current_x zp[2]:4 5.00000005E7 +(signed word) bitmap_plot_spline_8seg::current_x#2 current_x zp[2]:4 5.0050001E7 (signed word) bitmap_plot_spline_8seg::current_y -(signed word) bitmap_plot_spline_8seg::current_y#0 current_y zp[2]:5 200002.0 -(signed word) bitmap_plot_spline_8seg::current_y#1 current_y zp[2]:5 6.6666667333333336E7 -(signed word) bitmap_plot_spline_8seg::current_y#2 current_y zp[2]:5 3.3366667333333336E7 +(signed word) bitmap_plot_spline_8seg::current_y#0 current_y zp[2]:6 200002.0 +(signed word) bitmap_plot_spline_8seg::current_y#1 current_y zp[2]:6 6.6666667333333336E7 +(signed word) bitmap_plot_spline_8seg::current_y#2 current_y zp[2]:6 3.3366667333333336E7 (byte) bitmap_plot_spline_8seg::n -(byte) bitmap_plot_spline_8seg::n#1 n zp[1]:15 1.500000015E8 -(byte) bitmap_plot_spline_8seg::n#2 n zp[1]:15 4.00000004E7 +(byte) bitmap_plot_spline_8seg::n#1 n zp[1]:24 1.500000015E8 +(byte) bitmap_plot_spline_8seg::n#2 n zp[1]:24 3.3333333666666664E7 (const to_nomodify byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) } (byte*) bitmap_screen @@ -11505,21 +11468,21 @@ FINAL SYMBOL TABLE (byte) memset::c (byte) memset::c#4 reg byte x 12500.125 (byte*) memset::dst -(byte*) memset::dst#1 dst zp[2]:11 200002.0 -(byte*) memset::dst#2 dst zp[2]:11 133668.3333333333 -(byte*) memset::dst#4 dst zp[2]:11 2002.0 +(byte*) memset::dst#1 dst zp[2]:12 200002.0 +(byte*) memset::dst#2 dst zp[2]:12 133668.3333333333 +(byte*) memset::dst#4 dst zp[2]:12 2002.0 (byte*) memset::end -(byte*) memset::end#0 end zp[2]:9 16833.666666666664 +(byte*) memset::end#0 end zp[2]:10 16833.666666666664 (word) memset::num -(word) memset::num#2 num zp[2]:9 1001.0 +(word) memset::num#2 num zp[2]:10 1001.0 (void*) memset::return (void*) memset::str -(void*) memset::str#3 str zp[2]:11 +(void*) memset::str#3 str zp[2]:12 (signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b) -(word~) mulf16s::$11 zp[2]:39 2000002.0 -(word~) mulf16s::$12 zp[2]:41 2000002.0 -(word~) mulf16s::$6 zp[2]:39 2000002.0 -(word~) mulf16s::$9 zp[2]:41 2000002.0 +(word~) mulf16s::$11 zp[2]:40 2000002.0 +(word~) mulf16s::$12 zp[2]:42 2000002.0 +(word~) mulf16s::$6 zp[2]:40 2000002.0 +(word~) mulf16s::$9 zp[2]:42 2000002.0 (label) mulf16s::@1 (label) mulf16s::@2 (label) mulf16s::@3 @@ -11553,9 +11516,9 @@ FINAL SYMBOL TABLE (dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b) (label) mulf16u::@return (word) mulf16u::a -(word) mulf16u::a#0 a zp[2]:41 5500001.0 +(word) mulf16u::a#0 a zp[2]:42 5500001.0 (word) mulf16u::b -(word) mulf16u::b#0 b zp[2]:37 5500001.0 +(word) mulf16u::b#0 b zp[2]:38 5500001.0 (const nomodify word*) mulf16u::memA = (word*) 248 (const nomodify word*) mulf16u::memB = (word*) 250 (const nomodify dword*) mulf16u::memR = (dword*) 252 @@ -11577,28 +11540,28 @@ FINAL SYMBOL TABLE (label) mulf_init::@9 (label) mulf_init::@return (byte) mulf_init::c -(byte) mulf_init::c#1 c zp[1]:24 23.307692307692307 -(byte) mulf_init::c#2 c zp[1]:24 101.0 +(byte) mulf_init::c#1 c zp[1]:3 23.307692307692307 +(byte) mulf_init::c#2 c zp[1]:3 101.0 (byte) mulf_init::dir -(byte) mulf_init::dir#2 dir zp[1]:15 37.875 -(byte) mulf_init::dir#4 dir zp[1]:15 101.0 +(byte) mulf_init::dir#2 dir zp[1]:24 37.875 +(byte) mulf_init::dir#4 dir zp[1]:24 101.0 (word) mulf_init::sqr -(word) mulf_init::sqr#1 sqr zp[2]:11 101.0 -(word) mulf_init::sqr#2 sqr zp[2]:11 202.0 -(word) mulf_init::sqr#3 sqr zp[2]:11 84.16666666666666 -(word) mulf_init::sqr#4 sqr zp[2]:11 50.5 +(word) mulf_init::sqr#1 sqr zp[2]:12 101.0 +(word) mulf_init::sqr#2 sqr zp[2]:12 202.0 +(word) mulf_init::sqr#3 sqr zp[2]:12 84.16666666666666 +(word) mulf_init::sqr#4 sqr zp[2]:12 50.5 (byte*) mulf_init::sqr1_hi -(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:3 67.33333333333333 -(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:3 25.25 +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:4 67.33333333333333 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:4 25.25 (byte*) mulf_init::sqr1_lo -(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:7 202.0 -(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:7 28.857142857142858 +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:8 202.0 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:8 28.857142857142858 (byte*) mulf_init::sqr2_hi -(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:9 33.666666666666664 -(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:9 75.75 +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:10 33.666666666666664 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:10 75.75 (byte*) mulf_init::sqr2_lo -(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:5 202.0 -(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:5 44.888888888888886 +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:6 202.0 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:6 44.888888888888886 (byte) mulf_init::x_2 (byte) mulf_init::x_2#1 reg byte x 101.0 (byte) mulf_init::x_2#2 reg byte x 50.5 @@ -11613,7 +11576,7 @@ FINAL SYMBOL TABLE (struct SplineVector16()) rotate((signed word) rotate::vector_x , (signed word) rotate::vector_y , (byte) rotate::angle) (signed dword~) rotate::$0 zp[4]:20 100001.0 (signed word~) rotate::$10 zp[2]:29 200002.0 -(signed word~) rotate::$11 zp[2]:43 200002.0 +(signed word~) rotate::$11 zp[2]:44 200002.0 (signed word~) rotate::$12 zp[2]:31 200002.0 (signed word~) rotate::$13 zp[2]:33 200002.0 (signed dword~) rotate::$2 zp[4]:20 100001.0 @@ -11636,32 +11599,32 @@ FINAL SYMBOL TABLE (signed word) rotate::cos_a#0 cos_a zp[2]:16 37500.375 (struct SplineVector16) rotate::return (signed word) rotate::return_x -(signed word) rotate::return_x#0 return_x zp[2]:11 10001.0 -(signed word) rotate::return_x#1 return_x zp[2]:11 10001.0 -(signed word) rotate::return_x#2 return_x zp[2]:11 24000.600000000002 +(signed word) rotate::return_x#0 return_x zp[2]:12 10001.0 +(signed word) rotate::return_x#1 return_x zp[2]:12 10001.0 +(signed word) rotate::return_x#2 return_x zp[2]:12 24000.600000000002 (signed word) rotate::return_y -(signed word) rotate::return_y#0 return_y zp[2]:13 10001.0 -(signed word) rotate::return_y#1 return_y zp[2]:13 10001.0 -(signed word) rotate::return_y#2 return_y zp[2]:13 20000.5 +(signed word) rotate::return_y#0 return_y zp[2]:14 10001.0 +(signed word) rotate::return_y#1 return_y zp[2]:14 10001.0 +(signed word) rotate::return_y#2 return_y zp[2]:14 20000.5 (signed word) rotate::rotated_x (signed word) rotate::rotated_y (signed word) rotate::sin_a (signed word) rotate::sin_a#0 sin_a zp[2]:16 33333.66666666667 (struct SplineVector16) rotate::vector (signed word) rotate::vector_x -(signed word) rotate::vector_x#0 vector_x zp[2]:7 6667.333333333333 -(signed word) rotate::vector_x#1 vector_x zp[2]:7 6667.333333333333 -(signed word) rotate::vector_x#2 vector_x zp[2]:7 8461.692307692309 +(signed word) rotate::vector_x#0 vector_x zp[2]:8 6667.333333333333 +(signed word) rotate::vector_x#1 vector_x zp[2]:8 6667.333333333333 +(signed word) rotate::vector_x#2 vector_x zp[2]:8 8461.692307692309 (signed word) rotate::vector_y -(signed word) rotate::vector_y#0 vector_y zp[2]:9 10001.0 -(signed word) rotate::vector_y#1 vector_y zp[2]:9 10001.0 -(signed word) rotate::vector_y#2 vector_y zp[2]:9 12222.444444444445 +(signed word) rotate::vector_y#0 vector_y zp[2]:10 10001.0 +(signed word) rotate::vector_y#1 vector_y zp[2]:10 10001.0 +(signed word) rotate::vector_y#2 vector_y zp[2]:10 12222.444444444445 (signed word) rotate::xr (signed word) rotate::xr#0 xr zp[2]:29 12500.125 (signed word) rotate::xr#1 xr zp[2]:29 22222.444444444445 (signed word) rotate::yr -(signed word) rotate::yr#0 yr zp[2]:43 11764.823529411764 -(signed word) rotate::yr#1 yr zp[2]:43 100001.0 +(signed word) rotate::yr#0 yr zp[2]:44 11764.823529411764 +(signed word) rotate::yr#1 yr zp[2]:44 100001.0 (word()) sgn_u16((word) sgn_u16::w) (byte~) sgn_u16::$0 reg byte a 2.0000000002E10 (byte~) sgn_u16::$1 reg byte a 2.0000000002E10 @@ -11672,16 +11635,14 @@ FINAL SYMBOL TABLE (word) sgn_u16::return#1 return zp[2]:31 2.000000002E9 (word) sgn_u16::return#4 return zp[2]:31 5.000000005E8 (word) sgn_u16::w -(word) sgn_u16::w#0 w zp[2]:43 2.000000002E9 -(word) sgn_u16::w#1 w zp[2]:43 2.000000002E9 -(word) sgn_u16::w#2 w zp[2]:43 1.2000000003E10 +(word) sgn_u16::w#0 w zp[2]:44 2.000000002E9 +(word) sgn_u16::w#1 w zp[2]:44 2.000000002E9 +(word) sgn_u16::w#2 w zp[2]:44 1.2000000003E10 (void()) show_letter((byte) show_letter::angle) (byte~) show_letter::$16 reg byte x 15001.5 (byte~) show_letter::$17 reg byte x 15001.5 (byte~) show_letter::$18 reg byte a 20002.0 -(byte~) show_letter::$19 reg byte a 20002.0 -(byte~) show_letter::$21 reg byte a 20002.0 -(byte~) show_letter::$23 reg byte a 20002.0 +(byte~) show_letter::$21 zp[1]:24 1290.4516129032259 (label) show_letter::@1 (label) show_letter::@2 (label) show_letter::@3 @@ -11693,18 +11654,18 @@ FINAL SYMBOL TABLE (label) show_letter::@9 (label) show_letter::@return (byte) show_letter::angle -(byte) show_letter::angle#0 angle zp[1]:2 345.05172413793105 +(byte) show_letter::angle#0 angle zp[1]:2 357.375 (signed word) show_letter::current_x -(signed word) show_letter::current_x#10 current_x_1 zp[2]:25 769.3076923076924 -(signed word) show_letter::current_x#11 current_x zp[2]:3 10001.0 -(signed word) show_letter::current_x#4 current_x zp[2]:3 526.3684210526316 +(signed word) show_letter::current_x#10 current_x_1 zp[2]:25 810.8918918918919 +(signed word) show_letter::current_x#11 current_x zp[2]:4 10001.0 +(signed word) show_letter::current_x#4 current_x zp[2]:4 555.6111111111111 (signed word) show_letter::current_y -(signed word) show_letter::current_y#10 current_y_1 zp[2]:27 769.3076923076924 -(signed word) show_letter::current_y#11 current_y zp[2]:5 20002.0 -(signed word) show_letter::current_y#4 current_y zp[2]:5 500.05 +(signed word) show_letter::current_y#10 current_y_1 zp[2]:27 810.8918918918919 +(signed word) show_letter::current_y#11 current_y zp[2]:6 20002.0 +(signed word) show_letter::current_y#4 current_y zp[2]:6 526.3684210526316 (byte) show_letter::i -(byte) show_letter::i#1 i zp[1]:24 7500.75 -(byte) show_letter::i#10 i zp[1]:24 1538.6153846153845 +(byte) show_letter::i#1 i zp[1]:3 7500.75 +(byte) show_letter::i#10 i zp[1]:3 1200.1200000000001 (struct SplineVector16) show_letter::segment_to (signed word) show_letter::segment_to_x (signed word) show_letter::segment_to_y @@ -11712,92 +11673,92 @@ FINAL SYMBOL TABLE (byte) show_letter::segment_type#0 reg byte a 15001.5 (struct SplineVector16) show_letter::segment_via (signed word) show_letter::segment_via_x -(signed word) show_letter::segment_via_x#0 segment_via_x zp[2]:11 2222.4444444444443 +(signed word) show_letter::segment_via_x#0 segment_via_x zp[2]:12 2500.25 (signed word) show_letter::segment_via_y -(signed word) show_letter::segment_via_y#0 segment_via_y zp[2]:13 2222.4444444444443 +(signed word) show_letter::segment_via_y#0 segment_via_y zp[2]:14 2500.25 (signed word) show_letter::to_x -(signed word) show_letter::to_x#0 to_x zp[2]:7 10001.0 -(signed word) show_letter::to_x#1 to_x zp[2]:7 10001.0 -(signed word) show_letter::to_x#2 to_x_1 zp[2]:11 10001.0 +(signed word) show_letter::to_x#0 to_x zp[2]:8 10001.0 +(signed word) show_letter::to_x#1 to_x zp[2]:8 10001.0 +(signed word) show_letter::to_x#2 to_x_1 zp[2]:12 10001.0 (signed word) show_letter::to_y -(signed word) show_letter::to_y#0 to_y zp[2]:9 10001.0 -(signed word) show_letter::to_y#1 to_y zp[2]:9 10001.0 -(signed word) show_letter::to_y#2 to_y_1 zp[2]:13 10001.0 +(signed word) show_letter::to_y#0 to_y zp[2]:10 10001.0 +(signed word) show_letter::to_y#1 to_y zp[2]:10 10001.0 +(signed word) show_letter::to_y#2 to_y_1 zp[2]:14 10001.0 (signed word) show_letter::via_x -(signed word) show_letter::via_x#0 via_x zp[2]:7 10001.0 -(signed word) show_letter::via_x#1 via_x zp[2]:7 10001.0 -(signed word) show_letter::via_x#2 via_x_1 zp[2]:11 10001.0 +(signed word) show_letter::via_x#0 via_x zp[2]:8 10001.0 +(signed word) show_letter::via_x#1 via_x zp[2]:8 10001.0 +(signed word) show_letter::via_x#2 via_x_1 zp[2]:12 10001.0 (signed word) show_letter::via_y -(signed word) show_letter::via_y#0 via_y zp[2]:9 10001.0 -(signed word) show_letter::via_y#1 via_y zp[2]:9 10001.0 -(signed word) show_letter::via_y#2 via_y_1 zp[2]:13 10001.0 +(signed word) show_letter::via_y#0 via_y zp[2]:10 10001.0 +(signed word) show_letter::via_y#1 via_y zp[2]:10 10001.0 +(signed word) show_letter::via_y#2 via_y_1 zp[2]:14 10001.0 (void()) spline_8segB((signed word) spline_8segB::p0_x , (signed word) spline_8segB::p0_y , (signed word) spline_8segB::p1_x , (signed word) spline_8segB::p1_y , (signed word) spline_8segB::p2_x , (signed word) spline_8segB::p2_y) (signed word~) spline_8segB::$0 zp[2]:35 200002.0 (signed word~) spline_8segB::$1 zp[2]:35 200002.0 -(signed word~) spline_8segB::$10 zp[2]:11 200002.0 -(signed word~) spline_8segB::$12 zp[2]:13 200002.0 -(signed word~) spline_8segB::$18 zp[2]:3 200002.0 -(signed word~) spline_8segB::$19 zp[2]:3 66667.33333333333 -(signed word~) spline_8segB::$20 zp[2]:5 200002.0 -(signed word~) spline_8segB::$21 zp[2]:5 100001.0 -(signed word~) spline_8segB::$22 zp[2]:37 2.00000002E8 -(signed word~) spline_8segB::$23 zp[2]:37 5.00000005E7 -(signed word~) spline_8segB::$24 zp[2]:39 2.00000002E8 -(signed word~) spline_8segB::$25 zp[2]:39 6.6666667333333336E7 -(signed word~) spline_8segB::$3 zp[2]:41 200002.0 +(signed word~) spline_8segB::$10 zp[2]:12 200002.0 +(signed word~) spline_8segB::$12 zp[2]:14 200002.0 +(signed word~) spline_8segB::$18 zp[2]:4 200002.0 +(signed word~) spline_8segB::$19 zp[2]:4 66667.33333333333 +(signed word~) spline_8segB::$20 zp[2]:6 200002.0 +(signed word~) spline_8segB::$21 zp[2]:6 100001.0 +(signed word~) spline_8segB::$22 zp[2]:38 2.00000002E8 +(signed word~) spline_8segB::$23 zp[2]:38 5.00000005E7 +(signed word~) spline_8segB::$24 zp[2]:40 2.00000002E8 +(signed word~) spline_8segB::$25 zp[2]:40 6.6666667333333336E7 +(signed word~) spline_8segB::$3 zp[2]:42 200002.0 (byte~) spline_8segB::$31 reg byte x 1.500000015E8 -(signed word~) spline_8segB::$4 zp[2]:41 200002.0 -(signed word~) spline_8segB::$6 zp[2]:11 200002.0 -(signed word~) spline_8segB::$8 zp[2]:13 200002.0 +(signed word~) spline_8segB::$4 zp[2]:42 200002.0 +(signed word~) spline_8segB::$6 zp[2]:12 200002.0 +(signed word~) spline_8segB::$8 zp[2]:14 200002.0 (label) spline_8segB::@1 (label) spline_8segB::@2 (label) spline_8segB::@return (signed word) spline_8segB::a_x (signed word) spline_8segB::a_x#0 a_x zp[2]:35 25000.25 (signed word) spline_8segB::a_y -(signed word) spline_8segB::a_y#0 a_y zp[2]:41 30000.300000000003 +(signed word) spline_8segB::a_y#0 a_y zp[2]:42 30000.300000000003 (signed word) spline_8segB::b_x -(signed word) spline_8segB::b_x#0 b_x zp[2]:11 66667.33333333333 +(signed word) spline_8segB::b_x#0 b_x zp[2]:12 66667.33333333333 (signed word) spline_8segB::b_y -(signed word) spline_8segB::b_y#0 b_y zp[2]:13 66667.33333333333 +(signed word) spline_8segB::b_y#0 b_y zp[2]:14 66667.33333333333 (signed word) spline_8segB::i_x -(signed word) spline_8segB::i_x#0 i_x zp[2]:11 28571.714285714286 -(signed word) spline_8segB::i_x#1 i_x zp[2]:11 5.00000005E7 -(signed word) spline_8segB::i_x#2 i_x zp[2]:11 3.00100004E7 +(signed word) spline_8segB::i_x#0 i_x zp[2]:12 28571.714285714286 +(signed word) spline_8segB::i_x#1 i_x zp[2]:12 5.00000005E7 +(signed word) spline_8segB::i_x#2 i_x zp[2]:12 3.00100004E7 (signed word) spline_8segB::i_y -(signed word) spline_8segB::i_y#0 i_y zp[2]:13 40000.4 -(signed word) spline_8segB::i_y#1 i_y zp[2]:13 6.6666667333333336E7 -(signed word) spline_8segB::i_y#2 i_y zp[2]:13 2.7281818545454547E7 +(signed word) spline_8segB::i_y#0 i_y zp[2]:14 40000.4 +(signed word) spline_8segB::i_y#1 i_y zp[2]:14 6.6666667333333336E7 +(signed word) spline_8segB::i_y#2 i_y zp[2]:14 2.7281818545454547E7 (signed word) spline_8segB::j_x (signed word) spline_8segB::j_x#0 j_x zp[2]:35 5561111.222222222 (signed word) spline_8segB::j_y -(signed word) spline_8segB::j_y#0 j_y zp[2]:41 5888235.411764706 +(signed word) spline_8segB::j_y#0 j_y zp[2]:42 5888235.411764706 (byte) spline_8segB::n (byte) spline_8segB::n#1 reg byte y 1.500000015E8 (byte) spline_8segB::n#2 reg byte y 2.500000025E7 (struct SplineVector16) spline_8segB::p0 (signed word) spline_8segB::p0_x -(signed word) spline_8segB::p0_x#0 p0_x zp[2]:3 14091.090909090908 +(signed word) spline_8segB::p0_x#0 p0_x zp[2]:4 14091.090909090908 (signed word) spline_8segB::p0_y -(signed word) spline_8segB::p0_y#0 p0_y zp[2]:5 14091.090909090908 +(signed word) spline_8segB::p0_y#0 p0_y zp[2]:6 14091.090909090908 (struct SplineVector16) spline_8segB::p1 (signed word) spline_8segB::p1_x -(signed word) spline_8segB::p1_x#0 p1_x zp[2]:11 21000.300000000003 +(signed word) spline_8segB::p1_x#0 p1_x zp[2]:12 21000.300000000003 (signed word) spline_8segB::p1_y -(signed word) spline_8segB::p1_y#0 p1_y zp[2]:13 19091.181818181816 +(signed word) spline_8segB::p1_y#0 p1_y zp[2]:14 19091.181818181816 (struct SplineVector16) spline_8segB::p2 (signed word) spline_8segB::p2_x (signed word) spline_8segB::p2_x#0 p2_x zp[2]:25 36667.33333333333 (signed word) spline_8segB::p2_y (signed word) spline_8segB::p2_y#0 p2_y zp[2]:27 22000.4 (signed word) spline_8segB::p_x -(signed word) spline_8segB::p_x#0 p_x zp[2]:3 100001.0 -(signed word) spline_8segB::p_x#1 p_x zp[2]:3 3.33500005E7 -(signed word) spline_8segB::p_x#2 p_x zp[2]:3 3.75125005E7 +(signed word) spline_8segB::p_x#0 p_x zp[2]:4 100001.0 +(signed word) spline_8segB::p_x#1 p_x zp[2]:4 3.33500005E7 +(signed word) spline_8segB::p_x#2 p_x zp[2]:4 3.75125005E7 (signed word) spline_8segB::p_y -(signed word) spline_8segB::p_y#0 p_y zp[2]:5 200002.0 -(signed word) spline_8segB::p_y#1 p_y zp[2]:5 2.8585714714285716E7 -(signed word) spline_8segB::p_y#2 p_y zp[2]:5 3.3344444888888888E7 +(signed word) spline_8segB::p_y#0 p_y zp[2]:6 200002.0 +(signed word) spline_8segB::p_y#1 p_y zp[2]:6 2.8585714714285716E7 +(signed word) spline_8segB::p_y#2 p_y zp[2]:6 3.3344444888888888E7 zp[1]:2 [ main::angle#2 main::angle#1 show_letter::angle#0 ] reg byte x [ main::w#4 main::w#1 ] @@ -11806,16 +11767,16 @@ reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] -zp[2]:3 [ show_letter::current_x#4 show_letter::current_x#11 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 spline_8segB::p0_x#0 spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 spline_8segB::$18 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#1 spline_8segB::$19 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -zp[2]:5 [ show_letter::current_y#4 show_letter::current_y#11 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 spline_8segB::p0_y#0 spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 spline_8segB::$20 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#1 spline_8segB::$21 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] +zp[1]:3 [ show_letter::i#10 show_letter::i#1 mulf_init::c#2 mulf_init::c#1 ] +zp[2]:4 [ show_letter::current_x#4 show_letter::current_x#11 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#0 bitmap_line::x1#1 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 spline_8segB::p0_x#0 spline_8segB::p_x#2 spline_8segB::p_x#0 spline_8segB::p_x#1 spline_8segB::$18 bitmap_plot_spline_8seg::current_x#2 bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::current_x#1 spline_8segB::$19 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +zp[2]:6 [ show_letter::current_y#4 show_letter::current_y#11 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#0 bitmap_line::y1#1 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 spline_8segB::p0_y#0 spline_8segB::p_y#2 spline_8segB::p_y#0 spline_8segB::p_y#1 spline_8segB::$20 bitmap_plot_spline_8seg::current_y#2 bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::current_y#1 spline_8segB::$21 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] reg byte x [ memset::c#4 ] reg byte y [ rotate::angle#2 rotate::angle#0 rotate::angle#1 ] -zp[2]:7 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 show_letter::to_x#1 show_letter::via_x#1 show_letter::to_x#0 show_letter::via_x#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] -zp[2]:9 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 show_letter::to_y#1 show_letter::via_y#1 show_letter::to_y#0 show_letter::via_y#0 memset::num#2 memset::end#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] +zp[2]:8 [ rotate::vector_x#2 rotate::vector_x#0 rotate::vector_x#1 show_letter::to_x#1 show_letter::via_x#1 show_letter::to_x#0 show_letter::via_x#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] +zp[2]:10 [ rotate::vector_y#2 rotate::vector_y#0 rotate::vector_y#1 show_letter::to_y#1 show_letter::via_y#1 show_letter::to_y#0 show_letter::via_y#0 memset::num#2 memset::end#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] reg byte y [ spline_8segB::n#2 spline_8segB::n#1 ] -zp[2]:11 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 spline_8segB::$10 spline_8segB::$6 spline_8segB::b_x#0 show_letter::segment_via_x#0 spline_8segB::p1_x#0 rotate::return_x#0 show_letter::to_x#2 rotate::return_x#2 rotate::return_x#1 show_letter::via_x#2 bitmap_line::x2#10 bitmap_line::x2#13 bitmap_line::x2#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] -zp[2]:13 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 spline_8segB::$12 spline_8segB::$8 spline_8segB::b_y#0 show_letter::segment_via_y#0 spline_8segB::p1_y#0 rotate::return_y#0 show_letter::to_y#2 rotate::return_y#2 rotate::return_y#1 show_letter::via_y#2 bitmap_line::y2#11 bitmap_line::y2#13 bitmap_line::y2#0 ] -zp[1]:15 [ bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 mulf_init::dir#2 mulf_init::dir#4 ] +zp[2]:12 [ spline_8segB::i_x#2 spline_8segB::i_x#0 spline_8segB::i_x#1 spline_8segB::$10 spline_8segB::$6 spline_8segB::b_x#0 show_letter::segment_via_x#0 spline_8segB::p1_x#0 rotate::return_x#0 show_letter::to_x#2 rotate::return_x#2 rotate::return_x#1 show_letter::via_x#2 bitmap_line::x2#10 bitmap_line::x2#13 bitmap_line::x2#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] +zp[2]:14 [ spline_8segB::i_y#2 spline_8segB::i_y#0 spline_8segB::i_y#1 spline_8segB::$12 spline_8segB::$8 spline_8segB::b_y#0 show_letter::segment_via_y#0 spline_8segB::p1_y#0 rotate::return_y#0 show_letter::to_y#2 rotate::return_y#2 rotate::return_y#1 show_letter::via_y#2 bitmap_line::y2#11 bitmap_line::y2#13 bitmap_line::y2#0 ] zp[2]:16 [ mulf16s::a#4 mulf16s::a#0 mulf16s::a#1 mulf16s::a#2 mulf16s::a#3 rotate::cos_a#0 rotate::sin_a#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:18 [ mulf16s::b#4 mulf16s::b#0 mulf16s::b#1 mulf16s::b#2 mulf16s::b#3 bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[4]:20 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 rotate::$0 mulf16s::return#3 rotate::$2 mulf16s::return#4 rotate::$4 mulf16s::return#10 rotate::$6 mulf16u::return#0 ] @@ -11823,17 +11784,14 @@ reg byte a [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 reg byte a [ mulf_init::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] -zp[1]:24 [ bitmap_init::$7 show_letter::i#10 show_letter::i#1 mulf_init::c#2 mulf_init::c#1 ] reg byte a [ bitmap_init::$4 ] reg byte a [ bitmap_init::$5 ] reg byte a [ bitmap_init::$6 ] -reg byte a [ show_letter::$19 ] +zp[1]:24 [ show_letter::$21 bitmap_init::$7 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 mulf_init::dir#2 mulf_init::dir#4 ] reg byte x [ show_letter::$16 ] zp[2]:25 [ show_letter::current_x#10 spline_8segB::p2_x#0 ] zp[2]:27 [ show_letter::current_y#10 spline_8segB::p2_y#0 ] -reg byte a [ show_letter::$21 ] reg byte x [ show_letter::$17 ] -reg byte a [ show_letter::$23 ] reg byte a [ show_letter::$18 ] reg byte a [ show_letter::segment_type#0 ] zp[2]:29 [ rotate::$10 rotate::xr#0 rotate::xr#1 abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ] @@ -11843,21 +11801,20 @@ reg byte x [ rotate::$9 ] zp[2]:33 [ bitmap_line::dx#0 rotate::$13 rotate::$7 ] zp[2]:35 [ spline_8segB::$0 spline_8segB::$1 spline_8segB::a_x#0 spline_8segB::j_x#0 bitmap_line::sx#0 ] reg byte x [ spline_8segB::$31 ] -reg byte x [ bitmap_plot_spline_8seg::$3 ] -reg byte x [ bitmap_plot_spline_8seg::$4 ] -zp[2]:37 [ mulf16u::b#0 spline_8segB::$22 spline_8segB::$23 ] -zp[2]:39 [ mulf16s::$6 mulf16s::$11 spline_8segB::$24 spline_8segB::$25 ] +zp[1]:37 [ bitmap_plot_spline_8seg::$4 ] +zp[2]:38 [ mulf16u::b#0 spline_8segB::$22 spline_8segB::$23 ] +zp[2]:40 [ mulf16s::$6 mulf16s::$11 spline_8segB::$24 spline_8segB::$25 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] -zp[2]:41 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 mulf16s::$9 mulf16s::$12 mulf16u::a#0 spline_8segB::$3 spline_8segB::$4 spline_8segB::a_y#0 spline_8segB::j_y#0 ] -zp[2]:43 [ bitmap_plot::$0 rotate::$11 rotate::yr#0 rotate::yr#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] +zp[2]:42 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 mulf16s::$9 mulf16s::$12 mulf16u::a#0 spline_8segB::$3 spline_8segB::$4 spline_8segB::a_y#0 spline_8segB::j_y#0 ] +zp[2]:44 [ bitmap_plot::$0 rotate::$11 rotate::yr#0 rotate::yr#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] reg byte x [ bitmap_plot::$1 ] FINAL ASSEMBLER -Score: 674154 +Score: 670254 // File Comments // Show a few simple splines using the splines library @@ -11988,17 +11945,17 @@ main: { // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { // x/2 - .label c = $18 + .label c = 3 // Counter used for determining x%2==0 - .label sqr1_hi = 3 + .label sqr1_hi = 4 // Fill mulf_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4 - .label sqr = $b - .label sqr1_lo = 7 + .label sqr = $c + .label sqr1_lo = 8 // Decrease or increase x_255 - initially we decrease - .label sqr2_hi = 9 - .label sqr2_lo = 5 + .label sqr2_hi = $a + .label sqr2_lo = 6 //Start with g(0)=f(255) - .label dir = $f + .label dir = $18 // [24] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] // [24] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuxx=vbuc1 ldx #0 @@ -12191,7 +12148,7 @@ mulf_init: { // Initialize bitmap plotting tables bitmap_init: { .label __7 = $18 - .label yoffs = 7 + .label yoffs = 8 // [53] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] // [53] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 ldx #0 @@ -12297,15 +12254,15 @@ bitmap_clear: { .const col = WHITE<<4 // memset(bitmap_screen, col, 1000uw) // [75] call memset - // [137] phi from bitmap_clear to memset [phi:bitmap_clear->memset] - // [137] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 + // [135] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + // [135] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 ldx #col - // [137] phi (void*) memset::str#3 = (void*)(const nomodify byte*) BITMAP_SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 + // [135] phi (void*) memset::str#3 = (void*)(const nomodify byte*) BITMAP_SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 lda #BITMAP_SCREEN sta.z memset.str+1 - // [137] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 + // [135] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 lda #<$3e8 sta.z memset.num lda #>$3e8 @@ -12315,15 +12272,15 @@ bitmap_clear: { // bitmap_clear::@1 // memset(bitmap_gfx, 0, 8000uw) // [77] call memset - // [137] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] - // [137] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 + // [135] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + // [135] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 ldx #0 - // [137] phi (void*) memset::str#3 = (void*)(const nomodify byte*) BITMAP_GRAPHICS [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 + // [135] phi (void*) memset::str#3 = (void*)(const nomodify byte*) BITMAP_GRAPHICS [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 lda #BITMAP_GRAPHICS sta.z memset.str+1 - // [137] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 + // [135] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 lda #<$1f40 sta.z memset.num lda #>$1f40 @@ -12338,21 +12295,22 @@ bitmap_clear: { // show_letter(byte zp(2) angle) show_letter: { .label angle = 2 - .label to_x = 7 - .label to_y = 9 - .label to_x_1 = $b - .label to_y_1 = $d - .label via_x = 7 - .label via_y = 9 - .label via_x_1 = $b - .label via_y_1 = $d - .label segment_via_x = $b - .label segment_via_y = $d - .label i = $18 - .label current_x = 3 - .label current_y = 5 + .label to_x = 8 + .label to_y = $a + .label to_x_1 = $c + .label to_y_1 = $e + .label via_x = 8 + .label via_y = $a + .label via_x_1 = $c + .label via_y_1 = $e + .label segment_via_x = $c + .label segment_via_y = $e + .label i = 3 + .label current_x = 4 + .label current_y = 6 .label current_x_1 = $19 .label current_y_1 = $1b + .label __21 = $18 // [80] phi from show_letter to show_letter::@1 [phi:show_letter->show_letter::@1] // [80] phi (signed word) show_letter::current_y#4 = (signed word) 0 [phi:show_letter->show_letter::@1#0] -- vwsz1=vwsc1 lda #<0 @@ -12366,12 +12324,13 @@ show_letter: { // show_letter::@1 __b1: // to = letter_c[i].to - // [81] (byte~) show_letter::$19 ← (byte) show_letter::i#10 << (byte) 3 -- vbuaa=vbuz1_rol_3 + // [81] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3 -- vbuz1=vbuz2_rol_3 lda.z i asl asl asl - // [82] (byte~) show_letter::$16 ← (byte~) show_letter::$19 + (byte) show_letter::i#10 -- vbuxx=vbuaa_plus_vbuz1 + sta.z __21 + // [82] (byte~) show_letter::$16 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 -- vbuxx=vbuz1_plus_vbuz2 clc adc.z i tax @@ -12408,10 +12367,10 @@ show_letter: { // [89] (byte) rotate::angle#0 ← (byte) show_letter::angle#0 -- vbuyy=vbuz1 ldy.z angle // [90] call rotate - // [146] phi from show_letter::@1 to rotate [phi:show_letter::@1->rotate] - // [146] phi (signed word) rotate::vector_y#2 = (signed word) rotate::vector_y#0 [phi:show_letter::@1->rotate#0] -- register_copy - // [146] phi (signed word) rotate::vector_x#2 = (signed word) rotate::vector_x#0 [phi:show_letter::@1->rotate#1] -- register_copy - // [146] phi (byte) rotate::angle#2 = (byte) rotate::angle#0 [phi:show_letter::@1->rotate#2] -- register_copy + // [144] phi from show_letter::@1 to rotate [phi:show_letter::@1->rotate] + // [144] phi (signed word) rotate::vector_y#2 = (signed word) rotate::vector_y#0 [phi:show_letter::@1->rotate#0] -- register_copy + // [144] phi (signed word) rotate::vector_x#2 = (signed word) rotate::vector_x#0 [phi:show_letter::@1->rotate#1] -- register_copy + // [144] phi (byte) rotate::angle#2 = (byte) rotate::angle#0 [phi:show_letter::@1->rotate#2] -- register_copy jsr rotate // rotate(to, angle) // [91] (signed word) rotate::return_x#0 ← (signed word) rotate::return_x#2 @@ -12438,27 +12397,23 @@ show_letter: { adc #>$64 sta.z current_y_1+1 // via = letter_c[i].via - // [97] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3 -- vbuaa=vbuz1_rol_3 - lda.z i - asl - asl - asl - // [98] (byte~) show_letter::$17 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 -- vbuxx=vbuaa_plus_vbuz1 + // [97] (byte~) show_letter::$17 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 -- vbuxx=vbuz1_plus_vbuz2 + lda.z __21 clc adc.z i tax - // [99] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$17) -- vwsz1=pwsc1_derefidx_vbuxx + // [98] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$17) -- vwsz1=pwsc1_derefidx_vbuxx lda letter_c+OFFSET_STRUCT_SEGMENT_VIA,x sta.z via_x lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+1,x sta.z via_x+1 - // [100] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17) -- vwsz1=pwsc1_derefidx_vbuxx + // [99] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17) -- vwsz1=pwsc1_derefidx_vbuxx lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y,x sta.z via_y lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x sta.z via_y+1 // via = { via.x - 50, via.y - 150} - // [101] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 -- vwsz1=vwsz1_minus_vbsc1 + // [100] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32 -- vwsz1=vwsz1_minus_vbsc1 lda.z via_x sec sbc #$32 @@ -12466,7 +12421,7 @@ show_letter: { lda.z via_x+1 sbc #>$32 sta.z via_x+1 - // [102] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 -- vwsz1=vwsz1_minus_vwsc1 + // [101] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96 -- vwsz1=vwsz1_minus_vwsc1 lda.z via_y sec sbc #<$96 @@ -12475,25 +12430,25 @@ show_letter: { sbc #>$96 sta.z via_y+1 // rotate(via, angle) - // [103] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 - // [104] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 - // [105] (byte) rotate::angle#1 ← (byte) show_letter::angle#0 -- vbuyy=vbuz1 + // [102] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1 + // [103] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1 + // [104] (byte) rotate::angle#1 ← (byte) show_letter::angle#0 -- vbuyy=vbuz1 ldy.z angle - // [106] call rotate - // [146] phi from show_letter::@6 to rotate [phi:show_letter::@6->rotate] - // [146] phi (signed word) rotate::vector_y#2 = (signed word) rotate::vector_y#1 [phi:show_letter::@6->rotate#0] -- register_copy - // [146] phi (signed word) rotate::vector_x#2 = (signed word) rotate::vector_x#1 [phi:show_letter::@6->rotate#1] -- register_copy - // [146] phi (byte) rotate::angle#2 = (byte) rotate::angle#1 [phi:show_letter::@6->rotate#2] -- register_copy + // [105] call rotate + // [144] phi from show_letter::@6 to rotate [phi:show_letter::@6->rotate] + // [144] phi (signed word) rotate::vector_y#2 = (signed word) rotate::vector_y#1 [phi:show_letter::@6->rotate#0] -- register_copy + // [144] phi (signed word) rotate::vector_x#2 = (signed word) rotate::vector_x#1 [phi:show_letter::@6->rotate#1] -- register_copy + // [144] phi (byte) rotate::angle#2 = (byte) rotate::angle#1 [phi:show_letter::@6->rotate#2] -- register_copy jsr rotate // rotate(via, angle) - // [107] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 - // [108] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 + // [106] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2 + // [107] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2 // show_letter::@7 // via = rotate(via, angle) - // [109] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 - // [110] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 + // [108] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1 + // [109] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1 // via = { via.x + 100, via.y + 100} - // [111] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 -- vwsz1=vwsz1_plus_vbsc1 + // [110] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64 -- vwsz1=vwsz1_plus_vbsc1 lda.z segment_via_x clc adc #<$64 @@ -12501,7 +12456,7 @@ show_letter: { lda.z segment_via_x+1 adc #>$64 sta.z segment_via_x+1 - // [112] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 -- vwsz1=vwsz1_plus_vbsc1 + // [111] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64 -- vwsz1=vwsz1_plus_vbsc1 lda.z segment_via_y clc adc #<$64 @@ -12510,68 +12465,64 @@ show_letter: { adc #>$64 sta.z segment_via_y+1 // segment = { letter_c[i].type, to, via} - // [113] (byte~) show_letter::$23 ← (byte) show_letter::i#10 << (byte) 3 -- vbuaa=vbuz1_rol_3 - lda.z i - asl - asl - asl - // [114] (byte~) show_letter::$18 ← (byte~) show_letter::$23 + (byte) show_letter::i#10 -- vbuaa=vbuaa_plus_vbuz1 + // [112] (byte~) show_letter::$18 ← (byte~) show_letter::$21 + (byte) show_letter::i#10 -- vbuaa=vbuz1_plus_vbuz2 + lda.z __21 clc adc.z i - // [115] (byte) show_letter::segment_type#0 ← *((byte*)(const struct Segment*) letter_c + (byte~) show_letter::$18) -- vbuaa=pbuc1_derefidx_vbuaa + // [113] (byte) show_letter::segment_type#0 ← *((byte*)(const struct Segment*) letter_c + (byte~) show_letter::$18) -- vbuaa=pbuc1_derefidx_vbuaa tay lda letter_c,y // if(segment.type==MOVE_TO) - // [116] if((byte) show_letter::segment_type#0==(const byte) MOVE_TO) goto show_letter::@3 -- vbuaa_eq_vbuc1_then_la1 + // [114] if((byte) show_letter::segment_type#0==(const byte) MOVE_TO) goto show_letter::@3 -- vbuaa_eq_vbuc1_then_la1 cmp #MOVE_TO beq __b3 // show_letter::@4 // if(segment.type==SPLINE_TO) - // [117] if((byte) show_letter::segment_type#0==(const byte) SPLINE_TO) goto show_letter::@2 -- vbuaa_eq_vbuc1_then_la1 + // [115] if((byte) show_letter::segment_type#0==(const byte) SPLINE_TO) goto show_letter::@2 -- vbuaa_eq_vbuc1_then_la1 cmp #SPLINE_TO beq __b2 // show_letter::@5 // bitmap_line((unsigned int)current.x, (unsigned int)current.y, (unsigned int)segment.to.x, (unsigned int)segment.to.y) - // [118] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 - // [119] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 - // [120] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 -- vwuz1=vwuz2 + // [116] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4 + // [117] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4 + // [118] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10 -- vwuz1=vwuz2 lda.z current_x_1 sta.z bitmap_line.x2 lda.z current_x_1+1 sta.z bitmap_line.x2+1 - // [121] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 -- vwuz1=vwuz2 + // [119] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10 -- vwuz1=vwuz2 lda.z current_y_1 sta.z bitmap_line.y2 lda.z current_y_1+1 sta.z bitmap_line.y2+1 - // [122] call bitmap_line - // [184] phi from show_letter::@5 to bitmap_line [phi:show_letter::@5->bitmap_line] - // [184] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#0 [phi:show_letter::@5->bitmap_line#0] -- register_copy - // [184] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#0 [phi:show_letter::@5->bitmap_line#1] -- register_copy - // [184] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#0 [phi:show_letter::@5->bitmap_line#2] -- register_copy - // [184] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#0 [phi:show_letter::@5->bitmap_line#3] -- register_copy + // [120] call bitmap_line + // [182] phi from show_letter::@5 to bitmap_line [phi:show_letter::@5->bitmap_line] + // [182] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#0 [phi:show_letter::@5->bitmap_line#0] -- register_copy + // [182] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#0 [phi:show_letter::@5->bitmap_line#1] -- register_copy + // [182] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#0 [phi:show_letter::@5->bitmap_line#2] -- register_copy + // [182] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#0 [phi:show_letter::@5->bitmap_line#3] -- register_copy jsr bitmap_line // show_letter::@3 __b3: // for( byte i: 0..21) - // [123] (byte) show_letter::i#1 ← ++ (byte) show_letter::i#10 -- vbuz1=_inc_vbuz1 + // [121] (byte) show_letter::i#1 ← ++ (byte) show_letter::i#10 -- vbuz1=_inc_vbuz1 inc.z i - // [124] if((byte) show_letter::i#1!=(byte) $16) goto show_letter::@9 -- vbuz1_neq_vbuc1_then_la1 + // [122] if((byte) show_letter::i#1!=(byte) $16) goto show_letter::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$16 cmp.z i bne __b9 // show_letter::@return // } - // [125] return + // [123] return rts // show_letter::@9 __b9: - // [126] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 -- vwsz1=vwsz2 + // [124] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10 -- vwsz1=vwsz2 lda.z current_x_1 sta.z current_x lda.z current_x_1+1 sta.z current_x+1 - // [127] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 -- vwsz1=vwsz2 + // [125] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10 -- vwsz1=vwsz2 lda.z current_y_1 sta.z current_y lda.z current_y_1+1 @@ -12584,31 +12535,31 @@ show_letter: { // show_letter::@2 __b2: // spline_8segB(current, segment.via, segment.to) - // [128] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 - // [129] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 - // [130] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 - // [131] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 - // [132] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 - // [133] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 - // [134] call spline_8segB + // [126] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4 + // [127] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4 + // [128] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0 + // [129] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0 + // [130] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10 + // [131] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10 + // [132] call spline_8segB jsr spline_8segB - // [135] phi from show_letter::@2 to show_letter::@8 [phi:show_letter::@2->show_letter::@8] + // [133] phi from show_letter::@2 to show_letter::@8 [phi:show_letter::@2->show_letter::@8] // show_letter::@8 // bitmap_plot_spline_8seg() - // [136] call bitmap_plot_spline_8seg + // [134] call bitmap_plot_spline_8seg jsr bitmap_plot_spline_8seg jmp __b3 } // memset // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. -// memset(void* zp($b) str, byte register(X) c, word zp(9) num) +// memset(void* zp($c) str, byte register(X) c, word zp($a) num) memset: { - .label end = 9 - .label dst = $b - .label num = 9 - .label str = $b + .label end = $a + .label dst = $c + .label num = $a + .label str = $c // if(num>0) - // [138] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + // [136] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 lda.z num bne !+ lda.z num+1 @@ -12616,7 +12567,7 @@ memset: { !: // memset::@1 // end = (char*)str + num - // [139] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 + // [137] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 lda.z end clc adc.z str @@ -12624,13 +12575,13 @@ memset: { lda.z end+1 adc.z str+1 sta.z end+1 - // [140] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 - // [141] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] - // [141] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy + // [138] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 + // [139] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] + // [139] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy // memset::@2 __b2: // for(char* dst = str; dst!=end; dst++) - // [142] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 + // [140] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 lda.z dst+1 cmp.z end+1 bne __b3 @@ -12640,17 +12591,17 @@ memset: { // memset::@return __breturn: // } - // [143] return + // [141] return rts // memset::@3 __b3: // *dst = c - // [144] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuxx + // [142] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuxx txa ldy #0 sta (dst),y // for(char* dst = str; dst!=end; dst++) - // [145] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [143] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 @@ -12659,7 +12610,7 @@ memset: { } // rotate // 2D-rotate a vector by an angle -// rotate(signed word zp(7) vector_x, signed word zp(9) vector_y, byte register(Y) angle) +// rotate(signed word zp(8) vector_x, signed word zp($a) vector_y, byte register(Y) angle) rotate: { .label __0 = $14 .label __2 = $14 @@ -12668,19 +12619,19 @@ rotate: { .label __6 = $14 .label __7 = $21 .label __10 = $1d - .label __11 = $2b + .label __11 = $2c .label __12 = $1f .label __13 = $21 - .label vector_x = 7 - .label vector_y = 9 - .label return_x = $b - .label return_y = $d + .label vector_x = 8 + .label vector_y = $a + .label return_x = $c + .label return_y = $e .label cos_a = $10 .label xr = $1d - .label yr = $2b + .label yr = $2c .label sin_a = $10 // cos_a = (signed int) COS[angle] - // [147] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) -- vwsz1=_sword_pbsc1_derefidx_vbuyy + // [145] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2) -- vwsz1=_sword_pbsc1_derefidx_vbuyy lda COS,y sta.z cos_a ora #$7f @@ -12689,59 +12640,59 @@ rotate: { !: sta.z cos_a+1 // mulf16s(cos_a, vector.x) - // [148] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 - // [149] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 -- vwsz1=vwsz2 + // [146] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0 + // [147] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2 -- vwsz1=vwsz2 lda.z vector_x sta.z mulf16s.b lda.z vector_x+1 sta.z mulf16s.b+1 - // [150] call mulf16s - // [290] phi from rotate to mulf16s [phi:rotate->mulf16s] - // [290] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#0 [phi:rotate->mulf16s#0] -- register_copy - // [290] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#0 [phi:rotate->mulf16s#1] -- register_copy + // [148] call mulf16s + // [287] phi from rotate to mulf16s [phi:rotate->mulf16s] + // [287] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#0 [phi:rotate->mulf16s#0] -- register_copy + // [287] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#0 [phi:rotate->mulf16s#1] -- register_copy jsr mulf16s // mulf16s(cos_a, vector.x) - // [151] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 + // [149] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 // rotate::@1 - // [152] (signed dword~) rotate::$0 ← (signed dword) mulf16s::return#2 + // [150] (signed dword~) rotate::$0 ← (signed dword) mulf16s::return#2 // (signed int )mulf16s(cos_a, vector.x)*2 - // [153] (signed word~) rotate::$10 ← (signed word)(signed dword~) rotate::$0 -- vwsz1=_sword_vdsz2 + // [151] (signed word~) rotate::$10 ← (signed word)(signed dword~) rotate::$0 -- vwsz1=_sword_vdsz2 lda.z __0 sta.z __10 lda.z __0+1 sta.z __10+1 // xr = (signed int )mulf16s(cos_a, vector.x)*2 - // [154] (signed word) rotate::xr#0 ← (signed word~) rotate::$10 << (byte) 1 -- vwsz1=vwsz1_rol_1 + // [152] (signed word) rotate::xr#0 ← (signed word~) rotate::$10 << (byte) 1 -- vwsz1=vwsz1_rol_1 asl.z xr rol.z xr+1 // mulf16s(cos_a, vector.y) - // [155] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 - // [156] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 -- vwsz1=vwsz2 + // [153] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0 + // [154] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2 -- vwsz1=vwsz2 lda.z vector_y sta.z mulf16s.b lda.z vector_y+1 sta.z mulf16s.b+1 - // [157] call mulf16s - // [290] phi from rotate::@1 to mulf16s [phi:rotate::@1->mulf16s] - // [290] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#1 [phi:rotate::@1->mulf16s#0] -- register_copy - // [290] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#1 [phi:rotate::@1->mulf16s#1] -- register_copy + // [155] call mulf16s + // [287] phi from rotate::@1 to mulf16s [phi:rotate::@1->mulf16s] + // [287] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#1 [phi:rotate::@1->mulf16s#0] -- register_copy + // [287] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#1 [phi:rotate::@1->mulf16s#1] -- register_copy jsr mulf16s // mulf16s(cos_a, vector.y) - // [158] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 + // [156] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0 // rotate::@2 - // [159] (signed dword~) rotate::$2 ← (signed dword) mulf16s::return#3 + // [157] (signed dword~) rotate::$2 ← (signed dword) mulf16s::return#3 // (signed int )mulf16s(cos_a, vector.y)*2 - // [160] (signed word~) rotate::$11 ← (signed word)(signed dword~) rotate::$2 -- vwsz1=_sword_vdsz2 + // [158] (signed word~) rotate::$11 ← (signed word)(signed dword~) rotate::$2 -- vwsz1=_sword_vdsz2 lda.z __2 sta.z __11 lda.z __2+1 sta.z __11+1 // yr = (signed int )mulf16s(cos_a, vector.y)*2 - // [161] (signed word) rotate::yr#0 ← (signed word~) rotate::$11 << (byte) 1 -- vwsz1=vwsz1_rol_1 + // [159] (signed word) rotate::yr#0 ← (signed word~) rotate::$11 << (byte) 1 -- vwsz1=vwsz1_rol_1 asl.z yr rol.z yr+1 // sin_a = (signed int) SIN[angle] - // [162] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) -- vwsz1=_sword_pbsc1_derefidx_vbuyy + // [160] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2) -- vwsz1=_sword_pbsc1_derefidx_vbuyy // signed fixed[8.8] lda SIN,y sta.z sin_a @@ -12751,32 +12702,32 @@ rotate: { !: sta.z sin_a+1 // mulf16s(sin_a, vector.y) - // [163] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 - // [164] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 -- vwsz1=vwsz2 + // [161] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0 + // [162] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2 -- vwsz1=vwsz2 lda.z vector_y sta.z mulf16s.b lda.z vector_y+1 sta.z mulf16s.b+1 - // [165] call mulf16s - // [290] phi from rotate::@2 to mulf16s [phi:rotate::@2->mulf16s] - // [290] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#2 [phi:rotate::@2->mulf16s#0] -- register_copy - // [290] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#2 [phi:rotate::@2->mulf16s#1] -- register_copy + // [163] call mulf16s + // [287] phi from rotate::@2 to mulf16s [phi:rotate::@2->mulf16s] + // [287] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#2 [phi:rotate::@2->mulf16s#0] -- register_copy + // [287] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#2 [phi:rotate::@2->mulf16s#1] -- register_copy jsr mulf16s // mulf16s(sin_a, vector.y) - // [166] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 + // [164] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0 // rotate::@3 - // [167] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#4 + // [165] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#4 // (signed int)mulf16s(sin_a, vector.y)*2 - // [168] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$4 -- vwsz1=_sword_vdsz2 + // [166] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$4 -- vwsz1=_sword_vdsz2 lda.z __4 sta.z __12 lda.z __4+1 sta.z __12+1 - // [169] (signed word~) rotate::$5 ← (signed word~) rotate::$12 << (byte) 1 -- vwsz1=vwsz1_rol_1 + // [167] (signed word~) rotate::$5 ← (signed word~) rotate::$12 << (byte) 1 -- vwsz1=vwsz1_rol_1 asl.z __5 rol.z __5+1 // xr -= (signed int)mulf16s(sin_a, vector.y)*2 - // [170] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$5 -- vwsz1=vwsz1_minus_vwsz2 + // [168] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$5 -- vwsz1=vwsz1_minus_vwsz2 // signed fixed[0.7] lda.z xr sec @@ -12786,32 +12737,32 @@ rotate: { sbc.z __5+1 sta.z xr+1 // mulf16s(sin_a, vector.x) - // [171] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 - // [172] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 -- vwsz1=vwsz2 + // [169] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0 + // [170] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2 -- vwsz1=vwsz2 lda.z vector_x sta.z mulf16s.b lda.z vector_x+1 sta.z mulf16s.b+1 - // [173] call mulf16s - // [290] phi from rotate::@3 to mulf16s [phi:rotate::@3->mulf16s] - // [290] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#3 [phi:rotate::@3->mulf16s#0] -- register_copy - // [290] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#3 [phi:rotate::@3->mulf16s#1] -- register_copy + // [171] call mulf16s + // [287] phi from rotate::@3 to mulf16s [phi:rotate::@3->mulf16s] + // [287] phi (signed word) mulf16s::b#4 = (signed word) mulf16s::b#3 [phi:rotate::@3->mulf16s#0] -- register_copy + // [287] phi (signed word) mulf16s::a#4 = (signed word) mulf16s::a#3 [phi:rotate::@3->mulf16s#1] -- register_copy jsr mulf16s // mulf16s(sin_a, vector.x) - // [174] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 + // [172] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0 // rotate::@4 - // [175] (signed dword~) rotate::$6 ← (signed dword) mulf16s::return#10 + // [173] (signed dword~) rotate::$6 ← (signed dword) mulf16s::return#10 // (signed int)mulf16s(sin_a, vector.x)*2 - // [176] (signed word~) rotate::$13 ← (signed word)(signed dword~) rotate::$6 -- vwsz1=_sword_vdsz2 + // [174] (signed word~) rotate::$13 ← (signed word)(signed dword~) rotate::$6 -- vwsz1=_sword_vdsz2 lda.z __6 sta.z __13 lda.z __6+1 sta.z __13+1 - // [177] (signed word~) rotate::$7 ← (signed word~) rotate::$13 << (byte) 1 -- vwsz1=vwsz1_rol_1 + // [175] (signed word~) rotate::$7 ← (signed word~) rotate::$13 << (byte) 1 -- vwsz1=vwsz1_rol_1 asl.z __7 rol.z __7+1 // yr += (signed int)mulf16s(sin_a, vector.x)*2 - // [178] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$7 -- vwsz1=vwsz1_plus_vwsz2 + // [176] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$7 -- vwsz1=vwsz1_plus_vwsz2 // signed fixed[8.8] lda.z yr clc @@ -12821,20 +12772,20 @@ rotate: { adc.z __7+1 sta.z yr+1 // >xr - // [179] (byte~) rotate::$8 ← > (signed word) rotate::xr#1 -- vbuaa=_hi_vwsz1 + // [177] (byte~) rotate::$8 ← > (signed word) rotate::xr#1 -- vbuaa=_hi_vwsz1 lda.z xr+1 // >yr - // [180] (byte~) rotate::$9 ← > (signed word) rotate::yr#1 -- vbuxx=_hi_vwsz1 + // [178] (byte~) rotate::$9 ← > (signed word) rotate::yr#1 -- vbuxx=_hi_vwsz1 ldx.z yr+1 // rotated = { (signed int)(signed char)>xr, (signed int)(signed char)>yr } - // [181] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$8 -- vwsz1=_sword_vbsaa + // [179] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$8 -- vwsz1=_sword_vbsaa sta.z return_x ora #$7f bmi !+ lda #0 !: sta.z return_x+1 - // [182] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$9 -- vwsz1=_sword_vbsxx + // [180] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$9 -- vwsz1=_sword_vbsxx txa sta.z return_y ora #$7f @@ -12844,27 +12795,27 @@ rotate: { sta.z return_y+1 // rotate::@return // } - // [183] return + // [181] return rts } // bitmap_line // Draw a line on the bitmap using bresenhams algorithm -// bitmap_line(word zp(3) x1, word zp(5) y1, word zp($b) x2, word zp($d) y2) +// bitmap_line(word zp(4) x1, word zp(6) y1, word zp($c) x2, word zp($e) y2) bitmap_line: { - .label x = 3 - .label y = 5 + .label x = 4 + .label y = 6 .label dx = $21 .label dy = $1d .label sx = $23 .label sy = $1f .label e1 = $12 .label e = $10 - .label x1 = 3 - .label y1 = 5 - .label x2 = $b - .label y2 = $d + .label x1 = 4 + .label y1 = 6 + .label x2 = $c + .label y2 = $e // abs_u16(x2-x1) - // [185] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 + // [183] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z x2 sec sbc.z x @@ -12872,21 +12823,21 @@ bitmap_line: { lda.z x2+1 sbc.z x+1 sta.z abs_u16.w+1 - // [186] call abs_u16 - // [308] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] - // [308] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy + // [184] call abs_u16 + // [305] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] + // [305] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy jsr abs_u16 // abs_u16(x2-x1) - // [187] (word) abs_u16::return#0 ← (word) abs_u16::return#4 + // [185] (word) abs_u16::return#0 ← (word) abs_u16::return#4 // bitmap_line::@12 // dx = abs_u16(x2-x1) - // [188] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 -- vwuz1=vwuz2 + // [186] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 -- vwuz1=vwuz2 lda.z abs_u16.return sta.z dx lda.z abs_u16.return+1 sta.z dx+1 // abs_u16(y2-y1) - // [189] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 + // [187] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z y2 sec sbc.z y @@ -12894,23 +12845,23 @@ bitmap_line: { lda.z y2+1 sbc.z y+1 sta.z abs_u16.w+1 - // [190] call abs_u16 - // [308] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16] - // [308] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy + // [188] call abs_u16 + // [305] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16] + // [305] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy jsr abs_u16 // abs_u16(y2-y1) - // [191] (word) abs_u16::return#1 ← (word) abs_u16::return#4 + // [189] (word) abs_u16::return#1 ← (word) abs_u16::return#4 // bitmap_line::@13 // dy = abs_u16(y2-y1) - // [192] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 + // [190] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 // if(dx==0 && dy==0) - // [193] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 + // [191] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 lda.z dx bne __b1 lda.z dx+1 bne __b1 // bitmap_line::@18 - // [194] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 + // [192] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 lda.z dy bne !+ lda.z dy+1 @@ -12921,7 +12872,7 @@ bitmap_line: { // bitmap_line::@1 __b1: // sgn_u16(x2-x1) - // [195] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 + // [193] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z x2 sec sbc.z x @@ -12929,21 +12880,21 @@ bitmap_line: { lda.z x2+1 sbc.z x+1 sta.z sgn_u16.w+1 - // [196] call sgn_u16 - // [315] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16] - // [315] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy + // [194] call sgn_u16 + // [312] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16] + // [312] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy jsr sgn_u16 // sgn_u16(x2-x1) - // [197] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 + // [195] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 // bitmap_line::@14 // sx = sgn_u16(x2-x1) - // [198] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 + // [196] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 lda.z sgn_u16.return sta.z sx lda.z sgn_u16.return+1 sta.z sx+1 // sgn_u16(y2-y1) - // [199] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 + // [197] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z y2 sec sbc.z y @@ -12951,17 +12902,17 @@ bitmap_line: { lda.z y2+1 sbc.z y+1 sta.z sgn_u16.w+1 - // [200] call sgn_u16 - // [315] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16] - // [315] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy + // [198] call sgn_u16 + // [312] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16] + // [312] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy jsr sgn_u16 // sgn_u16(y2-y1) - // [201] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 + // [199] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 // bitmap_line::@15 // sy = sgn_u16(y2-y1) - // [202] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 + // [200] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 // if(dx > dy) - // [203] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 + // [201] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 lda.z dy+1 cmp.z dx+1 bcc __b2 @@ -12972,31 +12923,31 @@ bitmap_line: { !: // bitmap_line::@5 // e = dx/2 - // [204] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + // [202] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 lda.z dx+1 lsr sta.z e+1 lda.z dx ror sta.z e - // [205] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6] - // [205] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy - // [205] phi (word) bitmap_line::y#4 = (word) bitmap_line::y#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy - // [205] phi (word) bitmap_line::x#13 = (word) bitmap_line::x#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy + // [203] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6] + // [203] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy + // [203] phi (word) bitmap_line::y#4 = (word) bitmap_line::y#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy + // [203] phi (word) bitmap_line::x#13 = (word) bitmap_line::x#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy // bitmap_line::@6 __b6: // bitmap_plot(x,(char)y) - // [206] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 - // [207] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 -- vbuaa=_byte_vwuz1 + // [204] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 + // [205] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 -- vbuaa=_byte_vwuz1 lda.z y - // [208] call bitmap_plot - // [322] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot] - // [322] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy - // [322] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy + // [206] call bitmap_plot + // [319] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot] + // [319] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy + // [319] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy jsr bitmap_plot // bitmap_line::@16 // y += sy - // [209] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + // [207] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z y clc adc.z sy @@ -13005,7 +12956,7 @@ bitmap_line: { adc.z sy+1 sta.z y+1 // e += dx - // [210] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 + // [208] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z e clc adc.z dx @@ -13014,7 +12965,7 @@ bitmap_line: { adc.z dx+1 sta.z e+1 // if(dy=(word) bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 + // [209] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 cmp.z dy+1 bne !+ lda.z e @@ -13024,7 +12975,7 @@ bitmap_line: { bcc __b7 // bitmap_line::@8 // x += sx - // [212] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + // [210] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z x clc adc.z sx @@ -13033,7 +12984,7 @@ bitmap_line: { adc.z sx+1 sta.z x+1 // e -= dy - // [213] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 + // [211] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 lda.z e sec sbc.z dy @@ -13041,65 +12992,65 @@ bitmap_line: { lda.z e+1 sbc.z dy+1 sta.z e+1 - // [214] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7] - // [214] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy - // [214] phi (word) bitmap_line::x#12 = (word) bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy + // [212] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7] + // [212] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy + // [212] phi (word) bitmap_line::x#12 = (word) bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy // bitmap_line::@7 __b7: // while (y != y2) - // [215] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 + // [213] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 lda.z y+1 cmp.z y2+1 bne __b6 lda.z y cmp.z y2 bne __b6 - // [216] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3] - // [216] phi (word) bitmap_line::y#7 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy - // [216] phi (word) bitmap_line::x#6 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy + // [214] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3] + // [214] phi (word) bitmap_line::y#7 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy + // [214] phi (word) bitmap_line::x#6 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy // bitmap_line::@3 __b3: // bitmap_plot(x,(char)y) - // [217] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 - // [218] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 -- vbuaa=_byte_vwuz1 + // [215] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 + // [216] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 -- vbuaa=_byte_vwuz1 lda.z y - // [219] call bitmap_plot - // [322] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot] - // [322] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy - // [322] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy + // [217] call bitmap_plot + // [319] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot] + // [319] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy + // [319] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy jsr bitmap_plot // bitmap_line::@return // } - // [220] return + // [218] return rts // bitmap_line::@2 __b2: // e = dy/2 - // [221] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 + // [219] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 lda.z dy+1 lsr sta.z e1+1 lda.z dy ror sta.z e1 - // [222] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9] - // [222] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy - // [222] phi (word) bitmap_line::y#15 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy - // [222] phi (word) bitmap_line::x#7 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy + // [220] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9] + // [220] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy + // [220] phi (word) bitmap_line::y#15 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy + // [220] phi (word) bitmap_line::x#7 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy // bitmap_line::@9 __b9: // bitmap_plot(x,(char)y) - // [223] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 - // [224] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 -- vbuaa=_byte_vwuz1 + // [221] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 + // [222] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 -- vbuaa=_byte_vwuz1 lda.z y - // [225] call bitmap_plot - // [322] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot] - // [322] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy - // [322] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy + // [223] call bitmap_plot + // [319] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot] + // [319] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy + // [319] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy jsr bitmap_plot // bitmap_line::@17 // x += sx - // [226] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 + // [224] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z x clc adc.z sx @@ -13108,7 +13059,7 @@ bitmap_line: { adc.z sx+1 sta.z x+1 // e += dy - // [227] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 + // [225] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z e1 clc adc.z dy @@ -13117,7 +13068,7 @@ bitmap_line: { adc.z dy+1 sta.z e1+1 // if(dx < e) - // [228] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 + // [226] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 cmp.z dx+1 bne !+ lda.z e1 @@ -13127,7 +13078,7 @@ bitmap_line: { bcc __b10 // bitmap_line::@11 // y += sy - // [229] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 + // [227] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z y clc adc.z sy @@ -13136,7 +13087,7 @@ bitmap_line: { adc.z sy+1 sta.z y+1 // e -= dx - // [230] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 + // [228] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 lda.z e1 sec sbc.z dx @@ -13144,13 +13095,13 @@ bitmap_line: { lda.z e1+1 sbc.z dx+1 sta.z e1+1 - // [231] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10] - // [231] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy - // [231] phi (word) bitmap_line::y#13 = (word) bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy + // [229] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10] + // [229] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy + // [229] phi (word) bitmap_line::y#13 = (word) bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy // bitmap_line::@10 __b10: // while (x != x2) - // [232] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 + // [230] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 lda.z x+1 cmp.z x2+1 bne __b9 @@ -13161,13 +13112,13 @@ bitmap_line: { // bitmap_line::@4 __b4: // bitmap_plot(x,(char)y) - // [233] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 - // [234] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 -- vbuaa=_byte_vwuz1 + // [231] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0 + // [232] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0 -- vbuaa=_byte_vwuz1 lda.z y - // [235] call bitmap_plot - // [322] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] - // [322] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy - // [322] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy + // [233] call bitmap_plot + // [319] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] + // [319] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy + // [319] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy jsr bitmap_plot rts } @@ -13177,42 +13128,42 @@ bitmap_line: { // Point values must be within [-200 ; 1ff] for the calculation to not overflow. // A quadratic spline is a curve defined by 3 points: P0, P1 and P2. // The curve connects P0 to P2 through a smooth curve that moves towards P1, but does usually not touch it. -// spline_8segB(signed word zp(3) p0_x, signed word zp(5) p0_y, signed word zp($b) p1_x, signed word zp($d) p1_y, signed word zp($19) p2_x, signed word zp($1b) p2_y) +// spline_8segB(signed word zp(4) p0_x, signed word zp(6) p0_y, signed word zp($c) p1_x, signed word zp($e) p1_y, signed word zp($19) p2_x, signed word zp($1b) p2_y) spline_8segB: { .label __0 = $23 .label __1 = $23 - .label __3 = $29 - .label __4 = $29 - .label __6 = $b - .label __8 = $d - .label __10 = $b - .label __12 = $d - .label __18 = 3 - .label __19 = 3 - .label __20 = 5 - .label __21 = 5 - .label __22 = $25 - .label __23 = $25 - .label __24 = $27 - .label __25 = $27 + .label __3 = $2a + .label __4 = $2a + .label __6 = $c + .label __8 = $e + .label __10 = $c + .label __12 = $e + .label __18 = 4 + .label __19 = 4 + .label __20 = 6 + .label __21 = 6 + .label __22 = $26 + .label __23 = $26 + .label __24 = $28 + .label __25 = $28 .label a_x = $23 - .label a_y = $29 - .label b_x = $b - .label b_y = $d - .label i_x = $b - .label i_y = $d + .label a_y = $2a + .label b_x = $c + .label b_y = $e + .label i_x = $c + .label i_y = $e .label j_x = $23 - .label j_y = $29 - .label p_x = 3 - .label p_y = 5 - .label p0_x = 3 - .label p0_y = 5 - .label p1_x = $b - .label p1_y = $d + .label j_y = $2a + .label p_x = 4 + .label p_y = 6 + .label p0_x = 4 + .label p0_y = 6 + .label p1_x = $c + .label p1_y = $e .label p2_x = $19 .label p2_y = $1b // p1.x*2 - // [236] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 + // [234] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 lda.z p1_x asl sta.z __0 @@ -13220,7 +13171,7 @@ spline_8segB: { rol sta.z __0+1 // p2.x - p1.x*2 - // [237] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 -- vwsz1=vwsz2_minus_vwsz1 + // [235] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0 -- vwsz1=vwsz2_minus_vwsz1 lda.z p2_x sec sbc.z __1 @@ -13229,7 +13180,7 @@ spline_8segB: { sbc.z __1+1 sta.z __1+1 // a = { p2.x - p1.x*2 + p0.x, p2.y - p1.y*2 + p0.y} - // [238] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz1_plus_vwsz2 + // [236] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz1_plus_vwsz2 lda.z a_x clc adc.z p0_x @@ -13238,7 +13189,7 @@ spline_8segB: { adc.z p0_x+1 sta.z a_x+1 // p1.y*2 - // [239] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 + // [237] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1 -- vwsz1=vwsz2_rol_1 lda.z p1_y asl sta.z __3 @@ -13246,7 +13197,7 @@ spline_8segB: { rol sta.z __3+1 // p2.y - p1.y*2 - // [240] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 -- vwsz1=vwsz2_minus_vwsz1 + // [238] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3 -- vwsz1=vwsz2_minus_vwsz1 lda.z p2_y sec sbc.z __4 @@ -13255,7 +13206,7 @@ spline_8segB: { sbc.z __4+1 sta.z __4+1 // a = { p2.x - p1.x*2 + p0.x, p2.y - p1.y*2 + p0.y} - // [241] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz1_plus_vwsz2 + // [239] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz1_plus_vwsz2 lda.z a_y clc adc.z p0_y @@ -13264,7 +13215,7 @@ spline_8segB: { adc.z p0_y+1 sta.z a_y+1 // p1.x - p0.x - // [242] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz1_minus_vwsz2 + // [240] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0 -- vwsz1=vwsz1_minus_vwsz2 lda.z __6 sec sbc.z p0_x @@ -13273,11 +13224,11 @@ spline_8segB: { sbc.z p0_x+1 sta.z __6+1 // b = { (p1.x - p0.x)*2, (p1.y - p0.y)*2 } - // [243] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 -- vwsz1=vwsz1_rol_1 + // [241] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1 -- vwsz1=vwsz1_rol_1 asl.z b_x rol.z b_x+1 // p1.y - p0.y - // [244] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz1_minus_vwsz2 + // [242] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0 -- vwsz1=vwsz1_minus_vwsz2 lda.z __8 sec sbc.z p0_y @@ -13286,11 +13237,11 @@ spline_8segB: { sbc.z p0_y+1 sta.z __8+1 // b = { (p1.x - p0.x)*2, (p1.y - p0.y)*2 } - // [245] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 -- vwsz1=vwsz1_rol_1 + // [243] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1 -- vwsz1=vwsz1_rol_1 asl.z b_y rol.z b_y+1 // b.x*8 - // [246] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 -- vwsz1=vwsz1_rol_3 + // [244] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3 -- vwsz1=vwsz1_rol_3 asl.z __10 rol.z __10+1 asl.z __10 @@ -13298,7 +13249,7 @@ spline_8segB: { asl.z __10 rol.z __10+1 // i = { a.x + b.x*8, a.y + b.y*8} - // [247] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 -- vwsz1=vwsz2_plus_vwsz1 + // [245] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10 -- vwsz1=vwsz2_plus_vwsz1 lda.z i_x clc adc.z a_x @@ -13307,7 +13258,7 @@ spline_8segB: { adc.z a_x+1 sta.z i_x+1 // b.y*8 - // [248] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 -- vwsz1=vwsz1_rol_3 + // [246] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3 -- vwsz1=vwsz1_rol_3 asl.z __12 rol.z __12+1 asl.z __12 @@ -13315,7 +13266,7 @@ spline_8segB: { asl.z __12 rol.z __12+1 // i = { a.x + b.x*8, a.y + b.y*8} - // [249] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 -- vwsz1=vwsz2_plus_vwsz1 + // [247] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12 -- vwsz1=vwsz2_plus_vwsz1 lda.z i_y clc adc.z a_y @@ -13324,14 +13275,14 @@ spline_8segB: { adc.z a_y+1 sta.z i_y+1 // j = { a.x*2, a.y*2 } - // [250] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 -- vwsz1=vwsz1_rol_1 + // [248] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1 -- vwsz1=vwsz1_rol_1 asl.z j_x rol.z j_x+1 - // [251] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 -- vwsz1=vwsz1_rol_1 + // [249] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1 -- vwsz1=vwsz1_rol_1 asl.z j_y rol.z j_y+1 // p = { p0.x*0x40, p0.y*0x40 } - // [252] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 -- vwsz1=vwsz1_rol_6 + // [250] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6 -- vwsz1=vwsz1_rol_6 lda.z p_x+1 sta.z $ff lda.z p_x @@ -13344,7 +13295,7 @@ spline_8segB: { lsr.z $ff ror.z p_x+1 ror.z p_x - // [253] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 -- vwsz1=vwsz1_rol_6 + // [251] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6 -- vwsz1=vwsz1_rol_6 lda.z p_y+1 sta.z $ff lda.z p_y @@ -13357,23 +13308,23 @@ spline_8segB: { lsr.z $ff ror.z p_y+1 ror.z p_y - // [254] phi from spline_8segB to spline_8segB::@1 [phi:spline_8segB->spline_8segB::@1] - // [254] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#0 [phi:spline_8segB->spline_8segB::@1#0] -- register_copy - // [254] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#0 [phi:spline_8segB->spline_8segB::@1#1] -- register_copy - // [254] phi (byte) spline_8segB::n#2 = (byte) 0 [phi:spline_8segB->spline_8segB::@1#2] -- vbuyy=vbuc1 + // [252] phi from spline_8segB to spline_8segB::@1 [phi:spline_8segB->spline_8segB::@1] + // [252] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#0 [phi:spline_8segB->spline_8segB::@1#0] -- register_copy + // [252] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#0 [phi:spline_8segB->spline_8segB::@1#1] -- register_copy + // [252] phi (byte) spline_8segB::n#2 = (byte) 0 [phi:spline_8segB->spline_8segB::@1#2] -- vbuyy=vbuc1 tay - // [254] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#0 [phi:spline_8segB->spline_8segB::@1#3] -- register_copy - // [254] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#0 [phi:spline_8segB->spline_8segB::@1#4] -- register_copy - // [254] phi from spline_8segB::@1 to spline_8segB::@1 [phi:spline_8segB::@1->spline_8segB::@1] - // [254] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#1 [phi:spline_8segB::@1->spline_8segB::@1#0] -- register_copy - // [254] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#1 [phi:spline_8segB::@1->spline_8segB::@1#1] -- register_copy - // [254] phi (byte) spline_8segB::n#2 = (byte) spline_8segB::n#1 [phi:spline_8segB::@1->spline_8segB::@1#2] -- register_copy - // [254] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#1 [phi:spline_8segB::@1->spline_8segB::@1#3] -- register_copy - // [254] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#1 [phi:spline_8segB::@1->spline_8segB::@1#4] -- register_copy + // [252] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#0 [phi:spline_8segB->spline_8segB::@1#3] -- register_copy + // [252] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#0 [phi:spline_8segB->spline_8segB::@1#4] -- register_copy + // [252] phi from spline_8segB::@1 to spline_8segB::@1 [phi:spline_8segB::@1->spline_8segB::@1] + // [252] phi (signed word) spline_8segB::i_y#2 = (signed word) spline_8segB::i_y#1 [phi:spline_8segB::@1->spline_8segB::@1#0] -- register_copy + // [252] phi (signed word) spline_8segB::i_x#2 = (signed word) spline_8segB::i_x#1 [phi:spline_8segB::@1->spline_8segB::@1#1] -- register_copy + // [252] phi (byte) spline_8segB::n#2 = (byte) spline_8segB::n#1 [phi:spline_8segB::@1->spline_8segB::@1#2] -- register_copy + // [252] phi (signed word) spline_8segB::p_y#2 = (signed word) spline_8segB::p_y#1 [phi:spline_8segB::@1->spline_8segB::@1#3] -- register_copy + // [252] phi (signed word) spline_8segB::p_x#2 = (signed word) spline_8segB::p_x#1 [phi:spline_8segB::@1->spline_8segB::@1#4] -- register_copy // spline_8segB::@1 __b1: // p.x+0x20 - // [255] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 + // [253] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 lda.z p_x clc adc #<$20 @@ -13382,7 +13333,7 @@ spline_8segB: { adc #>$20 sta.z __22+1 // (p.x+0x20)/0x40 - // [256] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 -- vwsz1=vwsz1_ror_6 + // [254] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6 -- vwsz1=vwsz1_ror_6 lda.z __23 sta.z $ff lda.z __23+1 @@ -13400,7 +13351,7 @@ spline_8segB: { rol.z __23 rol.z __23+1 // p.y+0x20 - // [257] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 + // [255] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20 -- vwsz1=vwsz2_plus_vbsc1 lda.z p_y clc adc #<$20 @@ -13409,7 +13360,7 @@ spline_8segB: { adc #>$20 sta.z __24+1 // (p.y+0x20)/0x40 - // [258] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 -- vwsz1=vwsz1_ror_6 + // [256] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6 -- vwsz1=vwsz1_ror_6 lda.z __25 sta.z $ff lda.z __25+1 @@ -13427,23 +13378,23 @@ spline_8segB: { rol.z __25 rol.z __25+1 // SPLINE_8SEG[n] = { (p.x+0x20)/0x40, (p.y+0x20)/0x40 } - // [259] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 -- vbuxx=vbuyy_rol_2 + // [257] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2 -- vbuxx=vbuyy_rol_2 tya asl asl tax - // [260] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 -- pwsc1_derefidx_vbuxx=vwsz1 + // [258] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23 -- pwsc1_derefidx_vbuxx=vwsz1 lda.z __23 sta SPLINE_8SEG,x lda.z __23+1 sta SPLINE_8SEG+1,x - // [261] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 -- pwsc1_derefidx_vbuxx=vwsz1 + // [259] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25 -- pwsc1_derefidx_vbuxx=vwsz1 lda.z __25 sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,x lda.z __25+1 sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x // p = { p.x+i.x, p.y+i.y } - // [262] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 -- vwsz1=vwsz1_plus_vwsz2 + // [260] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2 -- vwsz1=vwsz1_plus_vwsz2 lda.z p_x clc adc.z i_x @@ -13451,7 +13402,7 @@ spline_8segB: { lda.z p_x+1 adc.z i_x+1 sta.z p_x+1 - // [263] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 -- vwsz1=vwsz1_plus_vwsz2 + // [261] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2 -- vwsz1=vwsz1_plus_vwsz2 lda.z p_y clc adc.z i_y @@ -13460,7 +13411,7 @@ spline_8segB: { adc.z i_y+1 sta.z p_y+1 // i = { i.x+j.x, i.y+j.y } - // [264] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 -- vwsz1=vwsz1_plus_vwsz2 + // [262] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0 -- vwsz1=vwsz1_plus_vwsz2 lda.z i_x clc adc.z j_x @@ -13468,7 +13419,7 @@ spline_8segB: { lda.z i_x+1 adc.z j_x+1 sta.z i_x+1 - // [265] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 -- vwsz1=vwsz1_plus_vwsz2 + // [263] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0 -- vwsz1=vwsz1_plus_vwsz2 lda.z i_y clc adc.z j_y @@ -13477,16 +13428,16 @@ spline_8segB: { adc.z j_y+1 sta.z i_y+1 // for( char n: 0..7) - // [266] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2 -- vbuyy=_inc_vbuyy + // [264] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2 -- vbuyy=_inc_vbuyy iny - // [267] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1 -- vbuyy_neq_vbuc1_then_la1 + // [265] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #8 beq !__b1+ jmp __b1 !__b1: // spline_8segB::@2 // p.x+0x20 - // [268] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 -- vwsz1=vwsz1_plus_vbsc1 + // [266] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20 -- vwsz1=vwsz1_plus_vbsc1 lda.z __18 clc adc #<$20 @@ -13495,7 +13446,7 @@ spline_8segB: { adc #>$20 sta.z __18+1 // (p.x+0x20)/0x40 - // [269] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 -- vwsz1=vwsz1_ror_6 + // [267] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6 -- vwsz1=vwsz1_ror_6 lda.z __19 sta.z $ff lda.z __19+1 @@ -13513,7 +13464,7 @@ spline_8segB: { rol.z __19 rol.z __19+1 // p.y+0x20 - // [270] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 -- vwsz1=vwsz1_plus_vbsc1 + // [268] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20 -- vwsz1=vwsz1_plus_vbsc1 lda.z __20 clc adc #<$20 @@ -13522,7 +13473,7 @@ spline_8segB: { adc #>$20 sta.z __20+1 // (p.y+0x20)/0x40 - // [271] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 -- vwsz1=vwsz1_ror_6 + // [269] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6 -- vwsz1=vwsz1_ror_6 lda.z __21 sta.z $ff lda.z __21+1 @@ -13540,103 +13491,101 @@ spline_8segB: { rol.z __21 rol.z __21+1 // SPLINE_8SEG[8] = { (p.x+0x20)/0x40, (p.y+0x20)/0x40 } - // [272] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 -- _deref_pwsc1=vwsz1 + // [270] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19 -- _deref_pwsc1=vwsz1 lda.z __19 sta SPLINE_8SEG+8*SIZEOF_STRUCT_SPLINEVECTOR16 lda.z __19+1 sta SPLINE_8SEG+8*SIZEOF_STRUCT_SPLINEVECTOR16+1 - // [273] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 -- _deref_pwsc1=vwsz1 + // [271] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21 -- _deref_pwsc1=vwsz1 lda.z __21 sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SPLINEVECTOR16 lda.z __21+1 sta SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+8*SIZEOF_STRUCT_SPLINEVECTOR16+1 // spline_8segB::@return // } - // [274] return + // [272] return rts } // bitmap_plot_spline_8seg // Plot the spline in the SPLINE_8SEG array bitmap_plot_spline_8seg: { - .label current_x = 3 - .label current_y = 5 - .label n = $f + .label __4 = $25 + .label current_x = 4 + .label current_y = 6 + .label n = $18 // current = SPLINE_8SEG[0] - // [275] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) -- vwsz1=_deref_pwsc1 + // [273] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG) -- vwsz1=_deref_pwsc1 lda SPLINE_8SEG sta.z current_x lda SPLINE_8SEG+1 sta.z current_x+1 - // [276] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) -- vwsz1=_deref_pwsc1 + // [274] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y) -- vwsz1=_deref_pwsc1 lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y sta.z current_y lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1 sta.z current_y+1 - // [277] phi from bitmap_plot_spline_8seg to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1] - // [277] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word) bitmap_plot_spline_8seg::current_y#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#0] -- register_copy - // [277] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word) bitmap_plot_spline_8seg::current_x#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#1] -- register_copy - // [277] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) 1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#2] -- vbuz1=vbuc1 + // [275] phi from bitmap_plot_spline_8seg to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1] + // [275] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word) bitmap_plot_spline_8seg::current_y#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#0] -- register_copy + // [275] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word) bitmap_plot_spline_8seg::current_x#0 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#1] -- register_copy + // [275] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) 1 [phi:bitmap_plot_spline_8seg->bitmap_plot_spline_8seg::@1#2] -- vbuz1=vbuc1 lda #1 sta.z n - // [277] phi from bitmap_plot_spline_8seg::@2 to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1] - // [277] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word) bitmap_plot_spline_8seg::current_y#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#0] -- register_copy - // [277] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word) bitmap_plot_spline_8seg::current_x#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#1] -- register_copy - // [277] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) bitmap_plot_spline_8seg::n#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#2] -- register_copy + // [275] phi from bitmap_plot_spline_8seg::@2 to bitmap_plot_spline_8seg::@1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1] + // [275] phi (signed word) bitmap_plot_spline_8seg::current_y#2 = (signed word) bitmap_plot_spline_8seg::current_y#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#0] -- register_copy + // [275] phi (signed word) bitmap_plot_spline_8seg::current_x#2 = (signed word) bitmap_plot_spline_8seg::current_x#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#1] -- register_copy + // [275] phi (byte) bitmap_plot_spline_8seg::n#2 = (byte) bitmap_plot_spline_8seg::n#1 [phi:bitmap_plot_spline_8seg::@2->bitmap_plot_spline_8seg::@1#2] -- register_copy // bitmap_plot_spline_8seg::@1 __b1: // bitmap_line((unsigned int)current.x, (unsigned int)current.y, (unsigned int)SPLINE_8SEG[n].x, (unsigned int)SPLINE_8SEG[n].y) - // [278] (byte~) bitmap_plot_spline_8seg::$3 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 -- vbuxx=vbuz1_rol_2 + // [276] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 lda.z n asl asl - tax - // [279] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 - // [280] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 - // [281] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$3) -- vwuz1=pwuc1_derefidx_vbuxx - lda SPLINE_8SEG,x + sta.z __4 + // [277] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2 + // [278] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2 + // [279] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) -- vwuz1=pwuc1_derefidx_vbuz2 + tay + lda SPLINE_8SEG,y sta.z bitmap_line.x2 - lda SPLINE_8SEG+1,x + lda SPLINE_8SEG+1,y sta.z bitmap_line.x2+1 - // [282] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$3) -- vwuz1=pwuc1_derefidx_vbuxx - lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,x + // [280] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) -- vwuz1=pwuc1_derefidx_vbuz2 + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,y sta.z bitmap_line.y2 - lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y sta.z bitmap_line.y2+1 // bitmap_line((unsigned int)current.x, (unsigned int)current.y, (unsigned int)SPLINE_8SEG[n].x, (unsigned int)SPLINE_8SEG[n].y) - // [283] call bitmap_line - // [184] phi from bitmap_plot_spline_8seg::@1 to bitmap_line [phi:bitmap_plot_spline_8seg::@1->bitmap_line] - // [184] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#13 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#0] -- register_copy - // [184] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#13 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#1] -- register_copy - // [184] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#2] -- register_copy - // [184] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#3] -- register_copy + // [281] call bitmap_line + // [182] phi from bitmap_plot_spline_8seg::@1 to bitmap_line [phi:bitmap_plot_spline_8seg::@1->bitmap_line] + // [182] phi (word) bitmap_line::y2#11 = (word) bitmap_line::y2#13 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#0] -- register_copy + // [182] phi (word) bitmap_line::x2#10 = (word) bitmap_line::x2#13 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#1] -- register_copy + // [182] phi (word) bitmap_line::y#0 = (word) bitmap_line::y1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#2] -- register_copy + // [182] phi (word) bitmap_line::x#0 = (word) bitmap_line::x1#1 [phi:bitmap_plot_spline_8seg::@1->bitmap_line#3] -- register_copy jsr bitmap_line // bitmap_plot_spline_8seg::@2 // current = SPLINE_8SEG[n] - // [284] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2 -- vbuxx=vbuz1_rol_2 - lda.z n - asl - asl - tax - // [285] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) -- vwsz1=pwsc1_derefidx_vbuxx - lda SPLINE_8SEG,x + // [282] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4) -- vwsz1=pwsc1_derefidx_vbuz2 + ldy.z __4 + lda SPLINE_8SEG,y sta.z current_x - lda SPLINE_8SEG+1,x + lda SPLINE_8SEG+1,y sta.z current_x+1 - // [286] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) -- vwsz1=pwsc1_derefidx_vbuxx - lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,x + // [283] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4) -- vwsz1=pwsc1_derefidx_vbuz2 + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y,y sta.z current_y - lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x + lda SPLINE_8SEG+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y sta.z current_y+1 // for(char n:1..8) - // [287] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2 -- vbuz1=_inc_vbuz1 + // [284] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2 -- vbuz1=_inc_vbuz1 inc.z n - // [288] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@1 -- vbuz1_neq_vbuc1_then_la1 + // [285] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@1 -- vbuz1_neq_vbuc1_then_la1 lda #9 cmp.z n bne __b1 // bitmap_plot_spline_8seg::@return // } - // [289] return + // [286] return rts } // mulf16s @@ -13644,44 +13593,44 @@ bitmap_plot_spline_8seg: { // Fixes offsets introduced by using unsigned multiplication // mulf16s(signed word zp($10) a, signed word zp($12) b) mulf16s: { - .label __6 = $27 - .label __9 = $29 - .label __11 = $27 - .label __12 = $29 + .label __6 = $28 + .label __9 = $2a + .label __11 = $28 + .label __12 = $2a .label m = $14 .label return = $14 .label a = $10 .label b = $12 // mulf16u((unsigned int)a, (unsigned int)b) - // [291] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 -- vwuz1=vwuz2 + // [288] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4 -- vwuz1=vwuz2 lda.z a sta.z mulf16u.a lda.z a+1 sta.z mulf16u.a+1 - // [292] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 -- vwuz1=vwuz2 + // [289] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4 -- vwuz1=vwuz2 lda.z b sta.z mulf16u.b lda.z b+1 sta.z mulf16u.b+1 - // [293] call mulf16u + // [290] call mulf16u jsr mulf16u - // [294] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 + // [291] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 // mulf16s::@5 // m = mulf16u((unsigned int)a, (unsigned int)b) - // [295] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 + // [292] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 // if(a<0) - // [296] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 + // [293] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 lda.z a+1 bpl __b1 // mulf16s::@3 // >m - // [297] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + // [294] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda.z m+2 sta.z __6 lda.z m+3 sta.z __6+1 // >m = (>m)-(unsigned int)b - // [298] (word~) mulf16s::$11 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#4 -- vwuz1=vwuz1_minus_vwuz2 + // [295] (word~) mulf16s::$11 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#4 -- vwuz1=vwuz1_minus_vwuz2 lda.z __11 sec sbc.z b @@ -13689,28 +13638,28 @@ mulf16s: { lda.z __11+1 sbc.z b+1 sta.z __11+1 - // [299] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$11 -- vduz1=vduz1_sethi_vwuz2 + // [296] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$11 -- vduz1=vduz1_sethi_vwuz2 lda.z __11 sta.z m+2 lda.z __11+1 sta.z m+3 - // [300] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] - // [300] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy + // [297] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] + // [297] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy // mulf16s::@1 __b1: // if(b<0) - // [301] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 + // [298] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 lda.z b+1 bpl __b2 // mulf16s::@4 // >m - // [302] (word~) mulf16s::$9 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + // [299] (word~) mulf16s::$9 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda.z m+2 sta.z __9 lda.z m+3 sta.z __9+1 // >m = (>m)-(unsigned int)a - // [303] (word~) mulf16s::$12 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::a#4 -- vwuz1=vwuz1_minus_vwuz2 + // [300] (word~) mulf16s::$12 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::a#4 -- vwuz1=vwuz1_minus_vwuz2 lda.z __12 sec sbc.z a @@ -13718,20 +13667,20 @@ mulf16s: { lda.z __12+1 sbc.z a+1 sta.z __12+1 - // [304] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$12 -- vduz1=vduz1_sethi_vwuz2 + // [301] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$12 -- vduz1=vduz1_sethi_vwuz2 lda.z __12 sta.z m+2 lda.z __12+1 sta.z m+3 - // [305] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] - // [305] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + // [302] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + // [302] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy // mulf16s::@2 __b2: // return (signed long)m; - // [306] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 + // [303] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 // mulf16s::@return // } - // [307] return + // [304] return rts } // abs_u16 @@ -13741,22 +13690,22 @@ abs_u16: { .label w = $1d .label return = $1d // >w - // [309] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuaa=_hi_vwuz1 + // [306] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuaa=_hi_vwuz1 lda.z w+1 // >w&0x80 - // [310] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + // [307] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 // if(>w&0x80) - // [311] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuaa_then_la1 + // [308] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuaa_then_la1 cmp #0 bne __b1 - // [313] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] - // [313] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy + // [310] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] + // [310] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy rts // abs_u16::@1 __b1: // return -w; - // [312] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 + // [309] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 sec lda #0 sbc.z return @@ -13766,62 +13715,62 @@ abs_u16: { sta.z return+1 // abs_u16::@return // } - // [314] return + // [311] return rts } // sgn_u16 // Get the sign of a 16-bit unsigned number treated as a signed number. // Returns unsigned -1 if the number is -// sgn_u16(word zp($2b) w) +// sgn_u16(word zp($2c) w) sgn_u16: { - .label w = $2b + .label w = $2c .label return = $1f // >w - // [316] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuaa=_hi_vwuz1 + // [313] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuaa=_hi_vwuz1 lda.z w+1 // >w&0x80 - // [317] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + // [314] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 // if(>w&0x80) - // [318] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuaa_then_la1 + // [315] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuaa_then_la1 cmp #0 bne __b1 - // [320] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] - // [320] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 + // [317] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] + // [317] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 lda #<1 sta.z return lda #>1 sta.z return+1 rts - // [319] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] + // [316] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] // sgn_u16::@1 __b1: - // [320] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] - // [320] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 + // [317] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] + // [317] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 lda #<-1 sta.z return sta.z return+1 // sgn_u16::@return // } - // [321] return + // [318] return rts } // bitmap_plot // Plot a single dot in the bitmap -// bitmap_plot(word zp(3) x, byte register(A) y) +// bitmap_plot(word zp(4) x, byte register(A) y) bitmap_plot: { - .label __0 = $2b - .label plotter = $29 - .label x = 3 + .label __0 = $2c + .label plotter = $2a + .label x = 4 // plotter = (char*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] } - // [323] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa + // [320] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa tay lda bitmap_plot_yhi,y sta.z plotter+1 lda bitmap_plot_ylo,y sta.z plotter // x & $fff8 - // [324] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + // [321] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda.z x and #<$fff8 sta.z __0 @@ -13829,7 +13778,7 @@ bitmap_plot: { and #>$fff8 sta.z __0+1 // plotter += ( x & $fff8 ) - // [325] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2 + // [322] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2 lda.z plotter clc adc.z __0 @@ -13838,38 +13787,38 @@ bitmap_plot: { adc.z __0+1 sta.z plotter+1 // main::@1] @@ -400,13 +384,13 @@ main: { jmp __b1 // main::@1 __b1: - // [2] (byte~) main::$0 ← (byte) main::i#10 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 + // [2] (byte~) main::$4 ← (byte) main::i#10 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and.z i - sta.z __0 - // [3] if((byte) 0==(byte~) main::$0) goto main::@2 -- vbuc1_eq_vbuz1_then_la1 + sta.z __4 + // [3] if((byte) 0==(byte~) main::$4) goto main::@2 -- vbuc1_eq_vbuz1_then_la1 lda #0 - cmp.z __0 + cmp.z __4 beq __b2 jmp __b6 // main::@6 @@ -418,13 +402,13 @@ main: { jmp __b2 // main::@2 __b2: - // [5] (byte~) main::$2 ← (byte) main::i#10 & (byte) 2 -- vbuz1=vbuz2_band_vbuc1 + // [5] (byte~) main::$5 ← (byte) main::i#10 & (byte) 2 -- vbuz1=vbuz2_band_vbuc1 lda #2 and.z i - sta.z __2 - // [6] if((byte) 0==(byte~) main::$2) goto main::@3 -- vbuc1_eq_vbuz1_then_la1 + sta.z __5 + // [6] if((byte) 0==(byte~) main::$5) goto main::@3 -- vbuc1_eq_vbuz1_then_la1 lda #0 - cmp.z __2 + cmp.z __5 beq __b3 jmp __b7 // main::@7 @@ -436,132 +420,97 @@ main: { jmp __b3 // main::@3 __b3: - // [8] (byte~) main::$4 ← (byte) main::i#10 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 - lda #1 - and.z i - sta.z __4 - // [9] (byte~) main::$5 ← (byte) main::i#10 & (byte) 2 -- vbuz1=vbuz2_band_vbuc1 - lda #2 - and.z i - sta.z __5 - // [10] if((byte) 0==(byte~) main::$4) goto main::@4 -- vbuc1_eq_vbuz1_then_la1 + // [8] if((byte) 0==(byte~) main::$4) goto main::@4 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z __4 beq __b4 jmp __b10 // main::@10 __b10: - // [11] if((byte) 0==(byte~) main::$5) goto main::@4 -- vbuc1_eq_vbuz1_then_la1 + // [9] if((byte) 0==(byte~) main::$5) goto main::@4 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z __5 beq __b4 jmp __b8 // main::@8 __b8: - // [12] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuz1=vbuc2 + // [10] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuz1=vbuc2 lda #'+' ldy.z idx sta SCREEN+$28*2,y jmp __b4 // main::@4 __b4: - // [13] (byte~) main::$8 ← (byte) main::i#10 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 - lda #1 - and.z i - sta.z __8 - // [14] (byte~) main::$9 ← (byte) main::i#10 & (byte) 2 -- vbuz1=vbuz2_band_vbuc1 - lda #2 - and.z i - sta.z __9 - // [15] if((byte) 0!=(byte~) main::$8) goto main::@9 -- vbuc1_neq_vbuz1_then_la1 + // [11] if((byte) 0!=(byte~) main::$4) goto main::@9 -- vbuc1_neq_vbuz1_then_la1 lda #0 - cmp.z __8 + cmp.z __4 bne __b9 jmp __b11 // main::@11 __b11: - // [16] if((byte) 0==(byte~) main::$9) goto main::@5 -- vbuc1_eq_vbuz1_then_la1 + // [12] if((byte) 0==(byte~) main::$5) goto main::@5 -- vbuc1_eq_vbuz1_then_la1 lda #0 - cmp.z __9 + cmp.z __5 beq __b5 jmp __b9 // main::@9 __b9: - // [17] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuz1=vbuc2 + // [13] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuz1=vbuc2 lda #'+' ldy.z idx sta SCREEN+$28*3,y jmp __b5 // main::@5 __b5: - // [18] (byte) main::idx#1 ← ++ (byte) main::idx#10 -- vbuz1=_inc_vbuz1 + // [14] (byte) main::idx#1 ← ++ (byte) main::idx#10 -- vbuz1=_inc_vbuz1 inc.z idx - // [19] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + // [15] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 inc.z i - // [20] if((byte) main::i#1!=(byte) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + // [16] if((byte) main::i#1!=(byte) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp.z i bne __b1_from___b5 jmp __breturn // main::@return __breturn: - // [21] return + // [17] return rts } // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const nomodify byte*) SCREEN + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a +Statement [4] *((const nomodify byte*) SCREEN + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 main::$4 ] ( [ main::i#10 main::idx#10 main::$4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#10 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::idx#10 main::idx#1 ] -Statement [5] (byte~) main::$2 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$2 ] ( [ main::i#10 main::idx#10 main::$2 ] { } ) always clobbers reg byte a -Statement [7] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 1 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a -Statement [8] (byte~) main::$4 ← (byte) main::i#10 & (byte) 1 [ main::i#10 main::idx#10 main::$4 ] ( [ main::i#10 main::idx#10 main::$4 ] { } ) always clobbers reg byte a -Statement [9] (byte~) main::$5 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$4 main::$5 ] ( [ main::i#10 main::idx#10 main::$4 main::$5 ] { } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::$4 ] -Statement [12] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a -Statement [13] (byte~) main::$8 ← (byte) main::i#10 & (byte) 1 [ main::i#10 main::idx#10 main::$8 ] ( [ main::i#10 main::idx#10 main::$8 ] { } ) always clobbers reg byte a -Statement [14] (byte~) main::$9 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$8 main::$9 ] ( [ main::i#10 main::idx#10 main::$8 main::$9 ] { } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::$8 ] -Statement [17] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a -Statement [2] (byte~) main::$0 ← (byte) main::i#10 & (byte) 1 [ main::i#10 main::idx#10 main::$0 ] ( [ main::i#10 main::idx#10 main::$0 ] { } ) always clobbers reg byte a -Statement [4] *((const nomodify byte*) SCREEN + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a -Statement [5] (byte~) main::$2 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$2 ] ( [ main::i#10 main::idx#10 main::$2 ] { } ) always clobbers reg byte a -Statement [7] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 1 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a -Statement [8] (byte~) main::$4 ← (byte) main::i#10 & (byte) 1 [ main::i#10 main::idx#10 main::$4 ] ( [ main::i#10 main::idx#10 main::$4 ] { } ) always clobbers reg byte a -Statement [9] (byte~) main::$5 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$4 main::$5 ] ( [ main::i#10 main::idx#10 main::$4 main::$5 ] { } ) always clobbers reg byte a -Statement [12] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a -Statement [13] (byte~) main::$8 ← (byte) main::i#10 & (byte) 1 [ main::i#10 main::idx#10 main::$8 ] ( [ main::i#10 main::idx#10 main::$8 ] { } ) always clobbers reg byte a -Statement [14] (byte~) main::$9 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$8 main::$9 ] ( [ main::i#10 main::idx#10 main::$8 main::$9 ] { } ) always clobbers reg byte a -Statement [17] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::$4 ] +Statement [5] (byte~) main::$5 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$4 main::$5 ] ( [ main::i#10 main::idx#10 main::$4 main::$5 ] { } ) always clobbers reg byte a +Statement [7] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 1 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 main::$4 main::$5 ] ( [ main::i#10 main::idx#10 main::$4 main::$5 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::$5 ] +Statement [10] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 main::$4 main::$5 ] ( [ main::i#10 main::idx#10 main::$4 main::$5 ] { } ) always clobbers reg byte a +Statement [13] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a +Statement [2] (byte~) main::$4 ← (byte) main::i#10 & (byte) 1 [ main::i#10 main::idx#10 main::$4 ] ( [ main::i#10 main::idx#10 main::$4 ] { } ) always clobbers reg byte a +Statement [4] *((const nomodify byte*) SCREEN + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 main::$4 ] ( [ main::i#10 main::idx#10 main::$4 ] { } ) always clobbers reg byte a +Statement [5] (byte~) main::$5 ← (byte) main::i#10 & (byte) 2 [ main::i#10 main::idx#10 main::$4 main::$5 ] ( [ main::i#10 main::idx#10 main::$4 main::$5 ] { } ) always clobbers reg byte a +Statement [7] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 1 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 main::$4 main::$5 ] ( [ main::i#10 main::idx#10 main::$4 main::$5 ] { } ) always clobbers reg byte a +Statement [10] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 main::$4 main::$5 ] ( [ main::i#10 main::idx#10 main::$4 main::$5 ] { } ) always clobbers reg byte a +Statement [13] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#10 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::idx#10 main::idx#1 ] : zp[1]:3 , reg byte x , reg byte y , -Potential registers zp[1]:4 [ main::$0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:5 [ main::$2 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:6 [ main::$4 ] : zp[1]:6 , reg byte x , reg byte y , -Potential registers zp[1]:7 [ main::$5 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:8 [ main::$8 ] : zp[1]:8 , reg byte x , reg byte y , -Potential registers zp[1]:9 [ main::$9 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:4 [ main::$4 ] : zp[1]:4 , reg byte x , reg byte y , +Potential registers zp[1]:5 [ main::$5 ] : zp[1]:5 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:4 [ main::$0 ] 22: zp[1]:5 [ main::$2 ] 21.39: zp[1]:2 [ main::i#10 main::i#1 ] 11.22: zp[1]:3 [ main::idx#10 main::idx#1 ] 11: zp[1]:6 [ main::$4 ] 11: zp[1]:7 [ main::$5 ] 11: zp[1]:8 [ main::$8 ] 11: zp[1]:9 [ main::$9 ] +Uplift Scope [main] 19.64: zp[1]:2 [ main::i#10 main::i#1 ] 12.41: zp[1]:3 [ main::idx#10 main::idx#1 ] 6.29: zp[1]:5 [ main::$5 ] 4.89: zp[1]:4 [ main::$4 ] Uplift Scope [] -Uplifting [main] best 1551 combination reg byte a [ main::$0 ] reg byte a [ main::$2 ] reg byte y [ main::i#10 main::i#1 ] reg byte x [ main::idx#10 main::idx#1 ] zp[1]:6 [ main::$4 ] zp[1]:7 [ main::$5 ] zp[1]:8 [ main::$8 ] zp[1]:9 [ main::$9 ] -Limited combination testing to 100 combinations of 20736 possible. -Uplifting [] best 1551 combination -Attempting to uplift remaining variables inzp[1]:6 [ main::$4 ] -Uplifting [main] best 1551 combination zp[1]:6 [ main::$4 ] -Attempting to uplift remaining variables inzp[1]:7 [ main::$5 ] -Uplifting [main] best 1551 combination zp[1]:7 [ main::$5 ] -Attempting to uplift remaining variables inzp[1]:8 [ main::$8 ] -Uplifting [main] best 1551 combination zp[1]:8 [ main::$8 ] -Attempting to uplift remaining variables inzp[1]:9 [ main::$9 ] -Uplifting [main] best 1551 combination zp[1]:9 [ main::$9 ] -Allocated (was zp[1]:6) zp[1]:2 [ main::$4 ] -Allocated (was zp[1]:7) zp[1]:3 [ main::$5 ] -Allocated (was zp[1]:8) zp[1]:4 [ main::$8 ] -Allocated (was zp[1]:9) zp[1]:5 [ main::$9 ] +Uplifting [main] best 1351 combination reg byte x [ main::i#10 main::i#1 ] reg byte y [ main::idx#10 main::idx#1 ] zp[1]:5 [ main::$5 ] zp[1]:4 [ main::$4 ] +Uplifting [] best 1351 combination +Attempting to uplift remaining variables inzp[1]:5 [ main::$5 ] +Uplifting [main] best 1351 combination zp[1]:5 [ main::$5 ] +Attempting to uplift remaining variables inzp[1]:4 [ main::$4 ] +Uplifting [main] best 1351 combination zp[1]:4 [ main::$4 ] +Allocated (was zp[1]:4) zp[1]:2 [ main::$4 ] +Allocated (was zp[1]:5) zp[1]:3 [ main::$5 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -577,14 +526,12 @@ ASSEMBLER BEFORE OPTIMIZATION main: { .label __4 = 2 .label __5 = 3 - .label __8 = 4 - .label __9 = 5 // [1] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: - // [1] phi (byte) main::idx#10 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 - // [1] phi (byte) main::i#10 = (byte) 0 [phi:main->main::@1#1] -- vbuyy=vbuc1 + // [1] phi (byte) main::idx#10 = (byte) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #0 + // [1] phi (byte) main::i#10 = (byte) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + ldx #0 jmp __b1 // [1] phi from main::@5 to main::@1 [phi:main::@5->main::@1] __b1_from___b5: @@ -593,103 +540,89 @@ main: { jmp __b1 // main::@1 __b1: - // [2] (byte~) main::$0 ← (byte) main::i#10 & (byte) 1 -- vbuaa=vbuyy_band_vbuc1 - tya - and #1 - // [3] if((byte) 0==(byte~) main::$0) goto main::@2 -- vbuc1_eq_vbuaa_then_la1 - cmp #0 + // [2] (byte~) main::$4 ← (byte) main::i#10 & (byte) 1 -- vbuz1=vbuxx_band_vbuc1 + lda #1 + sax.z __4 + // [3] if((byte) 0==(byte~) main::$4) goto main::@2 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z __4 beq __b2 jmp __b6 // main::@6 __b6: - // [4] *((const nomodify byte*) SCREEN + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuxx=vbuc2 + // [4] *((const nomodify byte*) SCREEN + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuyy=vbuc2 lda #'+' - sta SCREEN,x + sta SCREEN,y jmp __b2 // main::@2 __b2: - // [5] (byte~) main::$2 ← (byte) main::i#10 & (byte) 2 -- vbuaa=vbuyy_band_vbuc1 - tya - and #2 - // [6] if((byte) 0==(byte~) main::$2) goto main::@3 -- vbuc1_eq_vbuaa_then_la1 - cmp #0 + // [5] (byte~) main::$5 ← (byte) main::i#10 & (byte) 2 -- vbuz1=vbuxx_band_vbuc1 + lda #2 + sax.z __5 + // [6] if((byte) 0==(byte~) main::$5) goto main::@3 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z __5 beq __b3 jmp __b7 // main::@7 __b7: - // [7] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 1 + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuxx=vbuc2 + // [7] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 1 + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuyy=vbuc2 lda #'+' - sta SCREEN+$28*1,x + sta SCREEN+$28*1,y jmp __b3 // main::@3 __b3: - // [8] (byte~) main::$4 ← (byte) main::i#10 & (byte) 1 -- vbuz1=vbuyy_band_vbuc1 - tya - and #1 - sta.z __4 - // [9] (byte~) main::$5 ← (byte) main::i#10 & (byte) 2 -- vbuz1=vbuyy_band_vbuc1 - tya - and #2 - sta.z __5 - // [10] if((byte) 0==(byte~) main::$4) goto main::@4 -- vbuc1_eq_vbuz1_then_la1 + // [8] if((byte) 0==(byte~) main::$4) goto main::@4 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z __4 beq __b4 jmp __b10 // main::@10 __b10: - // [11] if((byte) 0==(byte~) main::$5) goto main::@4 -- vbuc1_eq_vbuz1_then_la1 + // [9] if((byte) 0==(byte~) main::$5) goto main::@4 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z __5 beq __b4 jmp __b8 // main::@8 __b8: - // [12] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuxx=vbuc2 + // [10] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuyy=vbuc2 lda #'+' - sta SCREEN+$28*2,x + sta SCREEN+$28*2,y jmp __b4 // main::@4 __b4: - // [13] (byte~) main::$8 ← (byte) main::i#10 & (byte) 1 -- vbuz1=vbuyy_band_vbuc1 - tya - and #1 - sta.z __8 - // [14] (byte~) main::$9 ← (byte) main::i#10 & (byte) 2 -- vbuz1=vbuyy_band_vbuc1 - tya - and #2 - sta.z __9 - // [15] if((byte) 0!=(byte~) main::$8) goto main::@9 -- vbuc1_neq_vbuz1_then_la1 + // [11] if((byte) 0!=(byte~) main::$4) goto main::@9 -- vbuc1_neq_vbuz1_then_la1 lda #0 - cmp.z __8 + cmp.z __4 bne __b9 jmp __b11 // main::@11 __b11: - // [16] if((byte) 0==(byte~) main::$9) goto main::@5 -- vbuc1_eq_vbuz1_then_la1 + // [12] if((byte) 0==(byte~) main::$5) goto main::@5 -- vbuc1_eq_vbuz1_then_la1 lda #0 - cmp.z __9 + cmp.z __5 beq __b5 jmp __b9 // main::@9 __b9: - // [17] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuxx=vbuc2 + // [13] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuyy=vbuc2 lda #'+' - sta SCREEN+$28*3,x + sta SCREEN+$28*3,y jmp __b5 // main::@5 __b5: - // [18] (byte) main::idx#1 ← ++ (byte) main::idx#10 -- vbuxx=_inc_vbuxx - inx - // [19] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuyy=_inc_vbuyy + // [14] (byte) main::idx#1 ← ++ (byte) main::idx#10 -- vbuyy=_inc_vbuyy iny - // [20] if((byte) main::i#1!=(byte) 8) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 - cpy #8 + // [15] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuxx=_inc_vbuxx + inx + // [16] if((byte) main::i#1!=(byte) 8) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + cpx #8 bne __b1_from___b5 jmp __breturn // main::@return __breturn: - // [21] return + // [17] return rts } // File Data @@ -728,12 +661,8 @@ Succesful ASM optimization Pass5UnnecesaryLoadElimination FINAL SYMBOL TABLE (const nomodify byte*) SCREEN = (byte*) 1024 (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$4 zp[1]:2 11.0 -(byte~) main::$5 zp[1]:3 11.0 -(byte~) main::$8 zp[1]:4 11.0 -(byte~) main::$9 zp[1]:5 11.0 +(byte~) main::$4 zp[1]:2 4.888888888888889 +(byte~) main::$5 zp[1]:3 6.285714285714286 (label) main::@1 (label) main::@10 (label) main::@11 @@ -747,24 +676,20 @@ FINAL SYMBOL TABLE (label) main::@9 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#10 reg byte y 4.888888888888889 +(byte) main::i#1 reg byte x 16.5 +(byte) main::i#10 reg byte x 3.142857142857143 (byte) main::idx -(byte) main::idx#1 reg byte x 7.333333333333333 -(byte) main::idx#10 reg byte x 3.8823529411764706 +(byte) main::idx#1 reg byte y 7.333333333333333 +(byte) main::idx#10 reg byte y 5.076923076923077 -reg byte y [ main::i#10 main::i#1 ] -reg byte x [ main::idx#10 main::idx#1 ] -reg byte a [ main::$0 ] -reg byte a [ main::$2 ] +reg byte x [ main::i#10 main::i#1 ] +reg byte y [ main::idx#10 main::idx#1 ] zp[1]:2 [ main::$4 ] zp[1]:3 [ main::$5 ] -zp[1]:4 [ main::$8 ] -zp[1]:5 [ main::$9 ] FINAL ASSEMBLER -Score: 1121 +Score: 921 // File Comments // Tests using integer conditions in && and || operator @@ -779,113 +704,93 @@ Score: 1121 main: { .label __4 = 2 .label __5 = 3 - .label __8 = 4 - .label __9 = 5 // [1] phi from main to main::@1 [phi:main->main::@1] - // [1] phi (byte) main::idx#10 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 - // [1] phi (byte) main::i#10 = (byte) 0 [phi:main->main::@1#1] -- vbuyy=vbuc1 + // [1] phi (byte) main::idx#10 = (byte) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 ldy #0 + // [1] phi (byte) main::i#10 = (byte) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + ldx #0 // [1] phi from main::@5 to main::@1 [phi:main::@5->main::@1] // [1] phi (byte) main::idx#10 = (byte) main::idx#1 [phi:main::@5->main::@1#0] -- register_copy // [1] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@5->main::@1#1] -- register_copy // main::@1 __b1: // i&1 - // [2] (byte~) main::$0 ← (byte) main::i#10 & (byte) 1 -- vbuaa=vbuyy_band_vbuc1 - tya - and #1 + // [2] (byte~) main::$4 ← (byte) main::i#10 & (byte) 1 -- vbuz1=vbuxx_band_vbuc1 + lda #1 + sax.z __4 // if(i&1) - // [3] if((byte) 0==(byte~) main::$0) goto main::@2 -- vbuc1_eq_vbuaa_then_la1 - cmp #0 + // [3] if((byte) 0==(byte~) main::$4) goto main::@2 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z __4 beq __b2 // main::@6 // (SCREEN+40*0)[idx] = '+' - // [4] *((const nomodify byte*) SCREEN + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuxx=vbuc2 + // [4] *((const nomodify byte*) SCREEN + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuyy=vbuc2 lda #'+' - sta SCREEN,x + sta SCREEN,y // main::@2 __b2: // i&2 - // [5] (byte~) main::$2 ← (byte) main::i#10 & (byte) 2 -- vbuaa=vbuyy_band_vbuc1 - tya - and #2 + // [5] (byte~) main::$5 ← (byte) main::i#10 & (byte) 2 -- vbuz1=vbuxx_band_vbuc1 + lda #2 + sax.z __5 // if(i&2) - // [6] if((byte) 0==(byte~) main::$2) goto main::@3 -- vbuc1_eq_vbuaa_then_la1 - cmp #0 + // [6] if((byte) 0==(byte~) main::$5) goto main::@3 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z __5 beq __b3 // main::@7 // (SCREEN+40*1)[idx] = '+' - // [7] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 1 + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuxx=vbuc2 + // [7] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 1 + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuyy=vbuc2 lda #'+' - sta SCREEN+$28*1,x + sta SCREEN+$28*1,y // main::@3 __b3: - // i&1 - // [8] (byte~) main::$4 ← (byte) main::i#10 & (byte) 1 -- vbuz1=vbuyy_band_vbuc1 - tya - and #1 - sta.z __4 - // i&2 - // [9] (byte~) main::$5 ← (byte) main::i#10 & (byte) 2 -- vbuz1=vbuyy_band_vbuc1 - tya - and #2 - sta.z __5 // if(i&1 && i&2) - // [10] if((byte) 0==(byte~) main::$4) goto main::@4 -- vbuc1_eq_vbuz1_then_la1 + // [8] if((byte) 0==(byte~) main::$4) goto main::@4 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z __4 beq __b4 // main::@10 - // [11] if((byte) 0==(byte~) main::$5) goto main::@4 -- vbuc1_eq_vbuz1_then_la1 + // [9] if((byte) 0==(byte~) main::$5) goto main::@4 -- vbuc1_eq_vbuz1_then_la1 cmp.z __5 beq __b4 // main::@8 // (SCREEN+40*2)[idx] = '+' - // [12] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuxx=vbuc2 + // [10] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 2 + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuyy=vbuc2 lda #'+' - sta SCREEN+$28*2,x + sta SCREEN+$28*2,y // main::@4 __b4: - // i&1 - // [13] (byte~) main::$8 ← (byte) main::i#10 & (byte) 1 -- vbuz1=vbuyy_band_vbuc1 - tya - and #1 - sta.z __8 - // i&2 - // [14] (byte~) main::$9 ← (byte) main::i#10 & (byte) 2 -- vbuz1=vbuyy_band_vbuc1 - tya - and #2 - sta.z __9 // if(i&1 || i&2) - // [15] if((byte) 0!=(byte~) main::$8) goto main::@9 -- vbuc1_neq_vbuz1_then_la1 + // [11] if((byte) 0!=(byte~) main::$4) goto main::@9 -- vbuc1_neq_vbuz1_then_la1 lda #0 - cmp.z __8 + cmp.z __4 bne __b9 // main::@11 - // [16] if((byte) 0==(byte~) main::$9) goto main::@5 -- vbuc1_eq_vbuz1_then_la1 - cmp.z __9 + // [12] if((byte) 0==(byte~) main::$5) goto main::@5 -- vbuc1_eq_vbuz1_then_la1 + cmp.z __5 beq __b5 // main::@9 __b9: // (SCREEN+40*3)[idx] = '+' - // [17] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuxx=vbuc2 + // [13] *((const nomodify byte*) SCREEN+(byte)(number) $28*(number) 3 + (byte) main::idx#10) ← (byte) '+' -- pbuc1_derefidx_vbuyy=vbuc2 lda #'+' - sta SCREEN+$28*3,x + sta SCREEN+$28*3,y // main::@5 __b5: // idx++; - // [18] (byte) main::idx#1 ← ++ (byte) main::idx#10 -- vbuxx=_inc_vbuxx - inx - // for( byte i:0..7) - // [19] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuyy=_inc_vbuyy + // [14] (byte) main::idx#1 ← ++ (byte) main::idx#10 -- vbuyy=_inc_vbuyy iny - // [20] if((byte) main::i#1!=(byte) 8) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 - cpy #8 + // for( byte i:0..7) + // [15] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuxx=_inc_vbuxx + inx + // [16] if((byte) main::i#1!=(byte) 8) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + cpx #8 bne __b1 // main::@return // } - // [21] return + // [17] return rts } // File Data diff --git a/src/test/ref/condition-integer-4.sym b/src/test/ref/condition-integer-4.sym index a00577de0..1c75b4d37 100644 --- a/src/test/ref/condition-integer-4.sym +++ b/src/test/ref/condition-integer-4.sym @@ -1,11 +1,7 @@ (const nomodify byte*) SCREEN = (byte*) 1024 (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 -(byte~) main::$4 zp[1]:2 11.0 -(byte~) main::$5 zp[1]:3 11.0 -(byte~) main::$8 zp[1]:4 11.0 -(byte~) main::$9 zp[1]:5 11.0 +(byte~) main::$4 zp[1]:2 4.888888888888889 +(byte~) main::$5 zp[1]:3 6.285714285714286 (label) main::@1 (label) main::@10 (label) main::@11 @@ -19,17 +15,13 @@ (label) main::@9 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte y 16.5 -(byte) main::i#10 reg byte y 4.888888888888889 +(byte) main::i#1 reg byte x 16.5 +(byte) main::i#10 reg byte x 3.142857142857143 (byte) main::idx -(byte) main::idx#1 reg byte x 7.333333333333333 -(byte) main::idx#10 reg byte x 3.8823529411764706 +(byte) main::idx#1 reg byte y 7.333333333333333 +(byte) main::idx#10 reg byte y 5.076923076923077 -reg byte y [ main::i#10 main::i#1 ] -reg byte x [ main::idx#10 main::idx#1 ] -reg byte a [ main::$0 ] -reg byte a [ main::$2 ] +reg byte x [ main::i#10 main::i#1 ] +reg byte y [ main::idx#10 main::idx#1 ] zp[1]:2 [ main::$4 ] zp[1]:3 [ main::$5 ] -zp[1]:4 [ main::$8 ] -zp[1]:5 [ main::$9 ] diff --git a/src/test/ref/examples/sinplotter/sine-plotter.asm b/src/test/ref/examples/sinplotter/sine-plotter.asm index bf41fa89a..6158403a2 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.asm +++ b/src/test/ref/examples/sinplotter/sine-plotter.asm @@ -79,7 +79,7 @@ main: { } // Initialize bitmap plotting tables bitmap_init: { - .label __7 = $14 + .label __7 = $16 .label yoffs = 8 ldx #0 lda #$80 @@ -175,8 +175,8 @@ sin16s_gen2: { .const max = $140 .label ampl = max-min .label __6 = $e - .label __8 = $19 - .label step = $15 + .label __8 = $1b + .label step = $17 .label sintab = 6 // u[4.28] // Iterate over the table @@ -269,9 +269,8 @@ sin16s_gen2: { } render_sine: { .label __1 = $12 - .label __4 = $12 - .label __10 = $12 - .label __11 = $12 + .label __4 = $21 + .label __11 = $21 .label sin_val = $12 .label sin2_val = $12 .label xpos = 8 @@ -297,15 +296,15 @@ render_sine: { // sin+sin_idx lda.z sin_idx asl - sta.z __10 + sta.z __11 lda.z sin_idx+1 rol - sta.z __10+1 + sta.z __11+1 + lda.z __11 clc - lda.z __1 adc #sin sta.z __1+1 // sin_val = *(sin+sin_idx) @@ -325,12 +324,6 @@ render_sine: { // bitmap_plot(xpos,ypos) jsr bitmap_plot // sin2+sin_idx - lda.z sin_idx - asl - sta.z __11 - lda.z sin_idx+1 - rol - sta.z __11+1 clc lda.z __4 adc #dividend, divisor, 0) lda #>$10 sta.z divr16u.dividend @@ -474,17 +465,17 @@ div32u16u: { // result: signed int sin(x) s[0.15] - using the full range -$7fff - $7fff // sin16s(dword zp($a) x) sin16s: { - .label __4 = $1b + .label __4 = $1d .label x = $a .label return = $12 - .label x1 = $1f - .label x2 = $23 - .label x3 = $23 - .label x3_6 = $21 + .label x1 = $21 + .label x2 = $25 + .label x3 = $25 + .label x3_6 = $23 .label usinx = $12 - .label x4 = $23 - .label x5 = $21 - .label x5_128 = $21 + .label x4 = $25 + .label x5 = $23 + .label x5_128 = $23 .label sinx = $12 // if(x >= PI_u4f28 ) lda.z x+3 @@ -809,12 +800,12 @@ bitmap_plot: { // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division -// divr16u(word zp($23) dividend, word zp($12) rem) +// divr16u(word zp($25) dividend, word zp($12) rem) divr16u: { .label rem = $12 - .label dividend = $23 - .label quotient = $25 - .label return = $25 + .label dividend = $25 + .label quotient = $14 + .label return = $14 ldx #0 txa sta.z quotient @@ -874,14 +865,14 @@ divr16u: { } // Calculate val*val for two unsigned int values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip -// mulu16_sel(word zp($23) v1, word zp($25) v2, byte register(X) select) +// mulu16_sel(word zp($25) v1, word zp($14) v2, byte register(X) select) mulu16_sel: { .label __0 = $e .label __1 = $e - .label v1 = $23 - .label v2 = $25 - .label return = $21 - .label return_1 = $23 + .label v1 = $25 + .label v2 = $14 + .label return = $23 + .label return_1 = $25 // mul16u(v1, v2) lda.z v1 sta.z mul16u.a @@ -909,13 +900,13 @@ mulu16_sel: { rts } // Perform binary multiplication of two unsigned 16-bit unsigned ints into a 32-bit unsigned long -// mul16u(word zp($19) a, word zp($25) b) +// mul16u(word zp($1b) a, word zp($14) b) mul16u: { - .label mb = $1b - .label a = $19 + .label mb = $1d + .label a = $1b .label res = $e .label return = $e - .label b = $25 + .label b = $14 // mb = b lda.z b sta.z mb diff --git a/src/test/ref/examples/sinplotter/sine-plotter.cfg b/src/test/ref/examples/sinplotter/sine-plotter.cfg index a2b6e491f..b1b7820c4 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.cfg +++ b/src/test/ref/examples/sinplotter/sine-plotter.cfg @@ -146,8 +146,8 @@ render_sine::@return: scope:[render_sine] from render_sine::@1 [67] return to:@return render_sine::@2: scope:[render_sine] from render_sine::@1 - [68] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 - [69] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$10 + [68] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 + [69] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$11 [70] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) [71] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 [72] call wrap_y @@ -160,293 +160,292 @@ render_sine::@4: scope:[render_sine] from render_sine::@2 [77] call bitmap_plot to:render_sine::@5 render_sine::@5: scope:[render_sine] from render_sine::@4 - [78] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 - [79] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 - [80] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) - [81] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a - [82] call wrap_y - [83] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 + [78] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 + [79] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) + [80] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a + [81] call wrap_y + [82] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 to:render_sine::@6 render_sine::@6: scope:[render_sine] from render_sine::@5 - [84] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 - [85] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 - [86] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 - [87] call bitmap_plot + [83] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 + [84] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 + [85] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 + [86] call bitmap_plot to:render_sine::@7 render_sine::@7: scope:[render_sine] from render_sine::@6 - [88] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 - [89] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 + [87] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 + [88] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 to:render_sine::@3 render_sine::@8: scope:[render_sine] from render_sine::@7 - [90] phi() + [89] phi() to:render_sine::@3 render_sine::@3: scope:[render_sine] from render_sine::@7 render_sine::@8 - [91] (word) render_sine::xpos#9 ← phi( render_sine::@7/(byte) 0 render_sine::@8/(word) render_sine::xpos#1 ) - [92] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 + [90] (word) render_sine::xpos#9 ← phi( render_sine::@7/(byte) 0 render_sine::@8/(word) render_sine::xpos#1 ) + [91] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 to:render_sine::@1 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) memset: scope:[memset] from bitmap_clear bitmap_clear::@1 - [93] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) - [93] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) SCREEN bitmap_clear::@1/(void*)(const byte*) BITMAP ) - [93] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) - [94] if((word) memset::num#2<=(byte) 0) goto memset::@return + [92] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) + [92] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) SCREEN bitmap_clear::@1/(void*)(const byte*) BITMAP ) + [92] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) + [93] if((word) memset::num#2<=(byte) 0) goto memset::@return to:memset::@1 memset::@1: scope:[memset] from memset - [95] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 - [96] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 + [94] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 + [95] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 to:memset::@2 memset::@2: scope:[memset] from memset::@1 memset::@3 - [97] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 ) - [98] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 + [96] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 ) + [97] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 to:memset::@return memset::@return: scope:[memset] from memset memset::@2 - [99] return + [98] return to:@return memset::@3: scope:[memset] from memset::@2 - [100] *((byte*) memset::dst#2) ← (byte) memset::c#4 - [101] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + [99] *((byte*) memset::dst#2) ← (byte) memset::c#4 + [100] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 to:memset::@2 (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) div32u16u: scope:[div32u16u] from sin16s_gen2 - [102] phi() - [103] call divr16u - [104] (word) divr16u::return#2 ← (word) divr16u::return#0 + [101] phi() + [102] call divr16u + [103] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@1 div32u16u::@1: scope:[div32u16u] from div32u16u - [105] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [106] (word) divr16u::rem#4 ← (word) rem16u#0 - [107] call divr16u - [108] (word) divr16u::return#3 ← (word) divr16u::return#0 + [104] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [105] (word) divr16u::rem#4 ← (word) rem16u#0 + [106] call divr16u + [107] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u::@1 - [109] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [110] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [108] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [109] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@2 - [111] return + [110] return to:@return (signed word()) sin16s((dword) sin16s::x) sin16s: scope:[sin16s] from sin16s_gen2::@2 - [112] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 + [111] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 + [112] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [114] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 ) - [114] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [115] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 + [113] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 ) + [113] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [114] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [116] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 + [115] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 to:sin16s::@2 sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 - [117] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [118] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 - [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 - [120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [122] call mulu16_sel - [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + [116] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [117] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 + [118] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 + [119] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [120] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [121] call mulu16_sel + [122] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 to:sin16s::@7 sin16s::@7: scope:[sin16s] from sin16s::@2 - [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [127] call mulu16_sel - [128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 + [123] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [124] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [125] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [126] call mulu16_sel + [127] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@7 - [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [131] call mulu16_sel - [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + [128] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [129] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [130] call mulu16_sel + [131] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [137] call mulu16_sel - [138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 + [132] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + [133] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [134] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [135] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [136] call mulu16_sel + [137] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [142] call mulu16_sel - [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + [138] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + [139] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [140] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [141] call mulu16_sel + [142] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - [145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 - [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [147] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 + [143] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + [144] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 + [145] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [146] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@11 - [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [147] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6 - [149] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [148] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [150] return + [149] return to:@return sin16s::@12: scope:[sin16s] from sin16s::@11 - [151] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [150] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) mul16s: scope:[mul16s] from sin16s_gen2::@4 - [152] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 - [153] call mul16u - [154] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [151] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 + [152] call mul16u + [153] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s - [155] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - [156] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 + [154] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + [155] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@4 - [157] (word~) mul16s::$6 ← > (dword) mul16s::m#0 - [158] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(const signed word) sin16s_gen2::ampl#0 - [159] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 + [156] (word~) mul16s::$6 ← > (dword) mul16s::m#0 + [157] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(const signed word) sin16s_gen2::ampl#0 + [158] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@4 - [160] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@4/(dword) mul16s::m#0 ) + [159] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@4/(dword) mul16s::m#0 ) to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 - [161] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 + [160] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [162] return + [161] return to:@return (byte()) wrap_y((signed word) wrap_y::y) wrap_y: scope:[wrap_y] from render_sine::@2 render_sine::@5 - [163] (signed word) wrap_y::y#9 ← phi( render_sine::@2/(signed word) wrap_y::y#0 render_sine::@5/(signed word) wrap_y::y#1 ) + [162] (signed word) wrap_y::y#9 ← phi( render_sine::@2/(signed word) wrap_y::y#0 render_sine::@5/(signed word) wrap_y::y#1 ) to:wrap_y::@1 wrap_y::@1: scope:[wrap_y] from wrap_y wrap_y::@2 - [164] (signed word) wrap_y::y#4 ← phi( wrap_y/(signed word) wrap_y::y#9 wrap_y::@2/(signed word) wrap_y::y#2 ) - [165] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 + [163] (signed word) wrap_y::y#4 ← phi( wrap_y/(signed word) wrap_y::y#9 wrap_y::@2/(signed word) wrap_y::y#2 ) + [164] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 to:wrap_y::@3 wrap_y::@3: scope:[wrap_y] from wrap_y::@1 wrap_y::@4 - [166] (signed word) wrap_y::y#6 ← phi( wrap_y::@1/(signed word) wrap_y::y#4 wrap_y::@4/(signed word) wrap_y::y#3 ) - [167] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 + [165] (signed word) wrap_y::y#6 ← phi( wrap_y::@1/(signed word) wrap_y::y#4 wrap_y::@4/(signed word) wrap_y::y#3 ) + [166] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 to:wrap_y::@5 wrap_y::@5: scope:[wrap_y] from wrap_y::@3 - [168] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 + [167] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 to:wrap_y::@return wrap_y::@return: scope:[wrap_y] from wrap_y::@5 - [169] return + [168] return to:@return wrap_y::@4: scope:[wrap_y] from wrap_y::@3 - [170] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 + [169] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 to:wrap_y::@3 wrap_y::@2: scope:[wrap_y] from wrap_y::@1 - [171] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 + [170] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 to:wrap_y::@1 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) bitmap_plot: scope:[bitmap_plot] from render_sine::@4 render_sine::@6 - [172] (word) bitmap_plot::x#2 ← phi( render_sine::@4/(word) bitmap_plot::x#0 render_sine::@6/(word) bitmap_plot::x#1 ) - [172] (byte) bitmap_plot::y#2 ← phi( render_sine::@4/(byte) bitmap_plot::y#0 render_sine::@6/(byte) bitmap_plot::y#1 ) - [173] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) - [174] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#2 & (word) $fff8 - [175] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 - [176] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#2 - [177] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) + [171] (word) bitmap_plot::x#2 ← phi( render_sine::@4/(word) bitmap_plot::x#0 render_sine::@6/(word) bitmap_plot::x#1 ) + [171] (byte) bitmap_plot::y#2 ← phi( render_sine::@4/(byte) bitmap_plot::y#0 render_sine::@6/(byte) bitmap_plot::y#1 ) + [172] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) + [173] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#2 & (word) $fff8 + [174] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 + [175] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#2 + [176] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot - [178] return + [177] return to:@return (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) divr16u: scope:[divr16u] from div32u16u div32u16u::@1 - [179] (word) divr16u::dividend#5 ← phi( div32u16u/>(const nomodify dword) PI2_u4f28 div32u16u::@1/<(const nomodify dword) PI2_u4f28 ) - [179] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 ) + [178] (word) divr16u::dividend#5 ← phi( div32u16u/>(const nomodify dword) PI2_u4f28 div32u16u::@1/<(const nomodify dword) PI2_u4f28 ) + [178] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [180] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) - [180] (word) divr16u::quotient#3 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::return#0 ) - [180] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [180] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [181] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 - [182] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [183] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 - [184] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 + [179] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) + [179] (word) divr16u::quotient#3 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::return#0 ) + [179] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [179] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [180] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 + [181] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [182] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 + [183] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [185] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 + [184] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [186] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [187] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 - [188] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 - [189] if((word) divr16u::rem#6<(const nomodify word) SIN_SIZE) goto divr16u::@3 + [185] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [186] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 + [187] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 + [188] if((word) divr16u::rem#6<(const nomodify word) SIN_SIZE) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [190] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [191] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const nomodify word) SIN_SIZE + [189] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [190] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const nomodify word) SIN_SIZE to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [192] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [192] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [193] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [194] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 + [191] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [191] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [192] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [193] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [195] (word) rem16u#0 ← (word) divr16u::rem#11 + [194] (word) rem16u#0 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [196] return + [195] return to:@return (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9 - [197] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 sin16s::@9/(byte) 0 ) - [197] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 sin16s::@9/(word) mulu16_sel::v2#3 ) - [197] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 sin16s::@9/(word) mulu16_sel::v1#3 ) - [198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 - [199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - [200] call mul16u - [201] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [196] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 sin16s::@9/(byte) 0 ) + [196] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 sin16s::@9/(word) mulu16_sel::v2#3 ) + [196] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 sin16s::@9/(word) mulu16_sel::v1#3 ) + [197] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 + [198] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + [199] call mul16u + [200] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mulu16_sel::@1 mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel - [202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - [203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 - [204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 + [201] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + [202] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + [203] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1 - [205] return + [204] return to:@return (dword()) mul16u((word) mul16u::a , (word) mul16u::b) mul16u: scope:[mul16u] from mul16s mulu16_sel - [206] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mulu16_sel/(word) mul16u::a#2 ) - [206] (word) mul16u::b#2 ← phi( mul16s/(word)(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) - [207] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 + [205] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mulu16_sel/(word) mul16u::a#2 ) + [205] (word) mul16u::b#2 ← phi( mul16s/(word)(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) + [206] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@3 - [208] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) - [208] (dword) mul16u::res#2 ← phi( mul16u/(dword) 0 mul16u::@3/(dword) mul16u::res#6 ) - [208] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) - [209] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 + [207] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) + [207] (dword) mul16u::res#2 ← phi( mul16u/(dword) 0 mul16u::@3/(dword) mul16u::res#6 ) + [207] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) + [208] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [210] return + [209] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [211] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 - [212] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 + [210] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 + [211] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 - [213] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [212] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@3 mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4 - [214] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) - [215] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 - [216] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 + [213] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) + [214] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 + [215] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 to:mul16u::@1 diff --git a/src/test/ref/examples/sinplotter/sine-plotter.log b/src/test/ref/examples/sinplotter/sine-plotter.log index 65ff33d62..b3ac6ffa4 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.log +++ b/src/test/ref/examples/sinplotter/sine-plotter.log @@ -2586,6 +2586,10 @@ Constant inlined div32u16u::divisor#0 = (const nomodify word) SIN_SIZE Successful SSA optimization Pass2ConstantInlining Identical Phi Values (word) divr16u::divisor#6 (const nomodify word) SIN_SIZE Successful SSA optimization Pass2IdenticalPhiElimination +Identified duplicate assignment right side [178] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 +Successful SSA optimization Pass2DuplicateRValueIdentification +Alias render_sine::$11 = render_sine::$10 +Successful SSA optimization Pass2AliasElimination Added new block during phi lifting divr16u::@7(between divr16u::@3 and divr16u::@1) Added new block during phi lifting divr16u::@8(between divr16u::@1 and divr16u::@2) Added new block during phi lifting divr16u::@9(between divr16u::@2 and divr16u::@3) @@ -2626,11 +2630,11 @@ CALL GRAPH Calls in [main] to bitmap_init:12 bitmap_clear:14 sin16s_gen2:16 render_sine:18 Calls in [bitmap_clear] to memset:53 memset:55 Calls in [sin16s_gen2] to div32u16u:59 sin16s:66 mul16s:69 -Calls in [render_sine] to wrap_y:89 bitmap_plot:96 wrap_y:102 bitmap_plot:109 -Calls in [div32u16u] to divr16u:130 divr16u:135 -Calls in [sin16s] to mulu16_sel:154 mulu16_sel:161 mulu16_sel:166 mulu16_sel:174 mulu16_sel:181 -Calls in [mul16s] to mul16u:196 -Calls in [mulu16_sel] to mul16u:263 +Calls in [render_sine] to wrap_y:89 bitmap_plot:96 wrap_y:101 bitmap_plot:108 +Calls in [div32u16u] to divr16u:129 divr16u:134 +Calls in [sin16s] to mulu16_sel:153 mulu16_sel:160 mulu16_sel:165 mulu16_sel:173 mulu16_sel:180 +Calls in [mul16s] to mul16u:195 +Calls in [mulu16_sel] to mul16u:262 Created 44 initial phi equivalence classes Coalesced [41] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 @@ -2646,56 +2650,56 @@ Coalesced [79] sin16s_gen2::sintab#8 ← sin16s_gen2::sintab#0 Coalesced [88] wrap_y::y#10 ← wrap_y::y#0 Coalesced [94] bitmap_plot::y#3 ← bitmap_plot::y#0 Coalesced [95] bitmap_plot::x#3 ← bitmap_plot::x#0 -Coalesced [101] wrap_y::y#11 ← wrap_y::y#1 -Coalesced [107] bitmap_plot::y#4 ← bitmap_plot::y#1 -Coalesced [108] bitmap_plot::x#4 ← bitmap_plot::x#1 -Coalesced [115] render_sine::sin_idx#10 ← render_sine::sin_idx#1 -Coalesced [116] render_sine::xpos#10 ← render_sine::xpos#9 -Coalesced [117] render_sine::xpos#11 ← render_sine::xpos#1 -Coalesced [128] memset::dst#5 ← memset::dst#1 -Coalesced [134] divr16u::rem#12 ← divr16u::rem#4 -Coalesced [142] sin16s::x#9 ← sin16s::x#1 -Coalesced [146] sin16s::x#11 ← sin16s::x#2 -Coalesced [152] mulu16_sel::v1#7 ← mulu16_sel::v1#0 -Coalesced [153] mulu16_sel::v2#7 ← mulu16_sel::v2#0 -Coalesced [159] mulu16_sel::v1#8 ← mulu16_sel::v1#1 -Coalesced [160] mulu16_sel::v2#8 ← mulu16_sel::v2#1 -Coalesced [165] mulu16_sel::v1#9 ← mulu16_sel::v1#2 -Coalesced [172] mulu16_sel::v1#10 ← mulu16_sel::v1#3 -Coalesced [173] mulu16_sel::v2#9 ← mulu16_sel::v2#3 -Coalesced [179] mulu16_sel::v1#6 ← mulu16_sel::v1#4 -Coalesced [180] mulu16_sel::v2#6 ← mulu16_sel::v2#4 -Coalesced [188] sin16s::return#6 ← sin16s::sinx#1 -Coalesced [192] sin16s::x#10 ← sin16s::x#4 -Coalesced [193] sin16s::x#8 ← sin16s::x#0 -Coalesced [195] mul16u::a#8 ← mul16u::a#1 -Coalesced [203] mul16s::m#7 ← mul16s::m#1 -Coalesced [207] mul16s::m#8 ← mul16s::m#0 -Coalesced [209] wrap_y::y#12 ← wrap_y::y#9 -Coalesced [212] wrap_y::y#14 ← wrap_y::y#4 -Coalesced [218] wrap_y::y#15 ← wrap_y::y#3 -Coalesced [220] wrap_y::y#13 ← wrap_y::y#2 -Coalesced [229] divr16u::rem#13 ← divr16u::rem#10 -Coalesced [230] divr16u::dividend#9 ← divr16u::dividend#5 -Coalesced [237] divr16u::rem#16 ← divr16u::rem#1 -Coalesced [244] divr16u::rem#18 ← divr16u::rem#2 -Coalesced [245] divr16u::return#8 ← divr16u::quotient#2 -Coalesced [251] divr16u::rem#14 ← divr16u::rem#11 -Coalesced [252] divr16u::dividend#10 ← divr16u::dividend#0 -Coalesced [253] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [254] divr16u::i#7 ← divr16u::i#1 -Coalesced [255] divr16u::rem#17 ← divr16u::rem#6 -Coalesced [256] divr16u::return#7 ← divr16u::quotient#1 -Coalesced [257] divr16u::rem#15 ← divr16u::rem#0 -Coalesced [261] mul16u::b#3 ← mul16u::b#1 -Coalesced [262] mul16u::a#9 ← mul16u::a#2 -Coalesced [271] mul16u::a#10 ← mul16u::a#6 -Coalesced [272] mul16u::mb#6 ← mul16u::mb#0 -Coalesced [280] mul16u::res#9 ← mul16u::res#1 -Coalesced [284] mul16u::a#11 ← mul16u::a#0 -Coalesced [285] mul16u::res#7 ← mul16u::res#6 -Coalesced [286] mul16u::mb#7 ← mul16u::mb#1 -Coalesced (already) [287] mul16u::res#8 ← mul16u::res#2 +Coalesced [100] wrap_y::y#11 ← wrap_y::y#1 +Coalesced [106] bitmap_plot::y#4 ← bitmap_plot::y#1 +Coalesced [107] bitmap_plot::x#4 ← bitmap_plot::x#1 +Coalesced [114] render_sine::sin_idx#10 ← render_sine::sin_idx#1 +Coalesced [115] render_sine::xpos#10 ← render_sine::xpos#9 +Coalesced [116] render_sine::xpos#11 ← render_sine::xpos#1 +Coalesced [127] memset::dst#5 ← memset::dst#1 +Coalesced [133] divr16u::rem#12 ← divr16u::rem#4 +Coalesced [141] sin16s::x#9 ← sin16s::x#1 +Coalesced [145] sin16s::x#11 ← sin16s::x#2 +Coalesced [151] mulu16_sel::v1#7 ← mulu16_sel::v1#0 +Coalesced [152] mulu16_sel::v2#7 ← mulu16_sel::v2#0 +Coalesced [158] mulu16_sel::v1#8 ← mulu16_sel::v1#1 +Coalesced [159] mulu16_sel::v2#8 ← mulu16_sel::v2#1 +Coalesced [164] mulu16_sel::v1#9 ← mulu16_sel::v1#2 +Coalesced [171] mulu16_sel::v1#10 ← mulu16_sel::v1#3 +Coalesced [172] mulu16_sel::v2#9 ← mulu16_sel::v2#3 +Coalesced [178] mulu16_sel::v1#6 ← mulu16_sel::v1#4 +Coalesced [179] mulu16_sel::v2#6 ← mulu16_sel::v2#4 +Coalesced [187] sin16s::return#6 ← sin16s::sinx#1 +Coalesced [191] sin16s::x#10 ← sin16s::x#4 +Coalesced [192] sin16s::x#8 ← sin16s::x#0 +Coalesced [194] mul16u::a#8 ← mul16u::a#1 +Coalesced [202] mul16s::m#7 ← mul16s::m#1 +Coalesced [206] mul16s::m#8 ← mul16s::m#0 +Coalesced [208] wrap_y::y#12 ← wrap_y::y#9 +Coalesced [211] wrap_y::y#14 ← wrap_y::y#4 +Coalesced [217] wrap_y::y#15 ← wrap_y::y#3 +Coalesced [219] wrap_y::y#13 ← wrap_y::y#2 +Coalesced [228] divr16u::rem#13 ← divr16u::rem#10 +Coalesced [229] divr16u::dividend#9 ← divr16u::dividend#5 +Coalesced [236] divr16u::rem#16 ← divr16u::rem#1 +Coalesced [243] divr16u::rem#18 ← divr16u::rem#2 +Coalesced [244] divr16u::return#8 ← divr16u::quotient#2 +Coalesced [250] divr16u::rem#14 ← divr16u::rem#11 +Coalesced [251] divr16u::dividend#10 ← divr16u::dividend#0 +Coalesced [252] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [253] divr16u::i#7 ← divr16u::i#1 +Coalesced [254] divr16u::rem#17 ← divr16u::rem#6 +Coalesced [255] divr16u::return#7 ← divr16u::quotient#1 +Coalesced [256] divr16u::rem#15 ← divr16u::rem#0 +Coalesced [260] mul16u::b#3 ← mul16u::b#1 +Coalesced [261] mul16u::a#9 ← mul16u::a#2 +Coalesced [270] mul16u::a#10 ← mul16u::a#6 +Coalesced [271] mul16u::mb#6 ← mul16u::mb#0 +Coalesced [279] mul16u::res#9 ← mul16u::res#1 +Coalesced [283] mul16u::a#11 ← mul16u::a#0 +Coalesced [284] mul16u::res#7 ← mul16u::res#6 +Coalesced [285] mul16u::mb#7 ← mul16u::mb#1 +Coalesced (already) [286] mul16u::res#8 ← mul16u::res#2 Coalesced down to 31 phi equivalence classes Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return Culled Empty Block (label) main::toD0181_@return @@ -2903,8 +2907,8 @@ render_sine::@return: scope:[render_sine] from render_sine::@1 [67] return to:@return render_sine::@2: scope:[render_sine] from render_sine::@1 - [68] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 - [69] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$10 + [68] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 + [69] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$11 [70] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) [71] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 [72] call wrap_y @@ -2917,295 +2921,294 @@ render_sine::@4: scope:[render_sine] from render_sine::@2 [77] call bitmap_plot to:render_sine::@5 render_sine::@5: scope:[render_sine] from render_sine::@4 - [78] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 - [79] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 - [80] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) - [81] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a - [82] call wrap_y - [83] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 + [78] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 + [79] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) + [80] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a + [81] call wrap_y + [82] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 to:render_sine::@6 render_sine::@6: scope:[render_sine] from render_sine::@5 - [84] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 - [85] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 - [86] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 - [87] call bitmap_plot + [83] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 + [84] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 + [85] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 + [86] call bitmap_plot to:render_sine::@7 render_sine::@7: scope:[render_sine] from render_sine::@6 - [88] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 - [89] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 + [87] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 + [88] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 to:render_sine::@3 render_sine::@8: scope:[render_sine] from render_sine::@7 - [90] phi() + [89] phi() to:render_sine::@3 render_sine::@3: scope:[render_sine] from render_sine::@7 render_sine::@8 - [91] (word) render_sine::xpos#9 ← phi( render_sine::@7/(byte) 0 render_sine::@8/(word) render_sine::xpos#1 ) - [92] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 + [90] (word) render_sine::xpos#9 ← phi( render_sine::@7/(byte) 0 render_sine::@8/(word) render_sine::xpos#1 ) + [91] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 to:render_sine::@1 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) memset: scope:[memset] from bitmap_clear bitmap_clear::@1 - [93] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) - [93] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) SCREEN bitmap_clear::@1/(void*)(const byte*) BITMAP ) - [93] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) - [94] if((word) memset::num#2<=(byte) 0) goto memset::@return + [92] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) + [92] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) SCREEN bitmap_clear::@1/(void*)(const byte*) BITMAP ) + [92] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) + [93] if((word) memset::num#2<=(byte) 0) goto memset::@return to:memset::@1 memset::@1: scope:[memset] from memset - [95] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 - [96] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 + [94] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 + [95] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 to:memset::@2 memset::@2: scope:[memset] from memset::@1 memset::@3 - [97] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 ) - [98] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 + [96] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 ) + [97] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 to:memset::@return memset::@return: scope:[memset] from memset memset::@2 - [99] return + [98] return to:@return memset::@3: scope:[memset] from memset::@2 - [100] *((byte*) memset::dst#2) ← (byte) memset::c#4 - [101] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + [99] *((byte*) memset::dst#2) ← (byte) memset::c#4 + [100] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 to:memset::@2 (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) div32u16u: scope:[div32u16u] from sin16s_gen2 - [102] phi() - [103] call divr16u - [104] (word) divr16u::return#2 ← (word) divr16u::return#0 + [101] phi() + [102] call divr16u + [103] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@1 div32u16u::@1: scope:[div32u16u] from div32u16u - [105] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [106] (word) divr16u::rem#4 ← (word) rem16u#0 - [107] call divr16u - [108] (word) divr16u::return#3 ← (word) divr16u::return#0 + [104] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [105] (word) divr16u::rem#4 ← (word) rem16u#0 + [106] call divr16u + [107] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u::@1 - [109] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [110] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [108] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [109] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@2 - [111] return + [110] return to:@return (signed word()) sin16s((dword) sin16s::x) sin16s: scope:[sin16s] from sin16s_gen2::@2 - [112] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 + [111] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 + [112] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [114] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 ) - [114] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [115] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 + [113] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 ) + [113] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [114] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [116] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 + [115] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 to:sin16s::@2 sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 - [117] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [118] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 - [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 - [120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [122] call mulu16_sel - [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + [116] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [117] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 + [118] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 + [119] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [120] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [121] call mulu16_sel + [122] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 to:sin16s::@7 sin16s::@7: scope:[sin16s] from sin16s::@2 - [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [127] call mulu16_sel - [128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 + [123] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [124] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [125] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [126] call mulu16_sel + [127] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@7 - [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [131] call mulu16_sel - [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + [128] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [129] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [130] call mulu16_sel + [131] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [137] call mulu16_sel - [138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 + [132] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + [133] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [134] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [135] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [136] call mulu16_sel + [137] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [142] call mulu16_sel - [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + [138] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + [139] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [140] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [141] call mulu16_sel + [142] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - [145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 - [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [147] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 + [143] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + [144] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 + [145] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [146] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@11 - [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [147] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6 - [149] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [148] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [150] return + [149] return to:@return sin16s::@12: scope:[sin16s] from sin16s::@11 - [151] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [150] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) mul16s: scope:[mul16s] from sin16s_gen2::@4 - [152] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 - [153] call mul16u - [154] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [151] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 + [152] call mul16u + [153] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s - [155] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - [156] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 + [154] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + [155] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@4 - [157] (word~) mul16s::$6 ← > (dword) mul16s::m#0 - [158] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(const signed word) sin16s_gen2::ampl#0 - [159] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 + [156] (word~) mul16s::$6 ← > (dword) mul16s::m#0 + [157] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(const signed word) sin16s_gen2::ampl#0 + [158] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@4 - [160] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@4/(dword) mul16s::m#0 ) + [159] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@4/(dword) mul16s::m#0 ) to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 - [161] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 + [160] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [162] return + [161] return to:@return (byte()) wrap_y((signed word) wrap_y::y) wrap_y: scope:[wrap_y] from render_sine::@2 render_sine::@5 - [163] (signed word) wrap_y::y#9 ← phi( render_sine::@2/(signed word) wrap_y::y#0 render_sine::@5/(signed word) wrap_y::y#1 ) + [162] (signed word) wrap_y::y#9 ← phi( render_sine::@2/(signed word) wrap_y::y#0 render_sine::@5/(signed word) wrap_y::y#1 ) to:wrap_y::@1 wrap_y::@1: scope:[wrap_y] from wrap_y wrap_y::@2 - [164] (signed word) wrap_y::y#4 ← phi( wrap_y/(signed word) wrap_y::y#9 wrap_y::@2/(signed word) wrap_y::y#2 ) - [165] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 + [163] (signed word) wrap_y::y#4 ← phi( wrap_y/(signed word) wrap_y::y#9 wrap_y::@2/(signed word) wrap_y::y#2 ) + [164] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 to:wrap_y::@3 wrap_y::@3: scope:[wrap_y] from wrap_y::@1 wrap_y::@4 - [166] (signed word) wrap_y::y#6 ← phi( wrap_y::@1/(signed word) wrap_y::y#4 wrap_y::@4/(signed word) wrap_y::y#3 ) - [167] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 + [165] (signed word) wrap_y::y#6 ← phi( wrap_y::@1/(signed word) wrap_y::y#4 wrap_y::@4/(signed word) wrap_y::y#3 ) + [166] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 to:wrap_y::@5 wrap_y::@5: scope:[wrap_y] from wrap_y::@3 - [168] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 + [167] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 to:wrap_y::@return wrap_y::@return: scope:[wrap_y] from wrap_y::@5 - [169] return + [168] return to:@return wrap_y::@4: scope:[wrap_y] from wrap_y::@3 - [170] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 + [169] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 to:wrap_y::@3 wrap_y::@2: scope:[wrap_y] from wrap_y::@1 - [171] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 + [170] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 to:wrap_y::@1 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) bitmap_plot: scope:[bitmap_plot] from render_sine::@4 render_sine::@6 - [172] (word) bitmap_plot::x#2 ← phi( render_sine::@4/(word) bitmap_plot::x#0 render_sine::@6/(word) bitmap_plot::x#1 ) - [172] (byte) bitmap_plot::y#2 ← phi( render_sine::@4/(byte) bitmap_plot::y#0 render_sine::@6/(byte) bitmap_plot::y#1 ) - [173] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) - [174] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#2 & (word) $fff8 - [175] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 - [176] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#2 - [177] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) + [171] (word) bitmap_plot::x#2 ← phi( render_sine::@4/(word) bitmap_plot::x#0 render_sine::@6/(word) bitmap_plot::x#1 ) + [171] (byte) bitmap_plot::y#2 ← phi( render_sine::@4/(byte) bitmap_plot::y#0 render_sine::@6/(byte) bitmap_plot::y#1 ) + [172] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) + [173] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#2 & (word) $fff8 + [174] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 + [175] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#2 + [176] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot - [178] return + [177] return to:@return (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) divr16u: scope:[divr16u] from div32u16u div32u16u::@1 - [179] (word) divr16u::dividend#5 ← phi( div32u16u/>(const nomodify dword) PI2_u4f28 div32u16u::@1/<(const nomodify dword) PI2_u4f28 ) - [179] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 ) + [178] (word) divr16u::dividend#5 ← phi( div32u16u/>(const nomodify dword) PI2_u4f28 div32u16u::@1/<(const nomodify dword) PI2_u4f28 ) + [178] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [180] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) - [180] (word) divr16u::quotient#3 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::return#0 ) - [180] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [180] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [181] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 - [182] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [183] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 - [184] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 + [179] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) + [179] (word) divr16u::quotient#3 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::return#0 ) + [179] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [179] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [180] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 + [181] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [182] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 + [183] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [185] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 + [184] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [186] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [187] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 - [188] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 - [189] if((word) divr16u::rem#6<(const nomodify word) SIN_SIZE) goto divr16u::@3 + [185] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [186] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 + [187] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 + [188] if((word) divr16u::rem#6<(const nomodify word) SIN_SIZE) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [190] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [191] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const nomodify word) SIN_SIZE + [189] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [190] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const nomodify word) SIN_SIZE to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [192] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [192] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [193] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [194] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 + [191] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [191] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [192] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [193] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [195] (word) rem16u#0 ← (word) divr16u::rem#11 + [194] (word) rem16u#0 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [196] return + [195] return to:@return (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9 - [197] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 sin16s::@9/(byte) 0 ) - [197] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 sin16s::@9/(word) mulu16_sel::v2#3 ) - [197] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 sin16s::@9/(word) mulu16_sel::v1#3 ) - [198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 - [199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - [200] call mul16u - [201] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [196] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 sin16s::@9/(byte) 0 ) + [196] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 sin16s::@9/(word) mulu16_sel::v2#3 ) + [196] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 sin16s::@9/(word) mulu16_sel::v1#3 ) + [197] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 + [198] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + [199] call mul16u + [200] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mulu16_sel::@1 mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel - [202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - [203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 - [204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 + [201] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + [202] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + [203] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1 - [205] return + [204] return to:@return (dword()) mul16u((word) mul16u::a , (word) mul16u::b) mul16u: scope:[mul16u] from mul16s mulu16_sel - [206] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mulu16_sel/(word) mul16u::a#2 ) - [206] (word) mul16u::b#2 ← phi( mul16s/(word)(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) - [207] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 + [205] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mulu16_sel/(word) mul16u::a#2 ) + [205] (word) mul16u::b#2 ← phi( mul16s/(word)(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) + [206] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@3 - [208] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) - [208] (dword) mul16u::res#2 ← phi( mul16u/(dword) 0 mul16u::@3/(dword) mul16u::res#6 ) - [208] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) - [209] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 + [207] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) + [207] (dword) mul16u::res#2 ← phi( mul16u/(dword) 0 mul16u::@3/(dword) mul16u::res#6 ) + [207] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) + [208] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [210] return + [209] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [211] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 - [212] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 + [210] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 + [211] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 - [213] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [212] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@3 mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4 - [214] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) - [215] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 - [216] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 + [213] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) + [214] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 + [215] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 to:mul16u::@1 @@ -3459,19 +3462,18 @@ VARIABLE REGISTER WEIGHTS (word) rem16u#0 220.39999999999998 (void()) render_sine() (signed word*~) render_sine::$1 202.0 -(word~) render_sine::$10 202.0 -(word~) render_sine::$11 202.0 +(word~) render_sine::$11 30.299999999999997 (signed word*~) render_sine::$4 202.0 (signed word) render_sine::sin2_val (signed word) render_sine::sin2_val#0 202.0 (word) render_sine::sin_idx (word) render_sine::sin_idx#1 202.0 -(word) render_sine::sin_idx#2 19.423076923076923 +(word) render_sine::sin_idx#2 16.16 (signed word) render_sine::sin_val (signed word) render_sine::sin_val#0 202.0 (word) render_sine::xpos (word) render_sine::xpos#1 101.0 -(word) render_sine::xpos#3 18.363636363636363 +(word) render_sine::xpos#3 19.238095238095237 (word) render_sine::xpos#9 101.0 (byte) render_sine::ypos (byte) render_sine::ypos#0 101.0 @@ -3586,12 +3588,11 @@ Added variable mul16s::a#0 to live range equivalence class [ mul16s::a#0 ] Added variable mul16s::return#2 to live range equivalence class [ mul16s::return#2 ] Added variable sin16s_gen2::$6 to live range equivalence class [ sin16s_gen2::$6 ] Added variable sin16s_gen2::$8 to live range equivalence class [ sin16s_gen2::$8 ] -Added variable render_sine::$10 to live range equivalence class [ render_sine::$10 ] +Added variable render_sine::$11 to live range equivalence class [ render_sine::$11 ] Added variable render_sine::$1 to live range equivalence class [ render_sine::$1 ] Added variable render_sine::sin_val#0 to live range equivalence class [ render_sine::sin_val#0 ] Added variable wrap_y::return#0 to live range equivalence class [ wrap_y::return#0 ] Added variable render_sine::ypos#0 to live range equivalence class [ render_sine::ypos#0 ] -Added variable render_sine::$11 to live range equivalence class [ render_sine::$11 ] Added variable render_sine::$4 to live range equivalence class [ render_sine::$4 ] Added variable render_sine::sin2_val#0 to live range equivalence class [ render_sine::sin2_val#0 ] Added variable wrap_y::return#1 to live range equivalence class [ wrap_y::return#1 ] @@ -3677,12 +3678,11 @@ Complete equivalence classes [ mul16s::return#2 ] [ sin16s_gen2::$6 ] [ sin16s_gen2::$8 ] -[ render_sine::$10 ] +[ render_sine::$11 ] [ render_sine::$1 ] [ render_sine::sin_val#0 ] [ wrap_y::return#0 ] [ render_sine::ypos#0 ] -[ render_sine::$11 ] [ render_sine::$4 ] [ render_sine::sin2_val#0 ] [ wrap_y::return#1 ] @@ -3767,54 +3767,53 @@ Allocated zp[2]:80 [ mul16s::a#0 ] Allocated zp[4]:82 [ mul16s::return#2 ] Allocated zp[4]:86 [ sin16s_gen2::$6 ] Allocated zp[2]:90 [ sin16s_gen2::$8 ] -Allocated zp[2]:92 [ render_sine::$10 ] +Allocated zp[2]:92 [ render_sine::$11 ] Allocated zp[2]:94 [ render_sine::$1 ] Allocated zp[2]:96 [ render_sine::sin_val#0 ] Allocated zp[1]:98 [ wrap_y::return#0 ] Allocated zp[1]:99 [ render_sine::ypos#0 ] -Allocated zp[2]:100 [ render_sine::$11 ] -Allocated zp[2]:102 [ render_sine::$4 ] -Allocated zp[2]:104 [ render_sine::sin2_val#0 ] -Allocated zp[1]:106 [ wrap_y::return#1 ] -Allocated zp[1]:107 [ render_sine::ypos2#0 ] -Allocated zp[2]:108 [ memset::end#0 ] -Allocated zp[2]:110 [ divr16u::return#2 ] -Allocated zp[2]:112 [ div32u16u::quotient_hi#0 ] -Allocated zp[2]:114 [ divr16u::return#3 ] -Allocated zp[2]:116 [ div32u16u::quotient_lo#0 ] -Allocated zp[4]:118 [ div32u16u::return#0 ] -Allocated zp[4]:122 [ sin16s::$4 ] -Allocated zp[2]:126 [ sin16s::x1#0 ] -Allocated zp[2]:128 [ mulu16_sel::return#0 ] -Allocated zp[2]:130 [ sin16s::x2#0 ] -Allocated zp[2]:132 [ mulu16_sel::return#1 ] -Allocated zp[2]:134 [ sin16s::x3#0 ] -Allocated zp[2]:136 [ mulu16_sel::return#2 ] -Allocated zp[2]:138 [ sin16s::x3_6#0 ] -Allocated zp[2]:140 [ sin16s::usinx#0 ] -Allocated zp[2]:142 [ mulu16_sel::return#10 ] -Allocated zp[2]:144 [ sin16s::x4#0 ] -Allocated zp[2]:146 [ mulu16_sel::return#11 ] -Allocated zp[2]:148 [ sin16s::x5#0 ] -Allocated zp[2]:150 [ sin16s::x5_128#0 ] -Allocated zp[2]:152 [ sin16s::usinx#1 ] -Allocated zp[4]:154 [ mul16u::return#2 ] -Allocated zp[2]:158 [ mul16s::$6 ] -Allocated zp[2]:160 [ mul16s::$11 ] -Allocated zp[4]:162 [ mul16s::return#0 ] -Allocated zp[1]:166 [ wrap_y::return#2 ] -Allocated zp[2]:167 [ bitmap_plot::plotter#0 ] -Allocated zp[2]:169 [ bitmap_plot::$0 ] -Allocated zp[2]:171 [ bitmap_plot::plotter#1 ] -Allocated zp[1]:173 [ bitmap_plot::$1 ] -Allocated zp[1]:174 [ divr16u::$1 ] -Allocated zp[1]:175 [ divr16u::$2 ] -Allocated zp[2]:176 [ rem16u#0 ] -Allocated zp[4]:178 [ mul16u::return#3 ] -Allocated zp[4]:182 [ mulu16_sel::$0 ] -Allocated zp[4]:186 [ mulu16_sel::$1 ] -Allocated zp[2]:190 [ mulu16_sel::return#12 ] -Allocated zp[1]:192 [ mul16u::$1 ] +Allocated zp[2]:100 [ render_sine::$4 ] +Allocated zp[2]:102 [ render_sine::sin2_val#0 ] +Allocated zp[1]:104 [ wrap_y::return#1 ] +Allocated zp[1]:105 [ render_sine::ypos2#0 ] +Allocated zp[2]:106 [ memset::end#0 ] +Allocated zp[2]:108 [ divr16u::return#2 ] +Allocated zp[2]:110 [ div32u16u::quotient_hi#0 ] +Allocated zp[2]:112 [ divr16u::return#3 ] +Allocated zp[2]:114 [ div32u16u::quotient_lo#0 ] +Allocated zp[4]:116 [ div32u16u::return#0 ] +Allocated zp[4]:120 [ sin16s::$4 ] +Allocated zp[2]:124 [ sin16s::x1#0 ] +Allocated zp[2]:126 [ mulu16_sel::return#0 ] +Allocated zp[2]:128 [ sin16s::x2#0 ] +Allocated zp[2]:130 [ mulu16_sel::return#1 ] +Allocated zp[2]:132 [ sin16s::x3#0 ] +Allocated zp[2]:134 [ mulu16_sel::return#2 ] +Allocated zp[2]:136 [ sin16s::x3_6#0 ] +Allocated zp[2]:138 [ sin16s::usinx#0 ] +Allocated zp[2]:140 [ mulu16_sel::return#10 ] +Allocated zp[2]:142 [ sin16s::x4#0 ] +Allocated zp[2]:144 [ mulu16_sel::return#11 ] +Allocated zp[2]:146 [ sin16s::x5#0 ] +Allocated zp[2]:148 [ sin16s::x5_128#0 ] +Allocated zp[2]:150 [ sin16s::usinx#1 ] +Allocated zp[4]:152 [ mul16u::return#2 ] +Allocated zp[2]:156 [ mul16s::$6 ] +Allocated zp[2]:158 [ mul16s::$11 ] +Allocated zp[4]:160 [ mul16s::return#0 ] +Allocated zp[1]:164 [ wrap_y::return#2 ] +Allocated zp[2]:165 [ bitmap_plot::plotter#0 ] +Allocated zp[2]:167 [ bitmap_plot::$0 ] +Allocated zp[2]:169 [ bitmap_plot::plotter#1 ] +Allocated zp[1]:171 [ bitmap_plot::$1 ] +Allocated zp[1]:172 [ divr16u::$1 ] +Allocated zp[1]:173 [ divr16u::$2 ] +Allocated zp[2]:174 [ rem16u#0 ] +Allocated zp[4]:176 [ mul16u::return#3 ] +Allocated zp[4]:180 [ mulu16_sel::$0 ] +Allocated zp[4]:184 [ mulu16_sel::$1 ] +Allocated zp[2]:188 [ mulu16_sel::return#12 ] +Allocated zp[1]:190 [ mul16u::$1 ] INITIAL ASM Target platform is c64basic / MOS6502X @@ -3858,7 +3857,7 @@ Target platform is c64basic / MOS6502X .label SCREEN = $400 .label BITMAP = $2000 // Remainder after unsigned 16-bit division - .label rem16u = $b0 + .label rem16u = $ae // main main: { .const vicSelectGfxBank1_toDd001_return = 3 @@ -4089,17 +4088,17 @@ bitmap_init: { bitmap_clear: { .const col = WHITE*$10 // [41] call memset - // [93] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + // [92] phi from bitmap_clear to memset [phi:bitmap_clear->memset] memset_from_bitmap_clear: - // [93] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuz1=vbuc1 + // [92] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuz1=vbuc1 lda #col sta.z memset.c - // [93] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 + // [92] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 lda #SCREEN sta.z memset.str+1 - // [93] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 + // [92] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 lda #<$3e8 sta.z memset.num lda #>$3e8 @@ -4111,17 +4110,17 @@ bitmap_clear: { // bitmap_clear::@1 __b1: // [43] call memset - // [93] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + // [92] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] memset_from___b1: - // [93] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuz1=vbuc1 + // [92] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuz1=vbuc1 lda #0 sta.z memset.c - // [93] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 + // [92] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 lda #BITMAP sta.z memset.str+1 - // [93] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 + // [92] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 lda #<$1f40 sta.z memset.num lda #>$1f40 @@ -4151,7 +4150,7 @@ sin16s_gen2: { .label x = 9 .label i = 7 // [46] call div32u16u - // [102] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + // [101] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] div32u16u_from_sin16s_gen2: jsr div32u16u // [47] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 @@ -4312,13 +4311,12 @@ sin16s_gen2: { // render_sine render_sine: { .label __1 = $5e - .label __4 = $66 - .label __10 = $5c - .label __11 = $64 + .label __4 = $64 + .label __11 = $5c .label sin_val = $60 .label ypos = $63 - .label sin2_val = $68 - .label ypos2 = $6b + .label sin2_val = $66 + .label ypos2 = $69 .label xpos = $11 .label sin_idx = $f // [65] phi from render_sine to render_sine::@1 [phi:render_sine->render_sine::@1] @@ -4352,19 +4350,19 @@ render_sine: { rts // render_sine::@2 __b2: - // [68] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 + // [68] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 lda.z sin_idx asl - sta.z __10 + sta.z __11 lda.z sin_idx+1 rol - sta.z __10+1 - // [69] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$10 -- pwsz1=pwsc1_plus_vwuz2 - lda.z __10 + sta.z __11+1 + // [69] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$11 -- pwsz1=pwsc1_plus_vwuz2 + lda.z __11 clc adc #sin sta.z __1+1 // [70] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) -- vwsz1=_deref_pwsz2 @@ -4380,9 +4378,9 @@ render_sine: { lda.z sin_val+1 sta.z wrap_y.y+1 // [72] call wrap_y - // [163] phi from render_sine::@2 to wrap_y [phi:render_sine::@2->wrap_y] + // [162] phi from render_sine::@2 to wrap_y [phi:render_sine::@2->wrap_y] wrap_y_from___b2: - // [163] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@2->wrap_y#0] -- register_copy + // [162] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@2->wrap_y#0] -- register_copy jsr wrap_y // [73] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 -- vbuz1=vbuz2 lda.z wrap_y.return_2 @@ -4402,22 +4400,15 @@ render_sine: { lda.z ypos sta.z bitmap_plot.y // [77] call bitmap_plot - // [172] phi from render_sine::@4 to bitmap_plot [phi:render_sine::@4->bitmap_plot] + // [171] phi from render_sine::@4 to bitmap_plot [phi:render_sine::@4->bitmap_plot] bitmap_plot_from___b4: - // [172] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@4->bitmap_plot#0] -- register_copy - // [172] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@4->bitmap_plot#1] -- register_copy + // [171] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@4->bitmap_plot#0] -- register_copy + // [171] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@4->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b5 // render_sine::@5 __b5: - // [78] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 - lda.z sin_idx - asl - sta.z __11 - lda.z sin_idx+1 - rol - sta.z __11+1 - // [79] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 -- pwsz1=pwsc1_plus_vwuz2 + // [78] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 -- pwsz1=pwsc1_plus_vwuz2 lda.z __11 clc adc #sin2 sta.z __4+1 - // [80] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) -- vwsz1=_deref_pwsz2 + // [79] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) -- vwsz1=_deref_pwsz2 ldy #0 lda (__4),y sta.z sin2_val iny lda (__4),y sta.z sin2_val+1 - // [81] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz2_plus_vbsc1 + // [80] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz2_plus_vbsc1 lda.z sin2_val clc adc #<$a @@ -4440,69 +4431,69 @@ render_sine: { lda.z sin2_val+1 adc #>$a sta.z wrap_y.y+1 - // [82] call wrap_y - // [163] phi from render_sine::@5 to wrap_y [phi:render_sine::@5->wrap_y] + // [81] call wrap_y + // [162] phi from render_sine::@5 to wrap_y [phi:render_sine::@5->wrap_y] wrap_y_from___b5: - // [163] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@5->wrap_y#0] -- register_copy + // [162] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@5->wrap_y#0] -- register_copy jsr wrap_y - // [83] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 -- vbuz1=vbuz2 + // [82] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 -- vbuz1=vbuz2 lda.z wrap_y.return_2 sta.z wrap_y.return_1 jmp __b6 // render_sine::@6 __b6: - // [84] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuz1=vbuz2 + // [83] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuz1=vbuz2 lda.z wrap_y.return_1 sta.z ypos2 - // [85] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 -- vwuz1=vwuz2 + // [84] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 -- vwuz1=vwuz2 lda.z xpos sta.z bitmap_plot.x lda.z xpos+1 sta.z bitmap_plot.x+1 - // [86] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 -- vbuz1=vbuz2 + // [85] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 -- vbuz1=vbuz2 lda.z ypos2 sta.z bitmap_plot.y - // [87] call bitmap_plot - // [172] phi from render_sine::@6 to bitmap_plot [phi:render_sine::@6->bitmap_plot] + // [86] call bitmap_plot + // [171] phi from render_sine::@6 to bitmap_plot [phi:render_sine::@6->bitmap_plot] bitmap_plot_from___b6: - // [172] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@6->bitmap_plot#0] -- register_copy - // [172] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@6->bitmap_plot#1] -- register_copy + // [171] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@6->bitmap_plot#0] -- register_copy + // [171] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@6->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b7 // render_sine::@7 __b7: - // [88] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 + // [87] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 inc.z xpos bne !+ inc.z xpos+1 !: - // [89] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 -- vwuz1_neq_vwuc1_then_la1 + // [88] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 -- vwuz1_neq_vwuc1_then_la1 lda.z xpos+1 cmp #>$140 bne __b8_from___b7 lda.z xpos cmp #<$140 bne __b8_from___b7 - // [91] phi from render_sine::@7 to render_sine::@3 [phi:render_sine::@7->render_sine::@3] + // [90] phi from render_sine::@7 to render_sine::@3 [phi:render_sine::@7->render_sine::@3] __b3_from___b7: - // [91] phi (word) render_sine::xpos#9 = (byte) 0 [phi:render_sine::@7->render_sine::@3#0] -- vwuz1=vbuc1 + // [90] phi (word) render_sine::xpos#9 = (byte) 0 [phi:render_sine::@7->render_sine::@3#0] -- vwuz1=vbuc1 lda #<0 sta.z xpos lda #>0 sta.z xpos+1 jmp __b3 - // [90] phi from render_sine::@7 to render_sine::@8 [phi:render_sine::@7->render_sine::@8] + // [89] phi from render_sine::@7 to render_sine::@8 [phi:render_sine::@7->render_sine::@8] __b8_from___b7: jmp __b8 // render_sine::@8 __b8: - // [91] phi from render_sine::@8 to render_sine::@3 [phi:render_sine::@8->render_sine::@3] + // [90] phi from render_sine::@8 to render_sine::@3 [phi:render_sine::@8->render_sine::@3] __b3_from___b8: - // [91] phi (word) render_sine::xpos#9 = (word) render_sine::xpos#1 [phi:render_sine::@8->render_sine::@3#0] -- register_copy + // [90] phi (word) render_sine::xpos#9 = (word) render_sine::xpos#1 [phi:render_sine::@8->render_sine::@3#0] -- register_copy jmp __b3 // render_sine::@3 __b3: - // [92] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 -- vwuz1=_inc_vwuz1 + // [91] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 -- vwuz1=_inc_vwuz1 inc.z sin_idx bne !+ inc.z sin_idx+1 @@ -4517,12 +4508,12 @@ render_sine: { // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. // memset(void* zp($15) str, byte zp($17) c, word zp($13) num) memset: { - .label end = $6c + .label end = $6a .label dst = $18 .label num = $13 .label str = $15 .label c = $17 - // [94] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + // [93] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 lda.z num bne !+ lda.z num+1 @@ -4531,7 +4522,7 @@ memset: { jmp __b1 // memset::@1 __b1: - // [95] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz3 + // [94] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz3 lda.z str clc adc.z num @@ -4539,19 +4530,19 @@ memset: { lda.z str+1 adc.z num+1 sta.z end+1 - // [96] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 -- pbuz1=pbuz2 + // [95] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 -- pbuz1=pbuz2 lda.z str sta.z dst lda.z str+1 sta.z dst+1 - // [97] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] + // [96] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] __b2_from___b1: __b2_from___b3: - // [97] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy + // [96] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy jmp __b2 // memset::@2 __b2: - // [98] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 + // [97] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 lda.z dst+1 cmp.z end+1 bne __b3 @@ -4561,15 +4552,15 @@ memset: { jmp __breturn // memset::@return __breturn: - // [99] return + // [98] return rts // memset::@3 __b3: - // [100] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuz2 + // [99] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuz2 lda.z c ldy #0 sta (dst),y - // [101] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [100] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 @@ -4580,25 +4571,25 @@ memset: { // Divide unsigned 32-bit unsigned long dividend with a 16-bit unsigned int divisor // The 16-bit unsigned int remainder can be found in rem16u after the division div32u16u: { - .label quotient_hi = $70 - .label quotient_lo = $74 - .label return = $76 + .label quotient_hi = $6e + .label quotient_lo = $72 + .label return = $74 .label return_1 = $46 - // [103] call divr16u - // [179] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + // [102] call divr16u + // [178] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - // [179] phi (word) divr16u::dividend#5 = >(const nomodify dword) PI2_u4f28 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + // [178] phi (word) divr16u::dividend#5 = >(const nomodify dword) PI2_u4f28 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta.z divr16u.dividend lda #>PI2_u4f28>>$10 sta.z divr16u.dividend+1 - // [179] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + // [178] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta.z divr16u.rem lda #>0 sta.z divr16u.rem+1 jsr divr16u - // [104] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + // [103] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda.z divr16u.return sta.z divr16u.return_1 lda.z divr16u.return+1 @@ -4606,27 +4597,27 @@ div32u16u: { jmp __b1 // div32u16u::@1 __b1: - // [105] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + // [104] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda.z divr16u.return_1 sta.z quotient_hi lda.z divr16u.return_1+1 sta.z quotient_hi+1 - // [106] (word) divr16u::rem#4 ← (word) rem16u#0 -- vwuz1=vwuz2 + // [105] (word) divr16u::rem#4 ← (word) rem16u#0 -- vwuz1=vwuz2 lda.z rem16u sta.z divr16u.rem lda.z rem16u+1 sta.z divr16u.rem+1 - // [107] call divr16u - // [179] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] + // [106] call divr16u + // [178] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] divr16u_from___b1: - // [179] phi (word) divr16u::dividend#5 = <(const nomodify dword) PI2_u4f28 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 + // [178] phi (word) divr16u::dividend#5 = <(const nomodify dword) PI2_u4f28 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta.z divr16u.dividend+1 - // [179] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy + // [178] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy jsr divr16u - // [108] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + // [107] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda.z divr16u.return sta.z divr16u.return_2 lda.z divr16u.return+1 @@ -4634,12 +4625,12 @@ div32u16u: { jmp __b2 // div32u16u::@2 __b2: - // [109] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + // [108] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 lda.z divr16u.return_2 sta.z quotient_lo lda.z divr16u.return_2+1 sta.z quotient_lo+1 - // [110] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + // [109] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda.z quotient_hi sta.z return+2 lda.z quotient_hi+1 @@ -4651,7 +4642,7 @@ div32u16u: { jmp __breturn // div32u16u::@return __breturn: - // [111] return + // [110] return rts } // sin16s @@ -4660,23 +4651,23 @@ div32u16u: { // result: signed int sin(x) s[0.15] - using the full range -$7fff - $7fff // sin16s(dword zp($1b) x) sin16s: { - .label __4 = $7a + .label __4 = $78 .label x = $1b .label return = $4e - .label x1 = $7e - .label x2 = $82 - .label x3 = $86 - .label x3_6 = $8a - .label usinx = $8c - .label x4 = $90 - .label x5 = $94 - .label x5_128 = $96 - .label usinx_1 = $98 + .label x1 = $7c + .label x2 = $80 + .label x3 = $84 + .label x3_6 = $88 + .label usinx = $8a + .label x4 = $8e + .label x5 = $92 + .label x5_128 = $94 + .label usinx_1 = $96 .label return_1 = $1f .label sinx = $1f // Move x1 into the range 0-PI/2 using sinus mirror symmetries .label isUpper = $1a - // [112] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + // [111] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda.z x+3 cmp #>PI_u4f28>>$10 bcc __b1_from_sin16s @@ -4696,7 +4687,7 @@ sin16s: { jmp __b4 // sin16s::@4 __b4: - // [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 -- vduz1=vduz1_minus_vduc1 + // [112] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 -- vduz1=vduz1_minus_vduc1 lda.z x sec sbc #PI_u4f28>>$10 sta.z x+3 - // [114] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + // [113] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] __b1_from___b4: - // [114] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + // [113] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta.z isUpper - // [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + // [113] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp __b1 - // [114] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + // [113] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] __b1_from_sin16s: - // [114] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + // [113] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta.z isUpper - // [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + // [113] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp __b1 // sin16s::@1 __b1: - // [115] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + // [114] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda.z x+3 cmp #>PI_HALF_u4f28>>$10 bcc __b2_from___b1 @@ -4746,7 +4737,7 @@ sin16s: { jmp __b5 // sin16s::@5 __b5: - // [116] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + // [115] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 lda #PI_u4f28>>$10 sbc.z x+3 sta.z x+3 - // [117] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + // [116] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] __b2_from___b1: __b2_from___b5: - // [117] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + // [116] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp __b2 // sin16s::@2 __b2: - // [118] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz2_rol_3 + // [117] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz2_rol_3 lda.z x asl sta.z __4 @@ -4788,31 +4779,31 @@ sin16s: { rol.z __4+1 rol.z __4+2 rol.z __4+3 - // [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 + // [118] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 lda.z __4+2 sta.z x1 lda.z __4+3 sta.z x1+1 - // [120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + // [119] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda.z x1 sta.z mulu16_sel.v1 lda.z x1+1 sta.z mulu16_sel.v1+1 - // [121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + // [120] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda.z x1 sta.z mulu16_sel.v2 lda.z x1+1 sta.z mulu16_sel.v2+1 - // [122] call mulu16_sel - // [197] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + // [121] call mulu16_sel + // [196] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from___b2: - // [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 + // [196] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta.z mulu16_sel.select - // [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - // [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + // [196] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + // [196] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - // [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + // [122] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda.z mulu16_sel.return_5 sta.z mulu16_sel.return lda.z mulu16_sel.return_5+1 @@ -4820,31 +4811,31 @@ sin16s: { jmp __b7 // sin16s::@7 __b7: - // [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + // [123] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda.z mulu16_sel.return sta.z x2 lda.z mulu16_sel.return+1 sta.z x2+1 - // [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 + // [124] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 lda.z x2 sta.z mulu16_sel.v1 lda.z x2+1 sta.z mulu16_sel.v1+1 - // [126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + // [125] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda.z x1 sta.z mulu16_sel.v2 lda.z x1+1 sta.z mulu16_sel.v2+1 - // [127] call mulu16_sel - // [197] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] + // [126] call mulu16_sel + // [196] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] mulu16_sel_from___b7: - // [197] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuz1=vbuc1 + // [196] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta.z mulu16_sel.select - // [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy - // [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy + // [196] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy + // [196] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - // [128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + // [127] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda.z mulu16_sel.return_5 sta.z mulu16_sel.return_1 lda.z mulu16_sel.return_5+1 @@ -4852,30 +4843,30 @@ sin16s: { jmp __b8 // sin16s::@8 __b8: - // [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 + // [128] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 lda.z mulu16_sel.return_1 sta.z x3 lda.z mulu16_sel.return_1+1 sta.z x3+1 - // [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + // [129] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 lda.z x3 sta.z mulu16_sel.v1 lda.z x3+1 sta.z mulu16_sel.v1+1 - // [131] call mulu16_sel - // [197] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + // [130] call mulu16_sel + // [196] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from___b8: - // [197] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 + // [196] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta.z mulu16_sel.select - // [197] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 + // [196] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta.z mulu16_sel.v2 lda #>$10000/6 sta.z mulu16_sel.v2+1 - // [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + // [196] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - // [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + // [131] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda.z mulu16_sel.return_5 sta.z mulu16_sel.return_2 lda.z mulu16_sel.return_5+1 @@ -4883,12 +4874,12 @@ sin16s: { jmp __b9 // sin16s::@9 __b9: - // [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 + // [132] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 lda.z mulu16_sel.return_2 sta.z x3_6 lda.z mulu16_sel.return_2+1 sta.z x3_6+1 - // [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + // [133] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z x1 sec sbc.z x3_6 @@ -4896,26 +4887,26 @@ sin16s: { lda.z x1+1 sbc.z x3_6+1 sta.z usinx+1 - // [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + // [134] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 lda.z x3 sta.z mulu16_sel.v1 lda.z x3+1 sta.z mulu16_sel.v1+1 - // [136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + // [135] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda.z x1 sta.z mulu16_sel.v2 lda.z x1+1 sta.z mulu16_sel.v2+1 - // [137] call mulu16_sel - // [197] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + // [136] call mulu16_sel + // [196] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from___b9: - // [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 + // [196] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta.z mulu16_sel.select - // [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy - // [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + // [196] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy + // [196] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - // [138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + // [137] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda.z mulu16_sel.return_5 sta.z mulu16_sel.return_3 lda.z mulu16_sel.return_5+1 @@ -4923,31 +4914,31 @@ sin16s: { jmp __b10 // sin16s::@10 __b10: - // [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 + // [138] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 lda.z mulu16_sel.return_3 sta.z x4 lda.z mulu16_sel.return_3+1 sta.z x4+1 - // [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 + // [139] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 lda.z x4 sta.z mulu16_sel.v1 lda.z x4+1 sta.z mulu16_sel.v1+1 - // [141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + // [140] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda.z x1 sta.z mulu16_sel.v2 lda.z x1+1 sta.z mulu16_sel.v2+1 - // [142] call mulu16_sel - // [197] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + // [141] call mulu16_sel + // [196] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from___b10: - // [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 + // [196] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta.z mulu16_sel.select - // [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - // [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + // [196] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + // [196] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - // [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + // [142] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda.z mulu16_sel.return_5 sta.z mulu16_sel.return_4 lda.z mulu16_sel.return_5+1 @@ -4955,12 +4946,12 @@ sin16s: { jmp __b11 // sin16s::@11 __b11: - // [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 + // [143] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 lda.z mulu16_sel.return_4 sta.z x5 lda.z mulu16_sel.return_4+1 sta.z x5+1 - // [145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz2_ror_4 + // [144] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz2_ror_4 lda.z x5+1 lsr sta.z x5_128+1 @@ -4973,7 +4964,7 @@ sin16s: { ror.z x5_128 lsr.z x5_128+1 ror.z x5_128 - // [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 + // [145] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 lda.z usinx clc adc.z x5_128 @@ -4981,14 +4972,14 @@ sin16s: { lda.z usinx+1 adc.z x5_128+1 sta.z usinx_1+1 - // [147] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 + // [146] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 lda.z isUpper cmp #0 beq __b12 jmp __b6 // sin16s::@6 __b6: - // [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 + // [147] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 sec lda #0 sbc.z usinx_1 @@ -4996,21 +4987,21 @@ sin16s: { lda #0 sbc.z usinx_1+1 sta.z sinx+1 - // [149] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] + // [148] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] __b3_from___b12: __b3_from___b6: - // [149] phi (signed word) sin16s::return#1 = (signed word) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy + // [148] phi (signed word) sin16s::return#1 = (signed word) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy jmp __b3 // sin16s::@3 __b3: jmp __breturn // sin16s::@return __breturn: - // [150] return + // [149] return rts // sin16s::@12 __b12: - // [151] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 + // [150] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 lda.z usinx_1 sta.z return_1 lda.z usinx_1+1 @@ -5022,28 +5013,28 @@ sin16s: { // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zp($50) a) mul16s: { - .label __6 = $9e - .label __11 = $a0 + .label __6 = $9c + .label __11 = $9e .label m = $21 - .label return = $a2 + .label return = $a0 .label a = $50 .label return_1 = $52 - // [152] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + // [151] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda.z a sta.z mul16u.a lda.z a+1 sta.z mul16u.a+1 - // [153] call mul16u - // [206] phi from mul16s to mul16u [phi:mul16s->mul16u] + // [152] call mul16u + // [205] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - // [206] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy - // [206] phi (word) mul16u::b#2 = (word)(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + // [205] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy + // [205] phi (word) mul16u::b#2 = (word)(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl sta.z mul16u.b+1 jsr mul16u - // [154] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 + // [153] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda.z mul16u.res sta.z mul16u.return lda.z mul16u.res+1 @@ -5055,7 +5046,7 @@ mul16s: { jmp __b4 // mul16s::@4 __b4: - // [155] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 + // [154] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 lda.z mul16u.return sta.z m lda.z mul16u.return+1 @@ -5064,18 +5055,18 @@ mul16s: { sta.z m+2 lda.z mul16u.return+3 sta.z m+3 - // [156] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + // [155] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda.z a+1 bpl __b1_from___b4 jmp __b3 // mul16s::@3 __b3: - // [157] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + // [156] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda.z m+2 sta.z __6 lda.z m+3 sta.z __6+1 - // [158] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz2_minus_vwuc1 + // [157] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz2_minus_vwuc1 lda.z __6 sec sbc #sin16s_gen2.ampl sta.z __11+1 - // [159] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 -- vduz1=vduz1_sethi_vwuz2 + // [158] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 -- vduz1=vduz1_sethi_vwuz2 lda.z __11 sta.z m+2 lda.z __11+1 sta.z m+3 - // [160] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] + // [159] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] __b1_from___b3: __b1_from___b4: - // [160] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy + // [159] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy jmp __b1 // mul16s::@1 __b1: jmp __b2 // mul16s::@2 __b2: - // [161] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 -- vdsz1=vdsz2 + // [160] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 -- vdsz1=vdsz2 lda.z m sta.z return lda.z m+1 @@ -5110,7 +5101,7 @@ mul16s: { jmp __breturn // mul16s::@return __breturn: - // [162] return + // [161] return rts } // wrap_y @@ -5118,16 +5109,16 @@ mul16s: { wrap_y: { .label y = $25 .label return = $62 - .label return_1 = $6a - .label return_2 = $a6 - // [164] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] + .label return_1 = $68 + .label return_2 = $a4 + // [163] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] __b1_from_wrap_y: __b1_from___b2: - // [164] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy + // [163] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy jmp __b1 // wrap_y::@1 __b1: - // [165] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 -- vwsz1_ge_vwsc1_then_la1 + // [164] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 -- vwsz1_ge_vwsc1_then_la1 lda.z y cmp #<$c8 lda.z y+1 @@ -5136,30 +5127,30 @@ wrap_y: { eor #$80 !: bpl __b2 - // [166] phi from wrap_y::@1 wrap_y::@4 to wrap_y::@3 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3] + // [165] phi from wrap_y::@1 wrap_y::@4 to wrap_y::@3 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3] __b3_from___b1: __b3_from___b4: - // [166] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3#0] -- register_copy + // [165] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3#0] -- register_copy jmp __b3 // wrap_y::@3 __b3: - // [167] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 -- vwsz1_lt_0_then_la1 + // [166] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 -- vwsz1_lt_0_then_la1 lda.z y+1 bmi __b4 jmp __b5 // wrap_y::@5 __b5: - // [168] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 -- vbuz1=_byte_vwsz2 + // [167] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 -- vbuz1=_byte_vwsz2 lda.z y sta.z return_2 jmp __breturn // wrap_y::@return __breturn: - // [169] return + // [168] return rts // wrap_y::@4 __b4: - // [170] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 -- vwsz1=vwsz1_plus_vwsc1 + // [169] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 -- vwsz1=vwsz1_plus_vwsc1 clc lda.z y adc #<$c8 @@ -5170,7 +5161,7 @@ wrap_y: { jmp __b3_from___b4 // wrap_y::@2 __b2: - // [171] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 -- vwsz1=vwsz1_minus_vwsc1 + // [170] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 -- vwsz1=vwsz1_minus_vwsc1 lda.z y sec sbc #<$c8 @@ -5184,26 +5175,26 @@ wrap_y: { // Plot a single dot in the bitmap // bitmap_plot(word zp($28) x, byte zp($27) y) bitmap_plot: { - .label __0 = $a9 - .label __1 = $ad - .label plotter = $a7 - .label plotter_1 = $ab + .label __0 = $a7 + .label __1 = $ab + .label plotter = $a5 + .label plotter_1 = $a9 .label x = $28 .label y = $27 - // [173] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 + // [172] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 ldy.z y lda bitmap_plot_yhi,y sta.z plotter+1 lda bitmap_plot_ylo,y sta.z plotter - // [174] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#2 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + // [173] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#2 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda.z x and #<$fff8 sta.z __0 lda.z x+1 and #>$fff8 sta.z __0+1 - // [175] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz2_plus_vwuz3 + // [174] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz2_plus_vwuz3 lda.z plotter clc adc.z __0 @@ -5211,10 +5202,10 @@ bitmap_plot: { lda.z plotter+1 adc.z __0+1 sta.z plotter_1+1 - // [176] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#2 -- vbuz1=_lo_vwuz2 + // [175] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#2 -- vbuz1=_lo_vwuz2 lda.z x sta.z __1 - // [177] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 + // [176] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 ldy #0 lda (plotter_1),y ldy.z __1 @@ -5224,7 +5215,7 @@ bitmap_plot: { jmp __breturn // bitmap_plot::@return __breturn: - // [178] return + // [177] return rts } // divr16u @@ -5234,72 +5225,72 @@ bitmap_plot: { // Implemented using simple binary division // divr16u(word zp($2c) dividend, word zp($2a) rem) divr16u: { - .label __1 = $ae - .label __2 = $af + .label __1 = $ac + .label __2 = $ad .label rem = $2a .label dividend = $2c .label quotient = $2e .label i = $30 .label return = $2e - .label return_1 = $6e - .label return_2 = $72 - // [180] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + .label return_1 = $6c + .label return_2 = $70 + // [179] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] __b1_from_divr16u: - // [180] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + // [179] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 lda #0 sta.z i - // [180] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 + // [179] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 lda #<0 sta.z quotient lda #>0 sta.z quotient+1 - // [180] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - // [180] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + // [179] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + // [179] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp __b1 - // [180] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + // [179] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] __b1_from___b3: - // [180] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - // [180] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - // [180] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - // [180] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + // [179] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + // [179] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + // [179] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + // [179] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp __b1 // divr16u::@1 __b1: - // [181] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [180] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z rem rol.z rem+1 - // [182] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + // [181] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda.z dividend+1 sta.z __1 - // [183] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 + // [182] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and.z __1 sta.z __2 - // [184] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + // [183] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 lda.z __2 cmp #0 beq __b2_from___b1 jmp __b4 // divr16u::@4 __b4: - // [185] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + // [184] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora.z rem sta.z rem - // [186] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + // [185] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] __b2_from___b1: __b2_from___b4: - // [186] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + // [185] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp __b2 // divr16u::@2 __b2: - // [187] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [186] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z dividend rol.z dividend+1 - // [188] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [187] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z quotient rol.z quotient+1 - // [189] if((word) divr16u::rem#6<(const nomodify word) SIN_SIZE) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + // [188] if((word) divr16u::rem#6<(const nomodify word) SIN_SIZE) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda.z rem+1 cmp #>SIN_SIZE bcc __b3_from___b2 @@ -5311,12 +5302,12 @@ divr16u: { jmp __b5 // divr16u::@5 __b5: - // [190] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + // [189] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc.z quotient bne !+ inc.z quotient+1 !: - // [191] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const nomodify word) SIN_SIZE -- vwuz1=vwuz1_minus_vwuc1 + // [190] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const nomodify word) SIN_SIZE -- vwuz1=vwuz1_minus_vwuc1 lda.z rem sec sbc #SIN_SIZE sta.z rem+1 - // [192] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + // [191] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] __b3_from___b2: __b3_from___b5: - // [192] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - // [192] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + // [191] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + // [191] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp __b3 // divr16u::@3 __b3: - // [193] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + // [192] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [194] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + // [193] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp.z i bne __b1_from___b3 jmp __b6 // divr16u::@6 __b6: - // [195] (word) rem16u#0 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + // [194] (word) rem16u#0 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda.z rem sta.z rem16u lda.z rem+1 @@ -5349,7 +5340,7 @@ divr16u: { jmp __breturn // divr16u::@return __breturn: - // [196] return + // [195] return rts } // mulu16_sel @@ -5357,34 +5348,34 @@ divr16u: { // The select parameter indicates how many of the highest bits of the 32-bit result to skip // mulu16_sel(word zp($31) v1, word zp($33) v2, byte zp($35) select) mulu16_sel: { - .label __0 = $b6 - .label __1 = $ba + .label __0 = $b4 + .label __1 = $b8 .label v1 = $31 .label v2 = $33 - .label return = $80 - .label return_1 = $84 - .label return_2 = $88 - .label return_3 = $8e - .label return_4 = $92 + .label return = $7e + .label return_1 = $82 + .label return_2 = $86 + .label return_3 = $8c + .label return_4 = $90 .label select = $35 - .label return_5 = $be - // [198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + .label return_5 = $bc + // [197] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda.z v1 sta.z mul16u.a lda.z v1+1 sta.z mul16u.a+1 - // [199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 + // [198] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 lda.z v2 sta.z mul16u.b lda.z v2+1 sta.z mul16u.b+1 - // [200] call mul16u - // [206] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + // [199] call mul16u + // [205] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - // [206] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - // [206] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + // [205] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + // [205] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - // [201] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 + // [200] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda.z mul16u.res sta.z mul16u.return_1 lda.z mul16u.res+1 @@ -5396,7 +5387,7 @@ mulu16_sel: { jmp __b1 // mulu16_sel::@1 __b1: - // [202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 + // [201] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 lda.z mul16u.return_1 sta.z __0 lda.z mul16u.return_1+1 @@ -5405,7 +5396,7 @@ mulu16_sel: { sta.z __0+2 lda.z mul16u.return_1+3 sta.z __0+3 - // [203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 + // [202] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 lda.z __0 sta.z __1 lda.z __0+1 @@ -5424,7 +5415,7 @@ mulu16_sel: { dex bne !- !e: - // [204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + // [203] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda.z __1+2 sta.z return_5 lda.z __1+3 @@ -5432,21 +5423,21 @@ mulu16_sel: { jmp __breturn // mulu16_sel::@return __breturn: - // [205] return + // [204] return rts } // mul16u // Perform binary multiplication of two unsigned 16-bit unsigned ints into a 32-bit unsigned long // mul16u(word zp($38) a, word zp($36) b) mul16u: { - .label __1 = $c0 + .label __1 = $be .label mb = $3e .label a = $38 .label res = $3a - .label return = $9a + .label return = $98 .label b = $36 - .label return_1 = $b2 - // [207] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 -- vduz1=_dword_vwuz2 + .label return_1 = $b0 + // [206] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda.z b sta.z mb lda.z b+1 @@ -5454,10 +5445,10 @@ mul16u: { lda #0 sta.z mb+2 sta.z mb+3 - // [208] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + // [207] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] __b1_from_mul16u: - // [208] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - // [208] phi (dword) mul16u::res#2 = (dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vduc1 + // [207] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + // [207] phi (dword) mul16u::res#2 = (dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vduc1 lda #<0 sta.z res lda #>0 @@ -5466,11 +5457,11 @@ mul16u: { sta.z res+2 lda #>0>>$10 sta.z res+3 - // [208] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + // [207] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp __b1 // mul16u::@1 __b1: - // [209] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + // [208] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda.z a bne __b2 lda.z a+1 @@ -5478,22 +5469,22 @@ mul16u: { jmp __breturn // mul16u::@return __breturn: - // [210] return + // [209] return rts // mul16u::@2 __b2: - // [211] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuz1=vwuz2_band_vbuc1 + // [210] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuz1=vwuz2_band_vbuc1 lda #1 and.z a sta.z __1 - // [212] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuz1_eq_0_then_la1 + // [211] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuz1_eq_0_then_la1 lda.z __1 cmp #0 beq __b3_from___b2 jmp __b4 // mul16u::@4 __b4: - // [213] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + // [212] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda.z res clc adc.z mb @@ -5507,26 +5498,26 @@ mul16u: { lda.z res+3 adc.z mb+3 sta.z res+3 - // [214] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + // [213] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] __b3_from___b2: __b3_from___b4: - // [214] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + // [213] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy jmp __b3 // mul16u::@3 __b3: - // [215] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + // [214] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr.z a+1 ror.z a - // [216] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + // [215] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl.z mb rol.z mb+1 rol.z mb+2 rol.z mb+3 - // [208] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + // [207] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] __b1_from___b3: - // [208] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - // [208] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - // [208] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + // [207] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + // [207] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + // [207] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp __b1 } // File Data @@ -5566,96 +5557,95 @@ Statement [60] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) Statement [61] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( sin16s_gen2:14 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a Statement [62] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( sin16s_gen2:14 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a Statement [66] if((word) render_sine::sin_idx#2<(const nomodify word) SIN_SIZE) goto render_sine::@2 [ render_sine::sin_idx#2 render_sine::xpos#3 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 ] { } ) always clobbers reg byte a -Statement [68] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [69] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$10 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$1 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$1 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [70] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a reg byte y -Statement [71] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [75] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [68] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [69] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$11 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 render_sine::$1 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 render_sine::$1 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [70] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 render_sine::sin_val#0 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 render_sine::sin_val#0 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a reg byte y +Statement [71] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 wrap_y::y#0 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 wrap_y::y#0 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [75] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 render_sine::ypos#0 bitmap_plot::x#0 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 render_sine::ypos#0 bitmap_plot::x#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:99 [ render_sine::ypos#0 ] -Statement [78] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [79] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [80] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a reg byte y -Statement [81] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [85] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:107 [ render_sine::ypos2#0 ] -Statement [89] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#1 ] { } ) always clobbers reg byte a -Statement [94] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( bitmap_clear:12::memset:41 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:12::memset:43 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Statement [78] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [79] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a reg byte y +Statement [80] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [84] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:105 [ render_sine::ypos2#0 ] +Statement [88] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#1 ] { } ) always clobbers reg byte a +Statement [93] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( bitmap_clear:12::memset:41 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:12::memset:43 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:23 [ memset::c#4 ] -Statement [95] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( bitmap_clear:12::memset:41 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:12::memset:43 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a -Statement [96] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( bitmap_clear:12::memset:41 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:12::memset:43 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a -Statement [98] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:12::memset:41 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:12::memset:43 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a -Statement [100] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:12::memset:41 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:12::memset:43 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [94] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( bitmap_clear:12::memset:41 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:12::memset:43 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [95] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( bitmap_clear:12::memset:41 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:12::memset:43 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [97] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:12::memset:41 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:12::memset:43 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [99] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:12::memset:41 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:12::memset:43 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:23 [ memset::c#4 ] -Statement [104] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#0 ] ( sin16s_gen2:14::div32u16u:46 [ divr16u::return#2 rem16u#0 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [105] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#0 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::quotient_hi#0 rem16u#0 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [106] (word) divr16u::rem#4 ← (word) rem16u#0 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [108] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [109] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a -Statement [110] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a -Statement [112] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 [ sin16s::x#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [115] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [103] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#0 ] ( sin16s_gen2:14::div32u16u:46 [ divr16u::return#2 rem16u#0 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [104] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#0 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::quotient_hi#0 rem16u#0 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [105] (word) divr16u::rem#4 ← (word) rem16u#0 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [107] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [108] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [109] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [111] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [112] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 [ sin16s::x#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [114] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:26 [ sin16s::isUpper#2 ] -Statement [116] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [118] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a -Statement [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a -Statement [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a -Statement [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [151] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [152] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#1 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a -Statement [154] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::return#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a -Statement [155] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16s::m#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a -Statement [156] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::m#0 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a -Statement [157] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$6 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a -Statement [158] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$11 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$11 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a -Statement [159] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 [ mul16s::m#1 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a -Statement [161] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a -Statement [165] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 [ wrap_y::y#4 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:82 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [167] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 [ wrap_y::y#6 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:82 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [168] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 [ wrap_y::return#2 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:82 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [170] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 [ wrap_y::y#3 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:82 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [171] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 [ wrap_y::y#2 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:82 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [173] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) [ bitmap_plot::x#2 bitmap_plot::plotter#0 ] ( render_sine:16::bitmap_plot:77 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } render_sine:16::bitmap_plot:87 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a -Statement [174] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#2 & (word) $fff8 [ bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( render_sine:16::bitmap_plot:77 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } render_sine:16::bitmap_plot:87 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a -Statement [175] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 [ bitmap_plot::x#2 bitmap_plot::plotter#1 ] ( render_sine:16::bitmap_plot:77 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } render_sine:16::bitmap_plot:87 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a -Statement [177] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) [ ] ( render_sine:16::bitmap_plot:77 [ render_sine::sin_idx#2 render_sine::xpos#3 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } render_sine:16::bitmap_plot:87 [ render_sine::sin_idx#2 render_sine::xpos#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a reg byte y -Statement [185] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( sin16s_gen2:14::div32u16u:46::divr16u:103 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } sin16s_gen2:14::div32u16u:46::divr16u:107 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [115] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [117] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [118] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [119] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [120] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [122] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [123] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [124] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [125] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [127] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [128] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [129] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [131] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [132] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [133] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [134] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [135] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [137] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [138] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [139] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [140] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [142] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [143] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [144] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [145] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [147] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [150] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [151] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#1 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [153] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::return#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [154] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16s::m#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [155] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::m#0 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [156] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$6 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [157] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$11 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$11 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [158] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 [ mul16s::m#1 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [160] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [164] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 [ wrap_y::y#4 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 wrap_y::y#4 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:81 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [166] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 [ wrap_y::y#6 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 wrap_y::y#6 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:81 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [167] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 [ wrap_y::return#2 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 wrap_y::return#2 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:81 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [169] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 [ wrap_y::y#3 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 wrap_y::y#3 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:81 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [170] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 [ wrap_y::y#2 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 wrap_y::y#2 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:81 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [172] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) [ bitmap_plot::x#2 bitmap_plot::plotter#0 ] ( render_sine:16::bitmap_plot:77 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 bitmap_plot::x#2 bitmap_plot::plotter#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } render_sine:16::bitmap_plot:86 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [173] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#2 & (word) $fff8 [ bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( render_sine:16::bitmap_plot:77 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } render_sine:16::bitmap_plot:86 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [174] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 [ bitmap_plot::x#2 bitmap_plot::plotter#1 ] ( render_sine:16::bitmap_plot:77 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 bitmap_plot::x#2 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } render_sine:16::bitmap_plot:86 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [176] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) [ ] ( render_sine:16::bitmap_plot:77 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } render_sine:16::bitmap_plot:86 [ render_sine::sin_idx#2 render_sine::xpos#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a reg byte y +Statement [184] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( sin16s_gen2:14::div32u16u:46::divr16u:102 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } sin16s_gen2:14::div32u16u:46::divr16u:106 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:48 [ divr16u::i#2 divr16u::i#1 ] -Statement [189] if((word) divr16u::rem#6<(const nomodify word) SIN_SIZE) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( sin16s_gen2:14::div32u16u:46::divr16u:103 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } sin16s_gen2:14::div32u16u:46::divr16u:107 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [191] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const nomodify word) SIN_SIZE [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( sin16s_gen2:14::div32u16u:46::divr16u:103 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } sin16s_gen2:14::div32u16u:46::divr16u:107 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [195] (word) rem16u#0 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#0 ] ( sin16s_gen2:14::div32u16u:46::divr16u:103 [ divr16u::return#0 rem16u#0 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } sin16s_gen2:14::div32u16u:46::divr16u:107 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#0 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [188] if((word) divr16u::rem#6<(const nomodify word) SIN_SIZE) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( sin16s_gen2:14::div32u16u:46::divr16u:102 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } sin16s_gen2:14::div32u16u:46::divr16u:106 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [190] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const nomodify word) SIN_SIZE [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( sin16s_gen2:14::div32u16u:46::divr16u:102 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } sin16s_gen2:14::div32u16u:46::divr16u:106 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [194] (word) rem16u#0 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#0 ] ( sin16s_gen2:14::div32u16u:46::divr16u:102 [ divr16u::return#0 rem16u#0 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } sin16s_gen2:14::div32u16u:46::divr16u:106 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#0 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [197] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:121 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:53 [ mulu16_sel::select#5 ] -Statement [199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a -Statement [201] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a -Statement [202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [207] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( sin16s_gen2:14::mul16s:56::mul16u:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:122::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a -Statement [209] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( sin16s_gen2:14::mul16s:56::mul16u:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:122::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a -Statement [211] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( sin16s_gen2:14::mul16s:56::mul16u:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:122::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a -Statement [213] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( sin16s_gen2:14::mul16s:56::mul16u:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:122::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [198] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:121 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [200] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:121 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [201] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:121 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [202] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:121 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [203] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:121 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [206] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( sin16s_gen2:14::mul16s:56::mul16u:152 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:121::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [208] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( sin16s_gen2:14::mul16s:56::mul16u:152 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:121::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [210] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( sin16s_gen2:14::mul16s:56::mul16u:152 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:121::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [212] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( sin16s_gen2:14::mul16s:56::mul16u:152 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:121::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a Statement [1] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK [ ] ( [ ] { } ) always clobbers reg byte a Statement [2] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO [ ] ( [ ] { } ) always clobbers reg byte a Statement [3] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 [ ] ( [ ] { } ) always clobbers reg byte a @@ -5678,89 +5668,88 @@ Statement [60] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) Statement [61] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( sin16s_gen2:14 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a Statement [62] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( sin16s_gen2:14 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a Statement [66] if((word) render_sine::sin_idx#2<(const nomodify word) SIN_SIZE) goto render_sine::@2 [ render_sine::sin_idx#2 render_sine::xpos#3 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 ] { } ) always clobbers reg byte a -Statement [68] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [69] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$10 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$1 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$1 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [70] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a reg byte y -Statement [71] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [75] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a -Statement [78] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [79] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [80] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a reg byte y -Statement [81] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [85] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a -Statement [89] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#1 ] { } ) always clobbers reg byte a -Statement [94] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( bitmap_clear:12::memset:41 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:12::memset:43 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a -Statement [95] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( bitmap_clear:12::memset:41 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:12::memset:43 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a -Statement [96] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( bitmap_clear:12::memset:41 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:12::memset:43 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a -Statement [98] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:12::memset:41 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:12::memset:43 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a -Statement [100] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:12::memset:41 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:12::memset:43 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y -Statement [104] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#0 ] ( sin16s_gen2:14::div32u16u:46 [ divr16u::return#2 rem16u#0 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [105] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#0 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::quotient_hi#0 rem16u#0 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [106] (word) divr16u::rem#4 ← (word) rem16u#0 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [108] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [109] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a -Statement [110] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a -Statement [112] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 [ sin16s::x#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [115] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [116] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [118] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a -Statement [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a -Statement [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a -Statement [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [151] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a -Statement [152] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#1 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a -Statement [154] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::return#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a -Statement [155] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16s::m#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a -Statement [156] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::m#0 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a -Statement [157] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$6 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a -Statement [158] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$11 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$11 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a -Statement [159] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 [ mul16s::m#1 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a -Statement [161] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a -Statement [165] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 [ wrap_y::y#4 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:82 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [167] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 [ wrap_y::y#6 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:82 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [168] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 [ wrap_y::return#2 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:82 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [170] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 [ wrap_y::y#3 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:82 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [171] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 [ wrap_y::y#2 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:82 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a -Statement [173] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) [ bitmap_plot::x#2 bitmap_plot::plotter#0 ] ( render_sine:16::bitmap_plot:77 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } render_sine:16::bitmap_plot:87 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a -Statement [174] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#2 & (word) $fff8 [ bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( render_sine:16::bitmap_plot:77 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } render_sine:16::bitmap_plot:87 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a -Statement [175] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 [ bitmap_plot::x#2 bitmap_plot::plotter#1 ] ( render_sine:16::bitmap_plot:77 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } render_sine:16::bitmap_plot:87 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a -Statement [177] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) [ ] ( render_sine:16::bitmap_plot:77 [ render_sine::sin_idx#2 render_sine::xpos#3 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } render_sine:16::bitmap_plot:87 [ render_sine::sin_idx#2 render_sine::xpos#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a reg byte y -Statement [185] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( sin16s_gen2:14::div32u16u:46::divr16u:103 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } sin16s_gen2:14::div32u16u:46::divr16u:107 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [189] if((word) divr16u::rem#6<(const nomodify word) SIN_SIZE) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( sin16s_gen2:14::div32u16u:46::divr16u:103 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } sin16s_gen2:14::div32u16u:46::divr16u:107 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [191] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const nomodify word) SIN_SIZE [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( sin16s_gen2:14::div32u16u:46::divr16u:103 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } sin16s_gen2:14::div32u16u:46::divr16u:107 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [195] (word) rem16u#0 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#0 ] ( sin16s_gen2:14::div32u16u:46::divr16u:103 [ divr16u::return#0 rem16u#0 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } sin16s_gen2:14::div32u16u:46::divr16u:107 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#0 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a -Statement [199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a -Statement [201] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a -Statement [202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a -Statement [207] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( sin16s_gen2:14::mul16s:56::mul16u:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:122::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a -Statement [209] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( sin16s_gen2:14::mul16s:56::mul16u:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:122::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a -Statement [211] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( sin16s_gen2:14::mul16s:56::mul16u:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:122::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a -Statement [213] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( sin16s_gen2:14::mul16s:56::mul16u:153 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:122::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:127::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:131::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:137::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:142::mul16u:200 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [68] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [69] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$11 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 render_sine::$1 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 render_sine::$1 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [70] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 render_sine::sin_val#0 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 render_sine::sin_val#0 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a reg byte y +Statement [71] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 wrap_y::y#0 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 wrap_y::y#0 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [75] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 render_sine::ypos#0 bitmap_plot::x#0 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 render_sine::ypos#0 bitmap_plot::x#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [78] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [79] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a reg byte y +Statement [80] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [84] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [88] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ( render_sine:16 [ render_sine::sin_idx#2 render_sine::xpos#1 ] { } ) always clobbers reg byte a +Statement [93] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( bitmap_clear:12::memset:41 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:12::memset:43 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Statement [94] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( bitmap_clear:12::memset:41 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:12::memset:43 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [95] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( bitmap_clear:12::memset:41 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:12::memset:43 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [97] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:12::memset:41 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:12::memset:43 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [99] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:12::memset:41 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:12::memset:43 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [103] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#0 ] ( sin16s_gen2:14::div32u16u:46 [ divr16u::return#2 rem16u#0 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [104] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#0 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::quotient_hi#0 rem16u#0 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [105] (word) divr16u::rem#4 ← (word) rem16u#0 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [107] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [108] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [109] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( sin16s_gen2:14::div32u16u:46 [ div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a +Statement [111] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [112] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 [ sin16s::x#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [114] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [115] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [117] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [118] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [119] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [120] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [122] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [123] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [124] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [125] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [127] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [128] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [129] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [131] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a +Statement [132] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [133] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [134] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [135] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [137] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [138] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [139] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [140] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [142] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [143] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [144] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [145] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [147] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [150] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( sin16s_gen2:14::sin16s:53 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a +Statement [151] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#1 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [153] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::return#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [154] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16s::m#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [155] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::m#0 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [156] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$6 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [157] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$11 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#0 mul16s::$11 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [158] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 [ mul16s::m#1 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [160] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( sin16s_gen2:14::mul16s:56 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a +Statement [164] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 [ wrap_y::y#4 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 wrap_y::y#4 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:81 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [166] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 [ wrap_y::y#6 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 wrap_y::y#6 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:81 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [167] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 [ wrap_y::return#2 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 wrap_y::return#2 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:81 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [169] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 [ wrap_y::y#3 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 wrap_y::y#3 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:81 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [170] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 [ wrap_y::y#2 ] ( render_sine:16::wrap_y:72 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 wrap_y::y#2 ] { { wrap_y::y#0 = wrap_y::y#9 render_sine::sin_val#0 } { wrap_y::return#0 = wrap_y::return#2 } } render_sine:16::wrap_y:81 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] { { wrap_y::y#1 = wrap_y::y#9 } { wrap_y::return#1 = wrap_y::return#2 } } ) always clobbers reg byte a +Statement [172] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) [ bitmap_plot::x#2 bitmap_plot::plotter#0 ] ( render_sine:16::bitmap_plot:77 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 bitmap_plot::x#2 bitmap_plot::plotter#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } render_sine:16::bitmap_plot:86 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [173] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#2 & (word) $fff8 [ bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( render_sine:16::bitmap_plot:77 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } render_sine:16::bitmap_plot:86 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [174] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 [ bitmap_plot::x#2 bitmap_plot::plotter#1 ] ( render_sine:16::bitmap_plot:77 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 bitmap_plot::x#2 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } render_sine:16::bitmap_plot:86 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a +Statement [176] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) [ ] ( render_sine:16::bitmap_plot:77 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] { { bitmap_plot::y#0 = bitmap_plot::y#2 render_sine::ypos#0 } { bitmap_plot::x#0 = bitmap_plot::x#2 render_sine::xpos#3 } } render_sine:16::bitmap_plot:86 [ render_sine::sin_idx#2 render_sine::xpos#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#2 render_sine::ypos2#0 } { bitmap_plot::x#1 = bitmap_plot::x#2 render_sine::xpos#3 } } ) always clobbers reg byte a reg byte y +Statement [184] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( sin16s_gen2:14::div32u16u:46::divr16u:102 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } sin16s_gen2:14::div32u16u:46::divr16u:106 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [188] if((word) divr16u::rem#6<(const nomodify word) SIN_SIZE) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( sin16s_gen2:14::div32u16u:46::divr16u:102 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } sin16s_gen2:14::div32u16u:46::divr16u:106 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [190] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const nomodify word) SIN_SIZE [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( sin16s_gen2:14::div32u16u:46::divr16u:102 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } sin16s_gen2:14::div32u16u:46::divr16u:106 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [194] (word) rem16u#0 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#0 ] ( sin16s_gen2:14::div32u16u:46::divr16u:102 [ divr16u::return#0 rem16u#0 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } sin16s_gen2:14::div32u16u:46::divr16u:106 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#0 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [197] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:121 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [198] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:121 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::b#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [200] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:121 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [201] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:121 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [202] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:121 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [203] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( sin16s_gen2:14::sin16s:53::mulu16_sel:121 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a +Statement [206] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( sin16s_gen2:14::mul16s:56::mul16u:152 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:121::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [208] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( sin16s_gen2:14::mul16s:56::mul16u:152 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:121::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [210] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( sin16s_gen2:14::mul16s:56::mul16u:152 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:121::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a +Statement [212] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( sin16s_gen2:14::mul16s:56::mul16u:152 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#0 = sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:121::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:126::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:130::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:136::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } sin16s_gen2:14::sin16s:53::mulu16_sel:141::mul16u:199 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:3 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp[1]:4 , reg byte x , reg byte y , @@ -5803,170 +5792,168 @@ Potential registers zp[2]:80 [ mul16s::a#0 ] : zp[2]:80 , Potential registers zp[4]:82 [ mul16s::return#2 ] : zp[4]:82 , Potential registers zp[4]:86 [ sin16s_gen2::$6 ] : zp[4]:86 , Potential registers zp[2]:90 [ sin16s_gen2::$8 ] : zp[2]:90 , -Potential registers zp[2]:92 [ render_sine::$10 ] : zp[2]:92 , +Potential registers zp[2]:92 [ render_sine::$11 ] : zp[2]:92 , Potential registers zp[2]:94 [ render_sine::$1 ] : zp[2]:94 , Potential registers zp[2]:96 [ render_sine::sin_val#0 ] : zp[2]:96 , Potential registers zp[1]:98 [ wrap_y::return#0 ] : zp[1]:98 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:99 [ render_sine::ypos#0 ] : zp[1]:99 , reg byte x , reg byte y , -Potential registers zp[2]:100 [ render_sine::$11 ] : zp[2]:100 , -Potential registers zp[2]:102 [ render_sine::$4 ] : zp[2]:102 , -Potential registers zp[2]:104 [ render_sine::sin2_val#0 ] : zp[2]:104 , -Potential registers zp[1]:106 [ wrap_y::return#1 ] : zp[1]:106 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:107 [ render_sine::ypos2#0 ] : zp[1]:107 , reg byte x , reg byte y , -Potential registers zp[2]:108 [ memset::end#0 ] : zp[2]:108 , -Potential registers zp[2]:110 [ divr16u::return#2 ] : zp[2]:110 , -Potential registers zp[2]:112 [ div32u16u::quotient_hi#0 ] : zp[2]:112 , -Potential registers zp[2]:114 [ divr16u::return#3 ] : zp[2]:114 , -Potential registers zp[2]:116 [ div32u16u::quotient_lo#0 ] : zp[2]:116 , -Potential registers zp[4]:118 [ div32u16u::return#0 ] : zp[4]:118 , -Potential registers zp[4]:122 [ sin16s::$4 ] : zp[4]:122 , -Potential registers zp[2]:126 [ sin16s::x1#0 ] : zp[2]:126 , -Potential registers zp[2]:128 [ mulu16_sel::return#0 ] : zp[2]:128 , -Potential registers zp[2]:130 [ sin16s::x2#0 ] : zp[2]:130 , -Potential registers zp[2]:132 [ mulu16_sel::return#1 ] : zp[2]:132 , -Potential registers zp[2]:134 [ sin16s::x3#0 ] : zp[2]:134 , -Potential registers zp[2]:136 [ mulu16_sel::return#2 ] : zp[2]:136 , -Potential registers zp[2]:138 [ sin16s::x3_6#0 ] : zp[2]:138 , -Potential registers zp[2]:140 [ sin16s::usinx#0 ] : zp[2]:140 , -Potential registers zp[2]:142 [ mulu16_sel::return#10 ] : zp[2]:142 , -Potential registers zp[2]:144 [ sin16s::x4#0 ] : zp[2]:144 , -Potential registers zp[2]:146 [ mulu16_sel::return#11 ] : zp[2]:146 , -Potential registers zp[2]:148 [ sin16s::x5#0 ] : zp[2]:148 , -Potential registers zp[2]:150 [ sin16s::x5_128#0 ] : zp[2]:150 , -Potential registers zp[2]:152 [ sin16s::usinx#1 ] : zp[2]:152 , -Potential registers zp[4]:154 [ mul16u::return#2 ] : zp[4]:154 , -Potential registers zp[2]:158 [ mul16s::$6 ] : zp[2]:158 , -Potential registers zp[2]:160 [ mul16s::$11 ] : zp[2]:160 , -Potential registers zp[4]:162 [ mul16s::return#0 ] : zp[4]:162 , -Potential registers zp[1]:166 [ wrap_y::return#2 ] : zp[1]:166 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:167 [ bitmap_plot::plotter#0 ] : zp[2]:167 , -Potential registers zp[2]:169 [ bitmap_plot::$0 ] : zp[2]:169 , -Potential registers zp[2]:171 [ bitmap_plot::plotter#1 ] : zp[2]:171 , -Potential registers zp[1]:173 [ bitmap_plot::$1 ] : zp[1]:173 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:174 [ divr16u::$1 ] : zp[1]:174 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:175 [ divr16u::$2 ] : zp[1]:175 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:176 [ rem16u#0 ] : zp[2]:176 , -Potential registers zp[4]:178 [ mul16u::return#3 ] : zp[4]:178 , -Potential registers zp[4]:182 [ mulu16_sel::$0 ] : zp[4]:182 , -Potential registers zp[4]:186 [ mulu16_sel::$1 ] : zp[4]:186 , -Potential registers zp[2]:190 [ mulu16_sel::return#12 ] : zp[2]:190 , -Potential registers zp[1]:192 [ mul16u::$1 ] : zp[1]:192 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:100 [ render_sine::$4 ] : zp[2]:100 , +Potential registers zp[2]:102 [ render_sine::sin2_val#0 ] : zp[2]:102 , +Potential registers zp[1]:104 [ wrap_y::return#1 ] : zp[1]:104 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:105 [ render_sine::ypos2#0 ] : zp[1]:105 , reg byte x , reg byte y , +Potential registers zp[2]:106 [ memset::end#0 ] : zp[2]:106 , +Potential registers zp[2]:108 [ divr16u::return#2 ] : zp[2]:108 , +Potential registers zp[2]:110 [ div32u16u::quotient_hi#0 ] : zp[2]:110 , +Potential registers zp[2]:112 [ divr16u::return#3 ] : zp[2]:112 , +Potential registers zp[2]:114 [ div32u16u::quotient_lo#0 ] : zp[2]:114 , +Potential registers zp[4]:116 [ div32u16u::return#0 ] : zp[4]:116 , +Potential registers zp[4]:120 [ sin16s::$4 ] : zp[4]:120 , +Potential registers zp[2]:124 [ sin16s::x1#0 ] : zp[2]:124 , +Potential registers zp[2]:126 [ mulu16_sel::return#0 ] : zp[2]:126 , +Potential registers zp[2]:128 [ sin16s::x2#0 ] : zp[2]:128 , +Potential registers zp[2]:130 [ mulu16_sel::return#1 ] : zp[2]:130 , +Potential registers zp[2]:132 [ sin16s::x3#0 ] : zp[2]:132 , +Potential registers zp[2]:134 [ mulu16_sel::return#2 ] : zp[2]:134 , +Potential registers zp[2]:136 [ sin16s::x3_6#0 ] : zp[2]:136 , +Potential registers zp[2]:138 [ sin16s::usinx#0 ] : zp[2]:138 , +Potential registers zp[2]:140 [ mulu16_sel::return#10 ] : zp[2]:140 , +Potential registers zp[2]:142 [ sin16s::x4#0 ] : zp[2]:142 , +Potential registers zp[2]:144 [ mulu16_sel::return#11 ] : zp[2]:144 , +Potential registers zp[2]:146 [ sin16s::x5#0 ] : zp[2]:146 , +Potential registers zp[2]:148 [ sin16s::x5_128#0 ] : zp[2]:148 , +Potential registers zp[2]:150 [ sin16s::usinx#1 ] : zp[2]:150 , +Potential registers zp[4]:152 [ mul16u::return#2 ] : zp[4]:152 , +Potential registers zp[2]:156 [ mul16s::$6 ] : zp[2]:156 , +Potential registers zp[2]:158 [ mul16s::$11 ] : zp[2]:158 , +Potential registers zp[4]:160 [ mul16s::return#0 ] : zp[4]:160 , +Potential registers zp[1]:164 [ wrap_y::return#2 ] : zp[1]:164 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:165 [ bitmap_plot::plotter#0 ] : zp[2]:165 , +Potential registers zp[2]:167 [ bitmap_plot::$0 ] : zp[2]:167 , +Potential registers zp[2]:169 [ bitmap_plot::plotter#1 ] : zp[2]:169 , +Potential registers zp[1]:171 [ bitmap_plot::$1 ] : zp[1]:171 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:172 [ divr16u::$1 ] : zp[1]:172 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:173 [ divr16u::$2 ] : zp[1]:173 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:174 [ rem16u#0 ] : zp[2]:174 , +Potential registers zp[4]:176 [ mul16u::return#3 ] : zp[4]:176 , +Potential registers zp[4]:180 [ mulu16_sel::$0 ] : zp[4]:180 , +Potential registers zp[4]:184 [ mulu16_sel::$1 ] : zp[4]:184 , +Potential registers zp[2]:188 [ mulu16_sel::return#12 ] : zp[2]:188 , +Potential registers zp[1]:190 [ mul16u::$1 ] : zp[1]:190 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [mul16u] 34,287,289.43: zp[4]:58 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 24,500,004.57: zp[4]:62 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 20,000,002: zp[1]:192 [ mul16u::$1 ] 16,750,839.67: zp[2]:56 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] 30,003: zp[2]:54 [ mul16u::b#2 mul16u::b#1 ] 20,002: zp[4]:178 [ mul16u::return#3 ] 2,002: zp[4]:154 [ mul16u::return#2 ] -Uplift Scope [wrap_y] 802,115.5: zp[2]:37 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] 300.75: zp[1]:166 [ wrap_y::return#2 ] 202: zp[1]:98 [ wrap_y::return#0 ] 202: zp[1]:106 [ wrap_y::return#1 ] -Uplift Scope [divr16u] 90,147.42: zp[2]:42 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 31,817.75: zp[2]:46 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 20,002: zp[1]:174 [ divr16u::$1 ] 20,002: zp[1]:175 [ divr16u::$2 ] 16,540.12: zp[1]:48 [ divr16u::i#2 divr16u::i#1 ] 7,930.39: zp[2]:44 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 202: zp[2]:110 [ divr16u::return#2 ] 202: zp[2]:114 [ divr16u::return#3 ] -Uplift Scope [mulu16_sel] 21,012: zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ] 20,002: zp[4]:182 [ mulu16_sel::$0 ] 20,002: zp[4]:186 [ mulu16_sel::$1 ] 15,010.5: zp[2]:51 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ] 2,143.71: zp[2]:190 [ mulu16_sel::return#12 ] 2,002: zp[2]:128 [ mulu16_sel::return#0 ] 2,002: zp[2]:132 [ mulu16_sel::return#1 ] 2,002: zp[2]:136 [ mulu16_sel::return#2 ] 2,002: zp[2]:142 [ mulu16_sel::return#10 ] 2,002: zp[2]:146 [ mulu16_sel::return#11 ] 1,666.83: zp[1]:53 [ mulu16_sel::select#5 ] -Uplift Scope [sin16s] 11,061.5: zp[4]:27 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 4,705: zp[2]:31 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 2,002: zp[4]:122 [ sin16s::$4 ] 2,002: zp[2]:130 [ sin16s::x2#0 ] 2,002: zp[2]:138 [ sin16s::x3_6#0 ] 2,002: zp[2]:144 [ sin16s::x4#0 ] 2,002: zp[2]:148 [ sin16s::x5#0 ] 2,002: zp[2]:150 [ sin16s::x5_128#0 ] 500.5: zp[2]:134 [ sin16s::x3#0 ] 500.5: zp[2]:152 [ sin16s::usinx#1 ] 318.5: zp[2]:126 [ sin16s::x1#0 ] 202: zp[2]:78 [ sin16s::return#0 ] 166.83: zp[2]:140 [ sin16s::usinx#0 ] 30.33: zp[1]:26 [ sin16s::isUpper#2 ] -Uplift Scope [mul16s] 5,005: zp[4]:33 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] 2,002: zp[2]:158 [ mul16s::$6 ] 2,002: zp[2]:160 [ mul16s::$11 ] 367.33: zp[4]:162 [ mul16s::return#0 ] 220.4: zp[2]:80 [ mul16s::a#0 ] 202: zp[4]:82 [ mul16s::return#2 ] -Uplift Scope [bitmap_plot] 2,608: zp[1]:39 [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] 2,002: zp[2]:169 [ bitmap_plot::$0 ] 2,002: zp[1]:173 [ bitmap_plot::$1 ] 1,501.5: zp[2]:171 [ bitmap_plot::plotter#1 ] 753: zp[2]:40 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] 500.5: zp[2]:167 [ bitmap_plot::plotter#0 ] -Uplift Scope [memset] 3,572.33: zp[2]:24 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 183.67: zp[2]:108 [ memset::end#0 ] 125.12: zp[1]:23 [ memset::c#4 ] 101: zp[2]:19 [ memset::num#2 ] 0: zp[2]:21 [ memset::str#3 ] -Uplift Scope [render_sine] 221.42: zp[2]:15 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] 220.36: zp[2]:17 [ render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 ] 202: zp[2]:92 [ render_sine::$10 ] 202: zp[2]:94 [ render_sine::$1 ] 202: zp[2]:96 [ render_sine::sin_val#0 ] 202: zp[2]:100 [ render_sine::$11 ] 202: zp[2]:102 [ render_sine::$4 ] 202: zp[2]:104 [ render_sine::sin2_val#0 ] 101: zp[1]:99 [ render_sine::ypos#0 ] 101: zp[1]:107 [ render_sine::ypos2#0 ] +Uplift Scope [mul16u] 34,287,289.43: zp[4]:58 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 24,500,004.57: zp[4]:62 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 20,000,002: zp[1]:190 [ mul16u::$1 ] 16,750,839.67: zp[2]:56 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] 30,003: zp[2]:54 [ mul16u::b#2 mul16u::b#1 ] 20,002: zp[4]:176 [ mul16u::return#3 ] 2,002: zp[4]:152 [ mul16u::return#2 ] +Uplift Scope [wrap_y] 802,115.5: zp[2]:37 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] 300.75: zp[1]:164 [ wrap_y::return#2 ] 202: zp[1]:98 [ wrap_y::return#0 ] 202: zp[1]:104 [ wrap_y::return#1 ] +Uplift Scope [divr16u] 90,147.42: zp[2]:42 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 31,817.75: zp[2]:46 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 20,002: zp[1]:172 [ divr16u::$1 ] 20,002: zp[1]:173 [ divr16u::$2 ] 16,540.12: zp[1]:48 [ divr16u::i#2 divr16u::i#1 ] 7,930.39: zp[2]:44 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 202: zp[2]:108 [ divr16u::return#2 ] 202: zp[2]:112 [ divr16u::return#3 ] +Uplift Scope [mulu16_sel] 21,012: zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ] 20,002: zp[4]:180 [ mulu16_sel::$0 ] 20,002: zp[4]:184 [ mulu16_sel::$1 ] 15,010.5: zp[2]:51 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ] 2,143.71: zp[2]:188 [ mulu16_sel::return#12 ] 2,002: zp[2]:126 [ mulu16_sel::return#0 ] 2,002: zp[2]:130 [ mulu16_sel::return#1 ] 2,002: zp[2]:134 [ mulu16_sel::return#2 ] 2,002: zp[2]:140 [ mulu16_sel::return#10 ] 2,002: zp[2]:144 [ mulu16_sel::return#11 ] 1,666.83: zp[1]:53 [ mulu16_sel::select#5 ] +Uplift Scope [sin16s] 11,061.5: zp[4]:27 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 4,705: zp[2]:31 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 2,002: zp[4]:120 [ sin16s::$4 ] 2,002: zp[2]:128 [ sin16s::x2#0 ] 2,002: zp[2]:136 [ sin16s::x3_6#0 ] 2,002: zp[2]:142 [ sin16s::x4#0 ] 2,002: zp[2]:146 [ sin16s::x5#0 ] 2,002: zp[2]:148 [ sin16s::x5_128#0 ] 500.5: zp[2]:132 [ sin16s::x3#0 ] 500.5: zp[2]:150 [ sin16s::usinx#1 ] 318.5: zp[2]:124 [ sin16s::x1#0 ] 202: zp[2]:78 [ sin16s::return#0 ] 166.83: zp[2]:138 [ sin16s::usinx#0 ] 30.33: zp[1]:26 [ sin16s::isUpper#2 ] +Uplift Scope [mul16s] 5,005: zp[4]:33 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] 2,002: zp[2]:156 [ mul16s::$6 ] 2,002: zp[2]:158 [ mul16s::$11 ] 367.33: zp[4]:160 [ mul16s::return#0 ] 220.4: zp[2]:80 [ mul16s::a#0 ] 202: zp[4]:82 [ mul16s::return#2 ] +Uplift Scope [bitmap_plot] 2,608: zp[1]:39 [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] 2,002: zp[2]:167 [ bitmap_plot::$0 ] 2,002: zp[1]:171 [ bitmap_plot::$1 ] 1,501.5: zp[2]:169 [ bitmap_plot::plotter#1 ] 753: zp[2]:40 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] 500.5: zp[2]:165 [ bitmap_plot::plotter#0 ] +Uplift Scope [memset] 3,572.33: zp[2]:24 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 183.67: zp[2]:106 [ memset::end#0 ] 125.12: zp[1]:23 [ memset::c#4 ] 101: zp[2]:19 [ memset::num#2 ] 0: zp[2]:21 [ memset::str#3 ] Uplift Scope [bitmap_init] 366.12: zp[2]:5 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 319.83: zp[1]:2 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 202: zp[1]:3 [ bitmap_init::x#2 bitmap_init::x#1 ] 202: zp[1]:4 [ bitmap_init::y#2 bitmap_init::y#1 ] 202: zp[1]:67 [ bitmap_init::$4 ] 202: zp[1]:68 [ bitmap_init::$5 ] 202: zp[1]:69 [ bitmap_init::$6 ] 50.5: zp[1]:66 [ bitmap_init::$7 ] +Uplift Scope [render_sine] 221.24: zp[2]:17 [ render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 ] 218.16: zp[2]:15 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] 202: zp[2]:94 [ render_sine::$1 ] 202: zp[2]:96 [ render_sine::sin_val#0 ] 202: zp[2]:100 [ render_sine::$4 ] 202: zp[2]:102 [ render_sine::sin2_val#0 ] 101: zp[1]:99 [ render_sine::ypos#0 ] 101: zp[1]:105 [ render_sine::ypos2#0 ] 30.3: zp[2]:92 [ render_sine::$11 ] Uplift Scope [sin16s_gen2] 225.31: zp[2]:7 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] 202: zp[4]:86 [ sin16s_gen2::$6 ] 126.25: zp[4]:9 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] 101: zp[2]:90 [ sin16s_gen2::$8 ] 94.88: zp[2]:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] 7.47: zp[4]:74 [ sin16s_gen2::step#0 ] -Uplift Scope [div32u16u] 202: zp[2]:116 [ div32u16u::quotient_lo#0 ] 40.4: zp[2]:112 [ div32u16u::quotient_hi#0 ] 37.33: zp[4]:118 [ div32u16u::return#0 ] 22: zp[4]:70 [ div32u16u::return#2 ] -Uplift Scope [] 220.4: zp[2]:176 [ rem16u#0 ] +Uplift Scope [div32u16u] 202: zp[2]:114 [ div32u16u::quotient_lo#0 ] 40.4: zp[2]:110 [ div32u16u::quotient_hi#0 ] 37.33: zp[4]:116 [ div32u16u::return#0 ] 22: zp[4]:70 [ div32u16u::return#2 ] +Uplift Scope [] 220.4: zp[2]:174 [ rem16u#0 ] Uplift Scope [MOS6526_CIA] Uplift Scope [MOS6569_VICII] Uplift Scope [MOS6581_SID] Uplift Scope [bitmap_clear] Uplift Scope [main] -Uplifting [mul16u] best 31391 combination zp[4]:58 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:62 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:56 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp[2]:54 [ mul16u::b#2 mul16u::b#1 ] zp[4]:178 [ mul16u::return#3 ] zp[4]:154 [ mul16u::return#2 ] -Uplifting [wrap_y] best 31208 combination zp[2]:37 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#2 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ] -Uplifting [divr16u] best 30998 combination zp[2]:42 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:46 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[2]:44 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp[2]:110 [ divr16u::return#2 ] zp[2]:114 [ divr16u::return#3 ] -Uplifting [mulu16_sel] best 30982 combination zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ] zp[4]:182 [ mulu16_sel::$0 ] zp[4]:186 [ mulu16_sel::$1 ] zp[2]:51 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ] zp[2]:190 [ mulu16_sel::return#12 ] zp[2]:128 [ mulu16_sel::return#0 ] zp[2]:132 [ mulu16_sel::return#1 ] zp[2]:136 [ mulu16_sel::return#2 ] zp[2]:142 [ mulu16_sel::return#10 ] zp[2]:146 [ mulu16_sel::return#11 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [sin16s] best 30973 combination zp[4]:27 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:31 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:122 [ sin16s::$4 ] zp[2]:130 [ sin16s::x2#0 ] zp[2]:138 [ sin16s::x3_6#0 ] zp[2]:144 [ sin16s::x4#0 ] zp[2]:148 [ sin16s::x5#0 ] zp[2]:150 [ sin16s::x5_128#0 ] zp[2]:134 [ sin16s::x3#0 ] zp[2]:152 [ sin16s::usinx#1 ] zp[2]:126 [ sin16s::x1#0 ] zp[2]:78 [ sin16s::return#0 ] zp[2]:140 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ] -Uplifting [mul16s] best 30973 combination zp[4]:33 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp[2]:158 [ mul16s::$6 ] zp[2]:160 [ mul16s::$11 ] zp[4]:162 [ mul16s::return#0 ] zp[2]:80 [ mul16s::a#0 ] zp[4]:82 [ mul16s::return#2 ] -Uplifting [bitmap_plot] best 30904 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp[2]:169 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:171 [ bitmap_plot::plotter#1 ] zp[2]:40 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp[2]:167 [ bitmap_plot::plotter#0 ] -Uplifting [memset] best 30888 combination zp[2]:24 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:108 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:19 [ memset::num#2 ] zp[2]:21 [ memset::str#3 ] -Uplifting [render_sine] best 30808 combination zp[2]:15 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] zp[2]:17 [ render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 ] zp[2]:92 [ render_sine::$10 ] zp[2]:94 [ render_sine::$1 ] zp[2]:96 [ render_sine::sin_val#0 ] zp[2]:100 [ render_sine::$11 ] zp[2]:102 [ render_sine::$4 ] zp[2]:104 [ render_sine::sin2_val#0 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ] -Uplifting [bitmap_init] best 30298 combination zp[2]:5 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:68 [ bitmap_init::$5 ] zp[1]:69 [ bitmap_init::$6 ] zp[1]:66 [ bitmap_init::$7 ] +Uplifting [mul16u] best 31231 combination zp[4]:58 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:62 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:56 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp[2]:54 [ mul16u::b#2 mul16u::b#1 ] zp[4]:176 [ mul16u::return#3 ] zp[4]:152 [ mul16u::return#2 ] +Uplifting [wrap_y] best 31048 combination zp[2]:37 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#2 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ] +Uplifting [divr16u] best 30838 combination zp[2]:42 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:46 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[2]:44 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp[2]:108 [ divr16u::return#2 ] zp[2]:112 [ divr16u::return#3 ] +Uplifting [mulu16_sel] best 30822 combination zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ] zp[4]:180 [ mulu16_sel::$0 ] zp[4]:184 [ mulu16_sel::$1 ] zp[2]:51 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ] zp[2]:188 [ mulu16_sel::return#12 ] zp[2]:126 [ mulu16_sel::return#0 ] zp[2]:130 [ mulu16_sel::return#1 ] zp[2]:134 [ mulu16_sel::return#2 ] zp[2]:140 [ mulu16_sel::return#10 ] zp[2]:144 [ mulu16_sel::return#11 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [sin16s] best 30813 combination zp[4]:27 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:31 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:120 [ sin16s::$4 ] zp[2]:128 [ sin16s::x2#0 ] zp[2]:136 [ sin16s::x3_6#0 ] zp[2]:142 [ sin16s::x4#0 ] zp[2]:146 [ sin16s::x5#0 ] zp[2]:148 [ sin16s::x5_128#0 ] zp[2]:132 [ sin16s::x3#0 ] zp[2]:150 [ sin16s::usinx#1 ] zp[2]:124 [ sin16s::x1#0 ] zp[2]:78 [ sin16s::return#0 ] zp[2]:138 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ] +Uplifting [mul16s] best 30813 combination zp[4]:33 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp[2]:156 [ mul16s::$6 ] zp[2]:158 [ mul16s::$11 ] zp[4]:160 [ mul16s::return#0 ] zp[2]:80 [ mul16s::a#0 ] zp[4]:82 [ mul16s::return#2 ] +Uplifting [bitmap_plot] best 30744 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp[2]:167 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:169 [ bitmap_plot::plotter#1 ] zp[2]:40 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp[2]:165 [ bitmap_plot::plotter#0 ] +Uplifting [memset] best 30728 combination zp[2]:24 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:106 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:19 [ memset::num#2 ] zp[2]:21 [ memset::str#3 ] +Uplifting [bitmap_init] best 30218 combination zp[2]:5 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:68 [ bitmap_init::$5 ] zp[1]:69 [ bitmap_init::$6 ] zp[1]:66 [ bitmap_init::$7 ] Limited combination testing to 100 combinations of 15360 possible. -Uplifting [sin16s_gen2] best 30298 combination zp[2]:7 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp[4]:86 [ sin16s_gen2::$6 ] zp[4]:9 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp[2]:90 [ sin16s_gen2::$8 ] zp[2]:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[4]:74 [ sin16s_gen2::step#0 ] -Uplifting [div32u16u] best 30298 combination zp[2]:116 [ div32u16u::quotient_lo#0 ] zp[2]:112 [ div32u16u::quotient_hi#0 ] zp[4]:118 [ div32u16u::return#0 ] zp[4]:70 [ div32u16u::return#2 ] -Uplifting [] best 30298 combination zp[2]:176 [ rem16u#0 ] -Uplifting [MOS6526_CIA] best 30298 combination -Uplifting [MOS6569_VICII] best 30298 combination -Uplifting [MOS6581_SID] best 30298 combination -Uplifting [bitmap_clear] best 30298 combination -Uplifting [main] best 30298 combination +Uplifting [render_sine] best 30138 combination zp[2]:17 [ render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 ] zp[2]:15 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] zp[2]:94 [ render_sine::$1 ] zp[2]:96 [ render_sine::sin_val#0 ] zp[2]:100 [ render_sine::$4 ] zp[2]:102 [ render_sine::sin2_val#0 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ] zp[2]:92 [ render_sine::$11 ] +Uplifting [sin16s_gen2] best 30138 combination zp[2]:7 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp[4]:86 [ sin16s_gen2::$6 ] zp[4]:9 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp[2]:90 [ sin16s_gen2::$8 ] zp[2]:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[4]:74 [ sin16s_gen2::step#0 ] +Uplifting [div32u16u] best 30138 combination zp[2]:114 [ div32u16u::quotient_lo#0 ] zp[2]:110 [ div32u16u::quotient_hi#0 ] zp[4]:116 [ div32u16u::return#0 ] zp[4]:70 [ div32u16u::return#2 ] +Uplifting [] best 30138 combination zp[2]:174 [ rem16u#0 ] +Uplifting [MOS6526_CIA] best 30138 combination +Uplifting [MOS6569_VICII] best 30138 combination +Uplifting [MOS6581_SID] best 30138 combination +Uplifting [bitmap_clear] best 30138 combination +Uplifting [main] best 30138 combination Attempting to uplift remaining variables inzp[1]:68 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 30238 combination reg byte a [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 30078 combination reg byte a [ bitmap_init::$5 ] Attempting to uplift remaining variables inzp[1]:69 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 30178 combination reg byte a [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 30018 combination reg byte a [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp[1]:66 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 30178 combination zp[1]:66 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 30018 combination zp[1]:66 [ bitmap_init::$7 ] Coalescing zero page register [ zp[2]:17 [ render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 ] ] with [ zp[2]:40 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] - score: 2 -Coalescing zero page register [ zp[2]:31 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp[2]:152 [ sin16s::usinx#1 ] ] - score: 2 -Coalescing zero page register [ zp[2]:42 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp[2]:176 [ rem16u#0 ] ] - score: 2 -Coalescing zero page register [ zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ] ] with [ zp[2]:134 [ sin16s::x3#0 ] ] - score: 2 -Coalescing zero page register [ zp[2]:19 [ memset::num#2 ] ] with [ zp[2]:108 [ memset::end#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:31 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp[2]:150 [ sin16s::usinx#1 ] ] - score: 2 +Coalescing zero page register [ zp[2]:42 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp[2]:174 [ rem16u#0 ] ] - score: 2 +Coalescing zero page register [ zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ] ] with [ zp[2]:132 [ sin16s::x3#0 ] ] - score: 2 +Coalescing zero page register [ zp[2]:19 [ memset::num#2 ] ] with [ zp[2]:106 [ memset::end#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:21 [ memset::str#3 ] ] with [ zp[2]:24 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:31 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 ] ] with [ zp[2]:78 [ sin16s::return#0 ] ] - score: 1 -Coalescing zero page register [ zp[4]:33 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] ] with [ zp[4]:154 [ mul16u::return#2 ] ] - score: 1 -Coalescing zero page register [ zp[4]:33 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 ] ] with [ zp[4]:162 [ mul16s::return#0 ] ] - score: 1 +Coalescing zero page register [ zp[4]:33 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] ] with [ zp[4]:152 [ mul16u::return#2 ] ] - score: 1 +Coalescing zero page register [ zp[4]:33 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 ] ] with [ zp[4]:160 [ mul16s::return#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:37 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] ] with [ zp[2]:96 [ render_sine::sin_val#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:37 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 ] ] with [ zp[2]:104 [ render_sine::sin2_val#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:46 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp[2]:110 [ divr16u::return#2 ] ] - score: 1 -Coalescing zero page register [ zp[2]:46 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp[2]:114 [ divr16u::return#3 ] ] - score: 1 -Coalescing zero page register [ zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 ] ] with [ zp[2]:130 [ sin16s::x2#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 ] ] with [ zp[2]:144 [ sin16s::x4#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:37 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 ] ] with [ zp[2]:102 [ render_sine::sin2_val#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:46 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp[2]:108 [ divr16u::return#2 ] ] - score: 1 +Coalescing zero page register [ zp[2]:46 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp[2]:112 [ divr16u::return#3 ] ] - score: 1 +Coalescing zero page register [ zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 ] ] with [ zp[2]:128 [ sin16s::x2#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 ] ] with [ zp[2]:142 [ sin16s::x4#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:51 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ] ] with [ zp[2]:54 [ mul16u::b#2 mul16u::b#1 ] ] - score: 1 -Coalescing zero page register [ zp[4]:58 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp[4]:178 [ mul16u::return#3 ] ] - score: 1 +Coalescing zero page register [ zp[4]:58 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp[4]:176 [ mul16u::return#3 ] ] - score: 1 Coalescing zero page register [ zp[4]:70 [ div32u16u::return#2 ] ] with [ zp[4]:74 [ sin16s_gen2::step#0 ] ] - score: 1 -Coalescing zero page register [ zp[4]:70 [ div32u16u::return#2 sin16s_gen2::step#0 ] ] with [ zp[4]:118 [ div32u16u::return#0 ] ] - score: 1 +Coalescing zero page register [ zp[4]:70 [ div32u16u::return#2 sin16s_gen2::step#0 ] ] with [ zp[4]:116 [ div32u16u::return#0 ] ] - score: 1 Coalescing zero page register [ zp[4]:82 [ mul16s::return#2 ] ] with [ zp[4]:86 [ sin16s_gen2::$6 ] ] - score: 1 -Coalescing zero page register [ zp[2]:92 [ render_sine::$10 ] ] with [ zp[2]:94 [ render_sine::$1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:100 [ render_sine::$11 ] ] with [ zp[2]:102 [ render_sine::$4 ] ] - score: 1 -Coalescing zero page register [ zp[2]:128 [ mulu16_sel::return#0 ] ] with [ zp[2]:190 [ mulu16_sel::return#12 ] ] - score: 1 -Coalescing zero page register [ zp[2]:136 [ mulu16_sel::return#2 ] ] with [ zp[2]:138 [ sin16s::x3_6#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:146 [ mulu16_sel::return#11 ] ] with [ zp[2]:148 [ sin16s::x5#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:158 [ mul16s::$6 ] ] with [ zp[2]:160 [ mul16s::$11 ] ] - score: 1 -Coalescing zero page register [ zp[2]:167 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:171 [ bitmap_plot::plotter#1 ] ] - score: 1 -Coalescing zero page register [ zp[4]:182 [ mulu16_sel::$0 ] ] with [ zp[4]:186 [ mulu16_sel::$1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:92 [ render_sine::$11 ] ] with [ zp[2]:100 [ render_sine::$4 ] ] - score: 1 +Coalescing zero page register [ zp[2]:126 [ mulu16_sel::return#0 ] ] with [ zp[2]:188 [ mulu16_sel::return#12 ] ] - score: 1 +Coalescing zero page register [ zp[2]:134 [ mulu16_sel::return#2 ] ] with [ zp[2]:136 [ sin16s::x3_6#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:144 [ mulu16_sel::return#11 ] ] with [ zp[2]:146 [ sin16s::x5#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:156 [ mul16s::$6 ] ] with [ zp[2]:158 [ mul16s::$11 ] ] - score: 1 +Coalescing zero page register [ zp[2]:165 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:169 [ bitmap_plot::plotter#1 ] ] - score: 1 +Coalescing zero page register [ zp[4]:180 [ mulu16_sel::$0 ] ] with [ zp[4]:184 [ mulu16_sel::$1 ] ] - score: 1 Coalescing zero page register [ zp[2]:31 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 ] ] with [ zp[2]:80 [ mul16s::a#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:31 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 ] ] with [ zp[2]:140 [ sin16s::usinx#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:31 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 ] ] with [ zp[2]:138 [ sin16s::usinx#0 ] ] - score: 1 Coalescing zero page register [ zp[4]:33 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 ] ] with [ zp[4]:58 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] - score: 1 Coalescing zero page register [ zp[4]:33 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] with [ zp[4]:82 [ mul16s::return#2 sin16s_gen2::$6 ] ] - score: 1 -Coalescing zero page register [ zp[2]:37 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 ] ] with [ zp[2]:92 [ render_sine::$10 render_sine::$1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:37 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$10 render_sine::$1 ] ] with [ zp[2]:100 [ render_sine::$11 render_sine::$4 ] ] - score: 1 -Coalescing zero page register [ zp[2]:46 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp[2]:116 [ div32u16u::quotient_lo#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 ] ] with [ zp[2]:132 [ mulu16_sel::return#1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 ] ] with [ zp[2]:142 [ mulu16_sel::return#10 ] ] - score: 1 -Coalescing zero page register [ zp[2]:128 [ mulu16_sel::return#0 mulu16_sel::return#12 ] ] with [ zp[2]:136 [ mulu16_sel::return#2 sin16s::x3_6#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:128 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 ] ] with [ zp[2]:146 [ mulu16_sel::return#11 sin16s::x5#0 ] ] - score: 1 -Coalescing zero page register [ zp[4]:33 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$6 ] ] with [ zp[4]:182 [ mulu16_sel::$0 mulu16_sel::$1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:128 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 ] ] with [ zp[2]:150 [ sin16s::x5_128#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:37 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 ] ] with [ zp[2]:94 [ render_sine::$1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:46 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp[2]:114 [ div32u16u::quotient_lo#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 ] ] with [ zp[2]:130 [ mulu16_sel::return#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 ] ] with [ zp[2]:140 [ mulu16_sel::return#10 ] ] - score: 1 +Coalescing zero page register [ zp[2]:126 [ mulu16_sel::return#0 mulu16_sel::return#12 ] ] with [ zp[2]:134 [ mulu16_sel::return#2 sin16s::x3_6#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:126 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 ] ] with [ zp[2]:144 [ mulu16_sel::return#11 sin16s::x5#0 ] ] - score: 1 +Coalescing zero page register [ zp[4]:33 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$6 ] ] with [ zp[4]:180 [ mulu16_sel::$0 mulu16_sel::$1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:126 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 ] ] with [ zp[2]:148 [ sin16s::x5_128#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:7 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] ] with [ zp[2]:5 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] Coalescing zero page register [ zp[2]:15 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] ] with [ zp[2]:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] ] Coalescing zero page register [ zp[2]:19 [ memset::num#2 memset::end#0 ] ] with [ zp[2]:17 [ render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] Coalescing zero page register [ zp[2]:31 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 ] ] with [ zp[2]:21 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] -Coalescing zero page register [ zp[2]:42 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 ] ] with [ zp[2]:37 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$10 render_sine::$1 render_sine::$11 render_sine::$4 ] ] +Coalescing zero page register [ zp[2]:42 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 ] ] with [ zp[2]:37 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$1 ] ] Coalescing zero page register [ zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ] ] with [ zp[2]:44 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] ] Coalescing zero page register [ zp[2]:51 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 mul16u::b#2 mul16u::b#1 ] ] with [ zp[2]:46 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] ] Coalescing zero page register [ zp[2]:90 [ sin16s_gen2::$8 ] ] with [ zp[2]:56 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] ] -Coalescing zero page register [ zp[4]:122 [ sin16s::$4 ] ] with [ zp[4]:62 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] ] -Coalescing zero page register [ zp[2]:126 [ sin16s::x1#0 ] ] with [ zp[2]:112 [ div32u16u::quotient_hi#0 ] ] -Coalescing zero page register [ zp[2]:158 [ mul16s::$6 mul16s::$11 ] ] with [ zp[2]:128 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] ] +Coalescing zero page register [ zp[2]:110 [ div32u16u::quotient_hi#0 ] ] with [ zp[2]:92 [ render_sine::$11 render_sine::$4 ] ] +Coalescing zero page register [ zp[4]:120 [ sin16s::$4 ] ] with [ zp[4]:62 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] ] +Coalescing zero page register [ zp[2]:156 [ mul16s::$6 mul16s::$11 ] ] with [ zp[2]:124 [ sin16s::x1#0 ] ] +Coalescing zero page register [ zp[2]:165 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:126 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] ] Coalescing zero page register [ zp[2]:19 [ memset::num#2 memset::end#0 render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] with [ zp[2]:7 [ sin16s_gen2::i#2 sin16s_gen2::i#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] -Coalescing zero page register [ zp[2]:42 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$10 render_sine::$1 render_sine::$11 render_sine::$4 ] ] with [ zp[2]:31 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] -Coalescing zero page register [ zp[2]:167 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] ] -Coalescing zero page register [ zp[2]:169 [ bitmap_plot::$0 ] ] with [ zp[2]:51 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 mul16u::b#2 mul16u::b#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] ] +Coalescing zero page register [ zp[2]:42 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$1 ] ] with [ zp[2]:31 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] +Coalescing zero page register [ zp[2]:156 [ mul16s::$6 mul16s::$11 sin16s::x1#0 ] ] with [ zp[2]:110 [ div32u16u::quotient_hi#0 render_sine::$11 render_sine::$4 ] ] +Coalescing zero page register [ zp[2]:167 [ bitmap_plot::$0 ] ] with [ zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] ] Allocated (was zp[4]:9) zp[4]:2 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] Allocated (was zp[2]:15) zp[2]:6 [ render_sine::sin_idx#2 render_sine::sin_idx#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] Allocated (was zp[2]:19) zp[2]:8 [ memset::num#2 memset::end#0 render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 sin16s_gen2::i#2 sin16s_gen2::i#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] Allocated (was zp[4]:27) zp[4]:10 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] Allocated (was zp[4]:33) zp[4]:14 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$6 mulu16_sel::$0 mulu16_sel::$1 ] -Allocated (was zp[2]:42) zp[2]:18 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$10 render_sine::$1 render_sine::$11 render_sine::$4 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] -Allocated (was zp[1]:66) zp[1]:20 [ bitmap_init::$7 ] -Allocated (was zp[4]:70) zp[4]:21 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ] -Allocated (was zp[2]:90) zp[2]:25 [ sin16s_gen2::$8 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] -Allocated (was zp[4]:122) zp[4]:27 [ sin16s::$4 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] -Allocated (was zp[2]:126) zp[2]:31 [ sin16s::x1#0 div32u16u::quotient_hi#0 ] -Allocated (was zp[2]:158) zp[2]:33 [ mul16s::$6 mul16s::$11 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] -Allocated (was zp[2]:167) zp[2]:35 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] -Allocated (was zp[2]:169) zp[2]:37 [ bitmap_plot::$0 mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 mul16u::b#2 mul16u::b#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] +Allocated (was zp[2]:42) zp[2]:18 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$1 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] +Allocated (was zp[2]:51) zp[2]:20 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 mul16u::b#2 mul16u::b#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] +Allocated (was zp[1]:66) zp[1]:22 [ bitmap_init::$7 ] +Allocated (was zp[4]:70) zp[4]:23 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ] +Allocated (was zp[2]:90) zp[2]:27 [ sin16s_gen2::$8 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] +Allocated (was zp[4]:120) zp[4]:29 [ sin16s::$4 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] +Allocated (was zp[2]:156) zp[2]:33 [ mul16s::$6 mul16s::$11 sin16s::x1#0 div32u16u::quotient_hi#0 render_sine::$11 render_sine::$4 ] +Allocated (was zp[2]:165) zp[2]:35 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] +Allocated (was zp[2]:167) zp[2]:37 [ bitmap_plot::$0 mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -6102,7 +6089,7 @@ main: { // bitmap_init // Initialize bitmap plotting tables bitmap_init: { - .label __7 = $14 + .label __7 = $16 .label yoffs = 8 // [19] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] __b1_from_bitmap_init: @@ -6216,16 +6203,16 @@ bitmap_init: { bitmap_clear: { .const col = WHITE*$10 // [41] call memset - // [93] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + // [92] phi from bitmap_clear to memset [phi:bitmap_clear->memset] memset_from_bitmap_clear: - // [93] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 + // [92] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 ldx #col - // [93] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 + // [92] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 lda #SCREEN sta.z memset.str+1 - // [93] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 + // [92] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 lda #<$3e8 sta.z memset.num lda #>$3e8 @@ -6237,16 +6224,16 @@ bitmap_clear: { // bitmap_clear::@1 __b1: // [43] call memset - // [93] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + // [92] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] memset_from___b1: - // [93] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 + // [92] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 ldx #0 - // [93] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 + // [92] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 lda #BITMAP sta.z memset.str+1 - // [93] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 + // [92] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 lda #<$1f40 sta.z memset.num lda #>$1f40 @@ -6268,15 +6255,15 @@ sin16s_gen2: { .const max = $140 .label ampl = max-min .label __6 = $e - .label __8 = $19 - .label step = $15 + .label __8 = $1b + .label step = $17 .label sintab = 6 // u[4.28] // Iterate over the table .label x = 2 .label i = 8 // [46] call div32u16u - // [102] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + // [101] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] div32u16u_from_sin16s_gen2: jsr div32u16u // [47] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 @@ -6397,9 +6384,8 @@ sin16s_gen2: { // render_sine render_sine: { .label __1 = $12 - .label __4 = $12 - .label __10 = $12 - .label __11 = $12 + .label __4 = $21 + .label __11 = $21 .label sin_val = $12 .label sin2_val = $12 .label xpos = 8 @@ -6435,19 +6421,19 @@ render_sine: { rts // render_sine::@2 __b2: - // [68] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 + // [68] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 lda.z sin_idx asl - sta.z __10 + sta.z __11 lda.z sin_idx+1 rol - sta.z __10+1 - // [69] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$10 -- pwsz1=pwsc1_plus_vwuz1 + sta.z __11+1 + // [69] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$11 -- pwsz1=pwsc1_plus_vwuz2 + lda.z __11 clc - lda.z __1 adc #sin sta.z __1+1 // [70] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) -- vwsz1=_deref_pwsz1 @@ -6461,9 +6447,9 @@ render_sine: { sta.z sin_val // [71] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 // [72] call wrap_y - // [163] phi from render_sine::@2 to wrap_y [phi:render_sine::@2->wrap_y] + // [162] phi from render_sine::@2 to wrap_y [phi:render_sine::@2->wrap_y] wrap_y_from___b2: - // [163] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@2->wrap_y#0] -- register_copy + // [162] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@2->wrap_y#0] -- register_copy jsr wrap_y // [73] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 jmp __b4 @@ -6474,22 +6460,15 @@ render_sine: { // [75] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 // [76] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 // [77] call bitmap_plot - // [172] phi from render_sine::@4 to bitmap_plot [phi:render_sine::@4->bitmap_plot] + // [171] phi from render_sine::@4 to bitmap_plot [phi:render_sine::@4->bitmap_plot] bitmap_plot_from___b4: - // [172] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@4->bitmap_plot#0] -- register_copy - // [172] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@4->bitmap_plot#1] -- register_copy + // [171] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@4->bitmap_plot#0] -- register_copy + // [171] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@4->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b5 // render_sine::@5 __b5: - // [78] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 - lda.z sin_idx - asl - sta.z __11 - lda.z sin_idx+1 - rol - sta.z __11+1 - // [79] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 -- pwsz1=pwsc1_plus_vwuz1 + // [78] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 -- pwsz1=pwsc1_plus_vwuz1 clc lda.z __4 adc #sin2 sta.z __4+1 - // [80] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) -- vwsz1=_deref_pwsz1 + // [79] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) -- vwsz1=_deref_pwsz2 ldy #0 - lda (sin2_val),y - pha - iny - lda (sin2_val),y - sta.z sin2_val+1 - pla + lda (__4),y sta.z sin2_val - // [81] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz1_plus_vbsc1 + iny + lda (__4),y + sta.z sin2_val+1 + // [80] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz1_plus_vbsc1 lda.z wrap_y.y clc adc #<$a @@ -6514,60 +6491,60 @@ render_sine: { lda.z wrap_y.y+1 adc #>$a sta.z wrap_y.y+1 - // [82] call wrap_y - // [163] phi from render_sine::@5 to wrap_y [phi:render_sine::@5->wrap_y] + // [81] call wrap_y + // [162] phi from render_sine::@5 to wrap_y [phi:render_sine::@5->wrap_y] wrap_y_from___b5: - // [163] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@5->wrap_y#0] -- register_copy + // [162] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@5->wrap_y#0] -- register_copy jsr wrap_y - // [83] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 + // [82] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 jmp __b6 // render_sine::@6 __b6: - // [84] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuxx=vbuaa + // [83] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuxx=vbuaa tax - // [85] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 - // [86] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 - // [87] call bitmap_plot - // [172] phi from render_sine::@6 to bitmap_plot [phi:render_sine::@6->bitmap_plot] + // [84] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 + // [85] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 + // [86] call bitmap_plot + // [171] phi from render_sine::@6 to bitmap_plot [phi:render_sine::@6->bitmap_plot] bitmap_plot_from___b6: - // [172] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@6->bitmap_plot#0] -- register_copy - // [172] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@6->bitmap_plot#1] -- register_copy + // [171] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@6->bitmap_plot#0] -- register_copy + // [171] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@6->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b7 // render_sine::@7 __b7: - // [88] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 + // [87] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 inc.z xpos bne !+ inc.z xpos+1 !: - // [89] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 -- vwuz1_neq_vwuc1_then_la1 + // [88] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 -- vwuz1_neq_vwuc1_then_la1 lda.z xpos+1 cmp #>$140 bne __b8_from___b7 lda.z xpos cmp #<$140 bne __b8_from___b7 - // [91] phi from render_sine::@7 to render_sine::@3 [phi:render_sine::@7->render_sine::@3] + // [90] phi from render_sine::@7 to render_sine::@3 [phi:render_sine::@7->render_sine::@3] __b3_from___b7: - // [91] phi (word) render_sine::xpos#9 = (byte) 0 [phi:render_sine::@7->render_sine::@3#0] -- vwuz1=vbuc1 + // [90] phi (word) render_sine::xpos#9 = (byte) 0 [phi:render_sine::@7->render_sine::@3#0] -- vwuz1=vbuc1 lda #<0 sta.z xpos lda #>0 sta.z xpos+1 jmp __b3 - // [90] phi from render_sine::@7 to render_sine::@8 [phi:render_sine::@7->render_sine::@8] + // [89] phi from render_sine::@7 to render_sine::@8 [phi:render_sine::@7->render_sine::@8] __b8_from___b7: jmp __b8 // render_sine::@8 __b8: - // [91] phi from render_sine::@8 to render_sine::@3 [phi:render_sine::@8->render_sine::@3] + // [90] phi from render_sine::@8 to render_sine::@3 [phi:render_sine::@8->render_sine::@3] __b3_from___b8: - // [91] phi (word) render_sine::xpos#9 = (word) render_sine::xpos#1 [phi:render_sine::@8->render_sine::@3#0] -- register_copy + // [90] phi (word) render_sine::xpos#9 = (word) render_sine::xpos#1 [phi:render_sine::@8->render_sine::@3#0] -- register_copy jmp __b3 // render_sine::@3 __b3: - // [92] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 -- vwuz1=_inc_vwuz1 + // [91] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 -- vwuz1=_inc_vwuz1 inc.z sin_idx bne !+ inc.z sin_idx+1 @@ -6586,7 +6563,7 @@ memset: { .label dst = $12 .label num = 8 .label str = $12 - // [94] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + // [93] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 lda.z num bne !+ lda.z num+1 @@ -6595,7 +6572,7 @@ memset: { jmp __b1 // memset::@1 __b1: - // [95] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 + // [94] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 lda.z end clc adc.z str @@ -6603,15 +6580,15 @@ memset: { lda.z end+1 adc.z str+1 sta.z end+1 - // [96] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 - // [97] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] + // [95] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 + // [96] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] __b2_from___b1: __b2_from___b3: - // [97] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy + // [96] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy jmp __b2 // memset::@2 __b2: - // [98] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 + // [97] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 lda.z dst+1 cmp.z end+1 bne __b3 @@ -6621,15 +6598,15 @@ memset: { jmp __breturn // memset::@return __breturn: - // [99] return + // [98] return rts // memset::@3 __b3: - // [100] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuxx + // [99] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuxx txa ldy #0 sta (dst),y - // [101] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [100] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 @@ -6640,49 +6617,49 @@ memset: { // Divide unsigned 32-bit unsigned long dividend with a 16-bit unsigned int divisor // The 16-bit unsigned int remainder can be found in rem16u after the division div32u16u: { - .label quotient_hi = $1f - .label quotient_lo = $25 - .label return = $15 - // [103] call divr16u - // [179] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + .label quotient_hi = $21 + .label quotient_lo = $14 + .label return = $17 + // [102] call divr16u + // [178] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - // [179] phi (word) divr16u::dividend#5 = >(const nomodify dword) PI2_u4f28 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + // [178] phi (word) divr16u::dividend#5 = >(const nomodify dword) PI2_u4f28 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta.z divr16u.dividend lda #>PI2_u4f28>>$10 sta.z divr16u.dividend+1 - // [179] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + // [178] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta.z divr16u.rem lda #>0 sta.z divr16u.rem+1 jsr divr16u - // [104] (word) divr16u::return#2 ← (word) divr16u::return#0 + // [103] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp __b1 // div32u16u::@1 __b1: - // [105] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + // [104] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda.z divr16u.return sta.z quotient_hi lda.z divr16u.return+1 sta.z quotient_hi+1 - // [106] (word) divr16u::rem#4 ← (word) rem16u#0 - // [107] call divr16u - // [179] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] + // [105] (word) divr16u::rem#4 ← (word) rem16u#0 + // [106] call divr16u + // [178] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] divr16u_from___b1: - // [179] phi (word) divr16u::dividend#5 = <(const nomodify dword) PI2_u4f28 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 + // [178] phi (word) divr16u::dividend#5 = <(const nomodify dword) PI2_u4f28 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta.z divr16u.dividend+1 - // [179] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy + // [178] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy jsr divr16u - // [108] (word) divr16u::return#3 ← (word) divr16u::return#0 + // [107] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp __b2 // div32u16u::@2 __b2: - // [109] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - // [110] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + // [108] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + // [109] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda.z quotient_hi sta.z return+2 lda.z quotient_hi+1 @@ -6694,7 +6671,7 @@ div32u16u: { jmp __breturn // div32u16u::@return __breturn: - // [111] return + // [110] return rts } // sin16s @@ -6703,19 +6680,19 @@ div32u16u: { // result: signed int sin(x) s[0.15] - using the full range -$7fff - $7fff // sin16s(dword zp($a) x) sin16s: { - .label __4 = $1b + .label __4 = $1d .label x = $a .label return = $12 - .label x1 = $1f - .label x2 = $23 - .label x3 = $23 - .label x3_6 = $21 + .label x1 = $21 + .label x2 = $25 + .label x3 = $25 + .label x3_6 = $23 .label usinx = $12 - .label x4 = $23 - .label x5 = $21 - .label x5_128 = $21 + .label x4 = $25 + .label x5 = $23 + .label x5_128 = $23 .label sinx = $12 - // [112] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + // [111] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda.z x+3 cmp #>PI_u4f28>>$10 bcc __b1_from_sin16s @@ -6735,7 +6712,7 @@ sin16s: { jmp __b4 // sin16s::@4 __b4: - // [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 -- vduz1=vduz1_minus_vduc1 + // [112] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 -- vduz1=vduz1_minus_vduc1 lda.z x sec sbc #PI_u4f28>>$10 sta.z x+3 - // [114] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + // [113] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] __b1_from___b4: - // [114] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuyy=vbuc1 + // [113] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuyy=vbuc1 ldy #1 - // [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + // [113] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp __b1 - // [114] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + // [113] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] __b1_from_sin16s: - // [114] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuyy=vbuc1 + // [113] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuyy=vbuc1 ldy #0 - // [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + // [113] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp __b1 // sin16s::@1 __b1: - // [115] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + // [114] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda.z x+3 cmp #>PI_HALF_u4f28>>$10 bcc __b2_from___b1 @@ -6783,7 +6760,7 @@ sin16s: { jmp __b5 // sin16s::@5 __b5: - // [116] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + // [115] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 lda #PI_u4f28>>$10 sbc.z x+3 sta.z x+3 - // [117] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + // [116] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] __b2_from___b1: __b2_from___b5: - // [117] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + // [116] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp __b2 // sin16s::@2 __b2: - // [118] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz2_rol_3 + // [117] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz2_rol_3 lda.z x asl sta.z __4 @@ -6825,53 +6802,53 @@ sin16s: { rol.z __4+1 rol.z __4+2 rol.z __4+3 - // [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 + // [118] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 lda.z __4+2 sta.z x1 lda.z __4+3 sta.z x1+1 - // [120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + // [119] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda.z x1 sta.z mulu16_sel.v1 lda.z x1+1 sta.z mulu16_sel.v1+1 - // [121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + // [120] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda.z x1 sta.z mulu16_sel.v2 lda.z x1+1 sta.z mulu16_sel.v2+1 - // [122] call mulu16_sel - // [197] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + // [121] call mulu16_sel + // [196] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from___b2: - // [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + // [196] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - // [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - // [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + // [196] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + // [196] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - // [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + // [122] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 jmp __b7 // sin16s::@7 __b7: - // [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + // [123] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda.z mulu16_sel.return sta.z x2 lda.z mulu16_sel.return+1 sta.z x2+1 - // [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - // [126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + // [124] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + // [125] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda.z x1 sta.z mulu16_sel.v2 lda.z x1+1 sta.z mulu16_sel.v2+1 - // [127] call mulu16_sel - // [197] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] + // [126] call mulu16_sel + // [196] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] mulu16_sel_from___b7: - // [197] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 + // [196] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - // [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy - // [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy + // [196] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy + // [196] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - // [128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + // [127] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda.z mulu16_sel.return sta.z mulu16_sel.return_1 lda.z mulu16_sel.return+1 @@ -6879,26 +6856,26 @@ sin16s: { jmp __b8 // sin16s::@8 __b8: - // [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - // [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - // [131] call mulu16_sel - // [197] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + // [128] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + // [129] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + // [130] call mulu16_sel + // [196] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from___b8: - // [197] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + // [196] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - // [197] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 + // [196] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta.z mulu16_sel.v2 lda #>$10000/6 sta.z mulu16_sel.v2+1 - // [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + // [196] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - // [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + // [131] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 jmp __b9 // sin16s::@9 __b9: - // [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - // [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + // [132] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + // [133] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z x1 sec sbc.z x3_6 @@ -6906,21 +6883,21 @@ sin16s: { lda.z x1+1 sbc.z x3_6+1 sta.z usinx+1 - // [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - // [136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + // [134] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + // [135] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda.z x1 sta.z mulu16_sel.v2 lda.z x1+1 sta.z mulu16_sel.v2+1 - // [137] call mulu16_sel - // [197] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + // [136] call mulu16_sel + // [196] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from___b9: - // [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + // [196] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - // [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy - // [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + // [196] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy + // [196] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - // [138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + // [137] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda.z mulu16_sel.return sta.z mulu16_sel.return_1 lda.z mulu16_sel.return+1 @@ -6928,27 +6905,27 @@ sin16s: { jmp __b10 // sin16s::@10 __b10: - // [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - // [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - // [141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + // [138] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + // [139] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + // [140] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda.z x1 sta.z mulu16_sel.v2 lda.z x1+1 sta.z mulu16_sel.v2+1 - // [142] call mulu16_sel - // [197] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + // [141] call mulu16_sel + // [196] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from___b10: - // [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + // [196] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - // [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - // [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + // [196] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + // [196] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - // [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + // [142] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 jmp __b11 // sin16s::@11 __b11: - // [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - // [145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 + // [143] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + // [144] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 lsr.z x5_128+1 ror.z x5_128 lsr.z x5_128+1 @@ -6957,7 +6934,7 @@ sin16s: { ror.z x5_128 lsr.z x5_128+1 ror.z x5_128 - // [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + // [145] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z usinx clc adc.z x5_128 @@ -6965,13 +6942,13 @@ sin16s: { lda.z usinx+1 adc.z x5_128+1 sta.z usinx+1 - // [147] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuyy_eq_0_then_la1 + // [146] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuyy_eq_0_then_la1 cpy #0 beq __b12 jmp __b6 // sin16s::@6 __b6: - // [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + // [147] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc.z sinx @@ -6979,21 +6956,21 @@ sin16s: { lda #0 sbc.z sinx+1 sta.z sinx+1 - // [149] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] + // [148] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] __b3_from___b12: __b3_from___b6: - // [149] phi (signed word) sin16s::return#1 = (signed word) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy + // [148] phi (signed word) sin16s::return#1 = (signed word) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy jmp __b3 // sin16s::@3 __b3: jmp __breturn // sin16s::@return __breturn: - // [150] return + // [149] return rts // sin16s::@12 __b12: - // [151] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + // [150] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 jmp __b3_from___b12 } // mul16s @@ -7006,38 +6983,38 @@ mul16s: { .label m = $e .label return = $e .label a = $12 - // [152] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + // [151] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda.z a sta.z mul16u.a lda.z a+1 sta.z mul16u.a+1 - // [153] call mul16u - // [206] phi from mul16s to mul16u [phi:mul16s->mul16u] + // [152] call mul16u + // [205] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - // [206] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy - // [206] phi (word) mul16u::b#2 = (word)(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + // [205] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy + // [205] phi (word) mul16u::b#2 = (word)(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl sta.z mul16u.b+1 jsr mul16u - // [154] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + // [153] (dword) mul16u::return#2 ← (dword) mul16u::res#2 jmp __b4 // mul16s::@4 __b4: - // [155] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - // [156] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + // [154] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + // [155] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda.z a+1 bpl __b1_from___b4 jmp __b3 // mul16s::@3 __b3: - // [157] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + // [156] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda.z m+2 sta.z __6 lda.z m+3 sta.z __6+1 - // [158] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + // [157] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 lda.z __11 sec sbc #sin16s_gen2.ampl sta.z __11+1 - // [159] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 -- vduz1=vduz1_sethi_vwuz2 + // [158] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 -- vduz1=vduz1_sethi_vwuz2 lda.z __11 sta.z m+2 lda.z __11+1 sta.z m+3 - // [160] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] + // [159] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] __b1_from___b3: __b1_from___b4: - // [160] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy + // [159] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy jmp __b1 // mul16s::@1 __b1: jmp __b2 // mul16s::@2 __b2: - // [161] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 + // [160] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 jmp __breturn // mul16s::@return __breturn: - // [162] return + // [161] return rts } // wrap_y // wrap_y(signed word zp($12) y) wrap_y: { .label y = $12 - // [164] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] + // [163] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] __b1_from_wrap_y: __b1_from___b2: - // [164] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy + // [163] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy jmp __b1 // wrap_y::@1 __b1: - // [165] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 -- vwsz1_ge_vwsc1_then_la1 + // [164] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 -- vwsz1_ge_vwsc1_then_la1 lda.z y cmp #<$c8 lda.z y+1 @@ -7087,29 +7064,29 @@ wrap_y: { eor #$80 !: bpl __b2 - // [166] phi from wrap_y::@1 wrap_y::@4 to wrap_y::@3 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3] + // [165] phi from wrap_y::@1 wrap_y::@4 to wrap_y::@3 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3] __b3_from___b1: __b3_from___b4: - // [166] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3#0] -- register_copy + // [165] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3#0] -- register_copy jmp __b3 // wrap_y::@3 __b3: - // [167] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 -- vwsz1_lt_0_then_la1 + // [166] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 -- vwsz1_lt_0_then_la1 lda.z y+1 bmi __b4 jmp __b5 // wrap_y::@5 __b5: - // [168] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 -- vbuaa=_byte_vwsz1 + // [167] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 -- vbuaa=_byte_vwsz1 lda.z y jmp __breturn // wrap_y::@return __breturn: - // [169] return + // [168] return rts // wrap_y::@4 __b4: - // [170] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 -- vwsz1=vwsz1_plus_vwsc1 + // [169] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 -- vwsz1=vwsz1_plus_vwsc1 clc lda.z y adc #<$c8 @@ -7120,7 +7097,7 @@ wrap_y: { jmp __b3_from___b4 // wrap_y::@2 __b2: - // [171] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 -- vwsz1=vwsz1_minus_vwsc1 + // [170] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 -- vwsz1=vwsz1_minus_vwsc1 lda.z y sec sbc #<$c8 @@ -7137,19 +7114,19 @@ bitmap_plot: { .label __0 = $25 .label plotter = $23 .label x = 8 - // [173] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + // [172] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_yhi,x sta.z plotter+1 lda bitmap_plot_ylo,x sta.z plotter - // [174] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#2 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + // [173] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#2 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda.z x and #<$fff8 sta.z __0 lda.z x+1 and #>$fff8 sta.z __0+1 - // [175] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2 + // [174] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2 lda.z plotter clc adc.z __0 @@ -7157,9 +7134,9 @@ bitmap_plot: { lda.z plotter+1 adc.z __0+1 sta.z plotter+1 - // [176] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#2 -- vbuxx=_lo_vwuz1 + // [175] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#2 -- vbuxx=_lo_vwuz1 ldx.z x - // [177] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx + // [176] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx lda bitmap_plot_bit,x ldy #0 ora (plotter),y @@ -7168,7 +7145,7 @@ bitmap_plot: { jmp __breturn // bitmap_plot::@return __breturn: - // [178] return + // [177] return rts } // divr16u @@ -7176,64 +7153,64 @@ bitmap_plot: { // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division -// divr16u(word zp($23) dividend, word zp($12) rem) +// divr16u(word zp($25) dividend, word zp($12) rem) divr16u: { .label rem = $12 - .label dividend = $23 - .label quotient = $25 - .label return = $25 - // [180] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + .label dividend = $25 + .label quotient = $14 + .label return = $14 + // [179] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] __b1_from_divr16u: - // [180] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + // [179] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - // [180] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 + // [179] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 lda #<0 sta.z quotient lda #>0 sta.z quotient+1 - // [180] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - // [180] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + // [179] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + // [179] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp __b1 - // [180] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + // [179] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] __b1_from___b3: - // [180] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - // [180] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - // [180] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - // [180] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + // [179] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + // [179] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + // [179] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + // [179] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp __b1 // divr16u::@1 __b1: - // [181] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [180] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z rem rol.z rem+1 - // [182] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + // [181] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda.z dividend+1 - // [183] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + // [182] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - // [184] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + // [183] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq __b2_from___b1 jmp __b4 // divr16u::@4 __b4: - // [185] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + // [184] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora.z rem sta.z rem - // [186] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + // [185] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] __b2_from___b1: __b2_from___b4: - // [186] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + // [185] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp __b2 // divr16u::@2 __b2: - // [187] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [186] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z dividend rol.z dividend+1 - // [188] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [187] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z quotient rol.z quotient+1 - // [189] if((word) divr16u::rem#6<(const nomodify word) SIN_SIZE) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + // [188] if((word) divr16u::rem#6<(const nomodify word) SIN_SIZE) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda.z rem+1 cmp #>SIN_SIZE bcc __b3_from___b2 @@ -7245,12 +7222,12 @@ divr16u: { jmp __b5 // divr16u::@5 __b5: - // [190] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + // [189] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc.z quotient bne !+ inc.z quotient+1 !: - // [191] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const nomodify word) SIN_SIZE -- vwuz1=vwuz1_minus_vwuc1 + // [190] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const nomodify word) SIN_SIZE -- vwuz1=vwuz1_minus_vwuc1 lda.z rem sec sbc #SIN_SIZE sta.z rem+1 - // [192] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + // [191] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] __b3_from___b2: __b3_from___b5: - // [192] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - // [192] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + // [191] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + // [191] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp __b3 // divr16u::@3 __b3: - // [193] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + // [192] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - // [194] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + // [193] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne __b1_from___b3 jmp __b6 // divr16u::@6 __b6: - // [195] (word) rem16u#0 ← (word) divr16u::rem#11 + // [194] (word) rem16u#0 ← (word) divr16u::rem#11 jmp __breturn // divr16u::@return __breturn: - // [196] return + // [195] return rts } // mulu16_sel // Calculate val*val for two unsigned int values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip -// mulu16_sel(word zp($23) v1, word zp($25) v2, byte register(X) select) +// mulu16_sel(word zp($25) v1, word zp($14) v2, byte register(X) select) mulu16_sel: { .label __0 = $e .label __1 = $e - .label v1 = $23 - .label v2 = $25 - .label return = $21 - .label return_1 = $23 - // [198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + .label v1 = $25 + .label v2 = $14 + .label return = $23 + .label return_1 = $25 + // [197] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda.z v1 sta.z mul16u.a lda.z v1+1 sta.z mul16u.a+1 - // [199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - // [200] call mul16u - // [206] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + // [198] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + // [199] call mul16u + // [205] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - // [206] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - // [206] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + // [205] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + // [205] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - // [201] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + // [200] (dword) mul16u::return#3 ← (dword) mul16u::res#2 jmp __b1 // mulu16_sel::@1 __b1: - // [202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - // [203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + // [201] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + // [202] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -7320,7 +7297,7 @@ mulu16_sel: { dex bne !- !e: - // [204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + // [203] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda.z __1+2 sta.z return lda.z __1+3 @@ -7328,19 +7305,19 @@ mulu16_sel: { jmp __breturn // mulu16_sel::@return __breturn: - // [205] return + // [204] return rts } // mul16u // Perform binary multiplication of two unsigned 16-bit unsigned ints into a 32-bit unsigned long -// mul16u(word zp($19) a, word zp($25) b) +// mul16u(word zp($1b) a, word zp($14) b) mul16u: { - .label mb = $1b - .label a = $19 + .label mb = $1d + .label a = $1b .label res = $e .label return = $e - .label b = $25 - // [207] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 -- vduz1=_dword_vwuz2 + .label b = $14 + // [206] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda.z b sta.z mb lda.z b+1 @@ -7348,10 +7325,10 @@ mul16u: { lda #0 sta.z mb+2 sta.z mb+3 - // [208] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + // [207] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] __b1_from_mul16u: - // [208] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - // [208] phi (dword) mul16u::res#2 = (dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vduc1 + // [207] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + // [207] phi (dword) mul16u::res#2 = (dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vduc1 lda #<0 sta.z res lda #>0 @@ -7360,11 +7337,11 @@ mul16u: { sta.z res+2 lda #>0>>$10 sta.z res+3 - // [208] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + // [207] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp __b1 // mul16u::@1 __b1: - // [209] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + // [208] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda.z a bne __b2 lda.z a+1 @@ -7372,20 +7349,20 @@ mul16u: { jmp __breturn // mul16u::@return __breturn: - // [210] return + // [209] return rts // mul16u::@2 __b2: - // [211] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 + // [210] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 lda #1 and.z a - // [212] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 + // [211] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq __b3_from___b2 jmp __b4 // mul16u::@4 __b4: - // [213] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + // [212] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda.z res clc adc.z mb @@ -7399,26 +7376,26 @@ mul16u: { lda.z res+3 adc.z mb+3 sta.z res+3 - // [214] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + // [213] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] __b3_from___b2: __b3_from___b4: - // [214] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + // [213] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy jmp __b3 // mul16u::@3 __b3: - // [215] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + // [214] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr.z a+1 ror.z a - // [216] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + // [215] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl.z mb rol.z mb+1 rol.z mb+2 rol.z mb+3 - // [208] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + // [207] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] __b1_from___b3: - // [208] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - // [208] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - // [208] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + // [207] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + // [207] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + // [207] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp __b1 } // File Data @@ -7798,7 +7775,7 @@ FINAL SYMBOL TABLE (byte~) bitmap_init::$4 reg byte a 202.0 (byte~) bitmap_init::$5 reg byte a 202.0 (byte~) bitmap_init::$6 reg byte a 202.0 -(byte~) bitmap_init::$7 zp[1]:20 50.5 +(byte~) bitmap_init::$7 zp[1]:22 50.5 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 @@ -7849,12 +7826,12 @@ FINAL SYMBOL TABLE (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:31 40.4 +(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:33 40.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:37 202.0 +(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:20 202.0 (dword) div32u16u::return -(dword) div32u16u::return#0 return zp[4]:21 37.33333333333333 -(dword) div32u16u::return#2 return zp[4]:21 22.0 +(dword) div32u16u::return#0 return zp[4]:23 37.33333333333333 +(dword) div32u16u::return#2 return zp[4]:23 22.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) (byte~) divr16u::$1 reg byte a 20002.0 (byte~) divr16u::$2 reg byte a 20002.0 @@ -7866,17 +7843,17 @@ FINAL SYMBOL TABLE (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:35 2500.25 -(word) divr16u::dividend#3 dividend zp[2]:35 4429.142857142857 -(word) divr16u::dividend#5 dividend zp[2]:35 1001.0 +(word) divr16u::dividend#0 dividend zp[2]:37 2500.25 +(word) divr16u::dividend#3 dividend zp[2]:37 4429.142857142857 +(word) divr16u::dividend#5 dividend zp[2]:37 1001.0 (word) divr16u::divisor (byte) divr16u::i (byte) divr16u::i#1 reg byte x 15001.5 (byte) divr16u::i#2 reg byte x 1538.6153846153845 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:37 15001.5 -(word) divr16u::quotient#2 quotient zp[2]:37 10001.0 -(word) divr16u::quotient#3 quotient zp[2]:37 2500.25 +(word) divr16u::quotient#1 quotient zp[2]:20 15001.5 +(word) divr16u::quotient#2 quotient zp[2]:20 10001.0 +(word) divr16u::quotient#3 quotient zp[2]:20 2500.25 (word) divr16u::rem (word) divr16u::rem#0 rem zp[2]:18 7500.75 (word) divr16u::rem#1 rem zp[2]:18 20002.0 @@ -7887,9 +7864,9 @@ FINAL SYMBOL TABLE (word) divr16u::rem#5 rem zp[2]:18 21003.0 (word) divr16u::rem#6 rem zp[2]:18 10001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:37 4315.0 -(word) divr16u::return#2 return zp[2]:37 202.0 -(word) divr16u::return#3 return zp[2]:37 202.0 +(word) divr16u::return#0 return zp[2]:20 4315.0 +(word) divr16u::return#2 return zp[2]:20 202.0 +(word) divr16u::return#3 return zp[2]:20 202.0 (void()) main() (label) main::@1 (label) main::@2 @@ -7953,18 +7930,18 @@ FINAL SYMBOL TABLE (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:25 1.0000001E7 -(word) mul16u::a#1 a zp[2]:25 2002.0 -(word) mul16u::a#2 a zp[2]:25 10001.0 -(word) mul16u::a#3 a zp[2]:25 6683334.166666666 -(word) mul16u::a#6 a zp[2]:25 55501.5 +(word) mul16u::a#0 a zp[2]:27 1.0000001E7 +(word) mul16u::a#1 a zp[2]:27 2002.0 +(word) mul16u::a#2 a zp[2]:27 10001.0 +(word) mul16u::a#3 a zp[2]:27 6683334.166666666 +(word) mul16u::a#6 a zp[2]:27 55501.5 (word) mul16u::b -(word) mul16u::b#1 b zp[2]:37 20002.0 -(word) mul16u::b#2 b zp[2]:37 10001.0 +(word) mul16u::b#1 b zp[2]:20 20002.0 +(word) mul16u::b#2 b zp[2]:20 10001.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:27 200002.0 -(dword) mul16u::mb#1 mb zp[4]:27 2.0000002E7 -(dword) mul16u::mb#2 mb zp[4]:27 4300000.571428571 +(dword) mul16u::mb#0 mb zp[4]:29 200002.0 +(dword) mul16u::mb#1 mb zp[4]:29 2.0000002E7 +(dword) mul16u::mb#2 mb zp[4]:29 4300000.571428571 (dword) mul16u::res (dword) mul16u::res#1 res zp[4]:14 2.0000002E7 (dword) mul16u::res#2 res zp[4]:14 4287286.428571429 @@ -7978,34 +7955,33 @@ FINAL SYMBOL TABLE (label) mulu16_sel::@1 (label) mulu16_sel::@return (word) mulu16_sel::return -(word) mulu16_sel::return#0 return zp[2]:33 2002.0 -(word) mulu16_sel::return#1 return_1 zp[2]:35 2002.0 -(word) mulu16_sel::return#10 return_1 zp[2]:35 2002.0 -(word) mulu16_sel::return#11 return zp[2]:33 2002.0 -(word) mulu16_sel::return#12 return zp[2]:33 2143.714285714286 -(word) mulu16_sel::return#2 return zp[2]:33 2002.0 +(word) mulu16_sel::return#0 return zp[2]:35 2002.0 +(word) mulu16_sel::return#1 return_1 zp[2]:37 2002.0 +(word) mulu16_sel::return#10 return_1 zp[2]:37 2002.0 +(word) mulu16_sel::return#11 return zp[2]:35 2002.0 +(word) mulu16_sel::return#12 return zp[2]:35 2143.714285714286 +(word) mulu16_sel::return#2 return zp[2]:35 2002.0 (byte) mulu16_sel::select (byte) mulu16_sel::select#5 reg byte x 1666.8333333333333 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 v1 zp[2]:35 1001.0 -(word) mulu16_sel::v1#1 v1 zp[2]:35 1001.0 -(word) mulu16_sel::v1#2 v1 zp[2]:35 2002.0 -(word) mulu16_sel::v1#3 v1 zp[2]:35 1001.0 -(word) mulu16_sel::v1#4 v1 zp[2]:35 1001.0 -(word) mulu16_sel::v1#5 v1 zp[2]:35 15006.0 +(word) mulu16_sel::v1#0 v1 zp[2]:37 1001.0 +(word) mulu16_sel::v1#1 v1 zp[2]:37 1001.0 +(word) mulu16_sel::v1#2 v1 zp[2]:37 2002.0 +(word) mulu16_sel::v1#3 v1 zp[2]:37 1001.0 +(word) mulu16_sel::v1#4 v1 zp[2]:37 1001.0 +(word) mulu16_sel::v1#5 v1 zp[2]:37 15006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 v2 zp[2]:37 2002.0 -(word) mulu16_sel::v2#1 v2 zp[2]:37 2002.0 -(word) mulu16_sel::v2#3 v2 zp[2]:37 2002.0 -(word) mulu16_sel::v2#4 v2 zp[2]:37 2002.0 -(word) mulu16_sel::v2#5 v2 zp[2]:37 7002.5 +(word) mulu16_sel::v2#0 v2 zp[2]:20 2002.0 +(word) mulu16_sel::v2#1 v2 zp[2]:20 2002.0 +(word) mulu16_sel::v2#3 v2 zp[2]:20 2002.0 +(word) mulu16_sel::v2#4 v2 zp[2]:20 2002.0 +(word) mulu16_sel::v2#5 v2 zp[2]:20 7002.5 (word) rem16u (word) rem16u#0 rem16u zp[2]:18 220.39999999999998 (void()) render_sine() (signed word*~) render_sine::$1 zp[2]:18 202.0 -(word~) render_sine::$10 zp[2]:18 202.0 -(word~) render_sine::$11 zp[2]:18 202.0 -(signed word*~) render_sine::$4 zp[2]:18 202.0 +(word~) render_sine::$11 zp[2]:33 30.299999999999997 +(signed word*~) render_sine::$4 zp[2]:33 202.0 (label) render_sine::@1 (label) render_sine::@2 (label) render_sine::@3 @@ -8019,12 +7995,12 @@ FINAL SYMBOL TABLE (signed word) render_sine::sin2_val#0 sin2_val zp[2]:18 202.0 (word) render_sine::sin_idx (word) render_sine::sin_idx#1 sin_idx zp[2]:6 202.0 -(word) render_sine::sin_idx#2 sin_idx zp[2]:6 19.423076923076923 +(word) render_sine::sin_idx#2 sin_idx zp[2]:6 16.16 (signed word) render_sine::sin_val (signed word) render_sine::sin_val#0 sin_val zp[2]:18 202.0 (word) render_sine::xpos (word) render_sine::xpos#1 xpos zp[2]:8 101.0 -(word) render_sine::xpos#3 xpos zp[2]:8 18.363636363636363 +(word) render_sine::xpos#3 xpos zp[2]:8 19.238095238095237 (word) render_sine::xpos#9 xpos zp[2]:8 101.0 (byte) render_sine::ypos (byte) render_sine::ypos#0 reg byte x 101.0 @@ -8032,7 +8008,7 @@ FINAL SYMBOL TABLE (byte) render_sine::ypos2#0 reg byte x 101.0 (const signed word*) sin[(number) $200] = { fill( $200, 0) } (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 zp[4]:27 2002.0 +(dword~) sin16s::$4 zp[4]:29 2002.0 (label) sin16s::@1 (label) sin16s::@10 (label) sin16s::@11 @@ -8064,22 +8040,22 @@ FINAL SYMBOL TABLE (dword) sin16s::x#4 x zp[4]:10 2502.5 (dword) sin16s::x#6 x zp[4]:10 3003.0 (word) sin16s::x1 -(word) sin16s::x1#0 x1 zp[2]:31 318.5 +(word) sin16s::x1#0 x1 zp[2]:33 318.5 (word) sin16s::x2 -(word) sin16s::x2#0 x2 zp[2]:35 2002.0 +(word) sin16s::x2#0 x2 zp[2]:37 2002.0 (word) sin16s::x3 -(word) sin16s::x3#0 x3 zp[2]:35 500.5 +(word) sin16s::x3#0 x3 zp[2]:37 500.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 x3_6 zp[2]:33 2002.0 +(word) sin16s::x3_6#0 x3_6 zp[2]:35 2002.0 (word) sin16s::x4 -(word) sin16s::x4#0 x4 zp[2]:35 2002.0 +(word) sin16s::x4#0 x4 zp[2]:37 2002.0 (word) sin16s::x5 -(word) sin16s::x5#0 x5 zp[2]:33 2002.0 +(word) sin16s::x5#0 x5 zp[2]:35 2002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 x5_128 zp[2]:33 2002.0 +(word) sin16s::x5_128#0 x5_128 zp[2]:35 2002.0 (void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max) (signed dword~) sin16s_gen2::$6 zp[4]:14 202.0 -(word~) sin16s_gen2::$8 zp[2]:25 101.0 +(word~) sin16s_gen2::$8 zp[2]:27 101.0 (label) sin16s_gen2::@1 (label) sin16s_gen2::@2 (label) sin16s_gen2::@3 @@ -8100,7 +8076,7 @@ FINAL SYMBOL TABLE (signed word*) sin16s_gen2::sintab#0 sintab zp[2]:6 67.33333333333333 (signed word*) sin16s_gen2::sintab#2 sintab zp[2]:6 27.545454545454547 (dword) sin16s_gen2::step -(dword) sin16s_gen2::step#0 step zp[4]:21 7.466666666666667 +(dword) sin16s_gen2::step#0 step zp[4]:23 7.466666666666667 (word) sin16s_gen2::wavelength (dword) sin16s_gen2::x (dword) sin16s_gen2::x#1 x zp[4]:2 101.0 @@ -8140,25 +8116,25 @@ reg byte y [ sin16s::isUpper#2 ] zp[4]:10 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[4]:14 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$6 mulu16_sel::$0 mulu16_sel::$1 ] reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] -zp[2]:18 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$10 render_sine::$1 render_sine::$11 render_sine::$4 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] +zp[2]:18 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$1 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] +zp[2]:20 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 mul16u::b#2 mul16u::b#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] reg byte x [ mulu16_sel::select#5 ] -zp[1]:20 [ bitmap_init::$7 ] +zp[1]:22 [ bitmap_init::$7 ] reg byte a [ bitmap_init::$4 ] reg byte a [ bitmap_init::$5 ] reg byte a [ bitmap_init::$6 ] -zp[4]:21 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ] -zp[2]:25 [ sin16s_gen2::$8 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] +zp[4]:23 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ] +zp[2]:27 [ sin16s_gen2::$8 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] reg byte a [ wrap_y::return#0 ] reg byte x [ render_sine::ypos#0 ] reg byte a [ wrap_y::return#1 ] reg byte x [ render_sine::ypos2#0 ] -zp[4]:27 [ sin16s::$4 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] -zp[2]:31 [ sin16s::x1#0 div32u16u::quotient_hi#0 ] -zp[2]:33 [ mul16s::$6 mul16s::$11 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] +zp[4]:29 [ sin16s::$4 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] +zp[2]:33 [ mul16s::$6 mul16s::$11 sin16s::x1#0 div32u16u::quotient_hi#0 render_sine::$11 render_sine::$4 ] reg byte a [ wrap_y::return#2 ] -zp[2]:35 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] -zp[2]:37 [ bitmap_plot::$0 mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 mul16u::b#2 mul16u::b#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] +zp[2]:35 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] +zp[2]:37 [ bitmap_plot::$0 mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] reg byte x [ bitmap_plot::$1 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] @@ -8166,7 +8142,7 @@ reg byte a [ mul16u::$1 ] FINAL ASSEMBLER -Score: 25034 +Score: 24804 // File Comments // Generate a big sinus and plot it on a bitmap @@ -8286,7 +8262,7 @@ main: { // bitmap_init // Initialize bitmap plotting tables bitmap_init: { - .label __7 = $14 + .label __7 = $16 .label yoffs = 8 // [19] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] // [19] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 @@ -8393,15 +8369,15 @@ bitmap_clear: { .const col = WHITE*$10 // memset(bitmap_screen, col, 1000uw) // [41] call memset - // [93] phi from bitmap_clear to memset [phi:bitmap_clear->memset] - // [93] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 + // [92] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + // [92] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 ldx #col - // [93] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 + // [92] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 lda #SCREEN sta.z memset.str+1 - // [93] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 + // [92] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 lda #<$3e8 sta.z memset.num lda #>$3e8 @@ -8411,15 +8387,15 @@ bitmap_clear: { // bitmap_clear::@1 // memset(bitmap_gfx, 0, 8000uw) // [43] call memset - // [93] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] - // [93] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 + // [92] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + // [92] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 ldx #0 - // [93] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 + // [92] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 lda #BITMAP sta.z memset.str+1 - // [93] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 + // [92] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 lda #<$1f40 sta.z memset.num lda #>$1f40 @@ -8440,8 +8416,8 @@ sin16s_gen2: { .const max = $140 .label ampl = max-min .label __6 = $e - .label __8 = $19 - .label step = $15 + .label __8 = $1b + .label step = $17 .label sintab = 6 // u[4.28] // Iterate over the table @@ -8449,7 +8425,7 @@ sin16s_gen2: { .label i = 8 // div32u16u(PI2_u4f28, wavelength) // [46] call div32u16u - // [102] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + // [101] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] jsr div32u16u // div32u16u(PI2_u4f28, wavelength) // [47] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 @@ -8567,9 +8543,8 @@ sin16s_gen2: { // render_sine render_sine: { .label __1 = $12 - .label __4 = $12 - .label __10 = $12 - .label __11 = $12 + .label __4 = $21 + .label __11 = $21 .label sin_val = $12 .label sin2_val = $12 .label xpos = 8 @@ -8601,19 +8576,19 @@ render_sine: { // render_sine::@2 __b2: // sin+sin_idx - // [68] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 + // [68] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 lda.z sin_idx asl - sta.z __10 + sta.z __11 lda.z sin_idx+1 rol - sta.z __10+1 - // [69] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$10 -- pwsz1=pwsc1_plus_vwuz1 + sta.z __11+1 + // [69] (signed word*~) render_sine::$1 ← (const signed word*) sin + (word~) render_sine::$11 -- pwsz1=pwsc1_plus_vwuz2 + lda.z __11 clc - lda.z __1 adc #sin sta.z __1+1 // sin_val = *(sin+sin_idx) @@ -8629,8 +8604,8 @@ render_sine: { // wrap_y(sin_val) // [71] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 // [72] call wrap_y - // [163] phi from render_sine::@2 to wrap_y [phi:render_sine::@2->wrap_y] - // [163] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@2->wrap_y#0] -- register_copy + // [162] phi from render_sine::@2 to wrap_y [phi:render_sine::@2->wrap_y] + // [162] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@2->wrap_y#0] -- register_copy jsr wrap_y // wrap_y(sin_val) // [73] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 @@ -8642,20 +8617,13 @@ render_sine: { // [75] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 // [76] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 // [77] call bitmap_plot - // [172] phi from render_sine::@4 to bitmap_plot [phi:render_sine::@4->bitmap_plot] - // [172] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@4->bitmap_plot#0] -- register_copy - // [172] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@4->bitmap_plot#1] -- register_copy + // [171] phi from render_sine::@4 to bitmap_plot [phi:render_sine::@4->bitmap_plot] + // [171] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@4->bitmap_plot#0] -- register_copy + // [171] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@4->bitmap_plot#1] -- register_copy jsr bitmap_plot // render_sine::@5 // sin2+sin_idx - // [78] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 - lda.z sin_idx - asl - sta.z __11 - lda.z sin_idx+1 - rol - sta.z __11+1 - // [79] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 -- pwsz1=pwsc1_plus_vwuz1 + // [78] (signed word*~) render_sine::$4 ← (const signed word*) sin2 + (word~) render_sine::$11 -- pwsz1=pwsc1_plus_vwuz1 clc lda.z __4 adc #sin2 sta.z __4+1 // sin2_val = *(sin2+sin_idx) - // [80] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) -- vwsz1=_deref_pwsz1 + // [79] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) -- vwsz1=_deref_pwsz2 ldy #0 - lda (sin2_val),y - pha - iny - lda (sin2_val),y - sta.z sin2_val+1 - pla + lda (__4),y sta.z sin2_val + iny + lda (__4),y + sta.z sin2_val+1 // wrap_y(sin2_val+10) - // [81] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz1_plus_vbsc1 + // [80] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz1_plus_vbsc1 lda.z wrap_y.y clc adc #<$a @@ -8682,52 +8648,52 @@ render_sine: { lda.z wrap_y.y+1 adc #>$a sta.z wrap_y.y+1 - // [82] call wrap_y - // [163] phi from render_sine::@5 to wrap_y [phi:render_sine::@5->wrap_y] - // [163] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@5->wrap_y#0] -- register_copy + // [81] call wrap_y + // [162] phi from render_sine::@5 to wrap_y [phi:render_sine::@5->wrap_y] + // [162] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@5->wrap_y#0] -- register_copy jsr wrap_y // wrap_y(sin2_val+10) - // [83] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 + // [82] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 // render_sine::@6 // ypos2 = wrap_y(sin2_val+10) - // [84] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuxx=vbuaa + // [83] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuxx=vbuaa tax // bitmap_plot(xpos,ypos2) - // [85] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 - // [86] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 - // [87] call bitmap_plot - // [172] phi from render_sine::@6 to bitmap_plot [phi:render_sine::@6->bitmap_plot] - // [172] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@6->bitmap_plot#0] -- register_copy - // [172] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@6->bitmap_plot#1] -- register_copy + // [84] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 + // [85] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 + // [86] call bitmap_plot + // [171] phi from render_sine::@6 to bitmap_plot [phi:render_sine::@6->bitmap_plot] + // [171] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@6->bitmap_plot#0] -- register_copy + // [171] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@6->bitmap_plot#1] -- register_copy jsr bitmap_plot // render_sine::@7 // xpos++; - // [88] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 + // [87] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 inc.z xpos bne !+ inc.z xpos+1 !: // if(xpos==320) - // [89] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 -- vwuz1_neq_vwuc1_then_la1 + // [88] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@8 -- vwuz1_neq_vwuc1_then_la1 lda.z xpos+1 cmp #>$140 bne __b3 lda.z xpos cmp #<$140 bne __b3 - // [91] phi from render_sine::@7 to render_sine::@3 [phi:render_sine::@7->render_sine::@3] - // [91] phi (word) render_sine::xpos#9 = (byte) 0 [phi:render_sine::@7->render_sine::@3#0] -- vwuz1=vbuc1 + // [90] phi from render_sine::@7 to render_sine::@3 [phi:render_sine::@7->render_sine::@3] + // [90] phi (word) render_sine::xpos#9 = (byte) 0 [phi:render_sine::@7->render_sine::@3#0] -- vwuz1=vbuc1 lda #<0 sta.z xpos sta.z xpos+1 - // [90] phi from render_sine::@7 to render_sine::@8 [phi:render_sine::@7->render_sine::@8] + // [89] phi from render_sine::@7 to render_sine::@8 [phi:render_sine::@7->render_sine::@8] // render_sine::@8 - // [91] phi from render_sine::@8 to render_sine::@3 [phi:render_sine::@8->render_sine::@3] - // [91] phi (word) render_sine::xpos#9 = (word) render_sine::xpos#1 [phi:render_sine::@8->render_sine::@3#0] -- register_copy + // [90] phi from render_sine::@8 to render_sine::@3 [phi:render_sine::@8->render_sine::@3] + // [90] phi (word) render_sine::xpos#9 = (word) render_sine::xpos#1 [phi:render_sine::@8->render_sine::@3#0] -- register_copy // render_sine::@3 __b3: // for(unsigned int sin_idx=0; sin_idx0) - // [94] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + // [93] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 lda.z num bne !+ lda.z num+1 @@ -8754,7 +8720,7 @@ memset: { !: // memset::@1 // end = (char*)str + num - // [95] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 + // [94] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 lda.z end clc adc.z str @@ -8762,13 +8728,13 @@ memset: { lda.z end+1 adc.z str+1 sta.z end+1 - // [96] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 - // [97] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] - // [97] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy + // [95] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 + // [96] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] + // [96] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy // memset::@2 __b2: // for(char* dst = str; dst!=end; dst++) - // [98] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 + // [97] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 lda.z dst+1 cmp.z end+1 bne __b3 @@ -8778,17 +8744,17 @@ memset: { // memset::@return __breturn: // } - // [99] return + // [98] return rts // memset::@3 __b3: // *dst = c - // [100] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuxx + // [99] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuxx txa ldy #0 sta (dst),y // for(char* dst = str; dst!=end; dst++) - // [101] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [100] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 @@ -8799,49 +8765,49 @@ memset: { // Divide unsigned 32-bit unsigned long dividend with a 16-bit unsigned int divisor // The 16-bit unsigned int remainder can be found in rem16u after the division div32u16u: { - .label quotient_hi = $1f - .label quotient_lo = $25 - .label return = $15 + .label quotient_hi = $21 + .label quotient_lo = $14 + .label return = $17 // divr16u(>dividend, divisor, 0) - // [103] call divr16u - // [179] phi from div32u16u to divr16u [phi:div32u16u->divr16u] - // [179] phi (word) divr16u::dividend#5 = >(const nomodify dword) PI2_u4f28 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + // [102] call divr16u + // [178] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + // [178] phi (word) divr16u::dividend#5 = >(const nomodify dword) PI2_u4f28 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta.z divr16u.dividend lda #>PI2_u4f28>>$10 sta.z divr16u.dividend+1 - // [179] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + // [178] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta.z divr16u.rem sta.z divr16u.rem+1 jsr divr16u // divr16u(>dividend, divisor, 0) - // [104] (word) divr16u::return#2 ← (word) divr16u::return#0 + // [103] (word) divr16u::return#2 ← (word) divr16u::return#0 // div32u16u::@1 // quotient_hi = divr16u(>dividend, divisor, 0) - // [105] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + // [104] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda.z divr16u.return sta.z quotient_hi lda.z divr16u.return+1 sta.z quotient_hi+1 // divr16u(divr16u] - // [179] phi (word) divr16u::dividend#5 = <(const nomodify dword) PI2_u4f28 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 + // [105] (word) divr16u::rem#4 ← (word) rem16u#0 + // [106] call divr16u + // [178] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] + // [178] phi (word) divr16u::dividend#5 = <(const nomodify dword) PI2_u4f28 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta.z divr16u.dividend+1 - // [179] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy + // [178] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy jsr divr16u // divr16u(= PI_u4f28 ) - // [112] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + // [111] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda.z x+3 cmp #>PI_u4f28>>$10 bcc __b4 @@ -8893,7 +8859,7 @@ sin16s: { !: // sin16s::@4 // x = x - PI_u4f28 - // [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 -- vduz1=vduz1_minus_vduc1 + // [112] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 -- vduz1=vduz1_minus_vduc1 lda.z x sec sbc #PI_u4f28>>$10 sta.z x+3 - // [114] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] - // [114] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuyy=vbuc1 + // [113] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + // [113] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuyy=vbuc1 ldy #1 - // [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + // [113] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp __b1 - // [114] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + // [113] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] __b4: - // [114] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuyy=vbuc1 + // [113] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuyy=vbuc1 ldy #0 - // [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + // [113] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy // sin16s::@1 __b1: // if(x >= PI_HALF_u4f28 ) - // [115] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + // [114] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda.z x+3 cmp #>PI_HALF_u4f28>>$10 bcc __b2 @@ -8939,7 +8905,7 @@ sin16s: { !: // sin16s::@5 // x = PI_u4f28 - x - // [116] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + // [115] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 lda #PI_u4f28>>$10 sbc.z x+3 sta.z x+3 - // [117] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] - // [117] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + // [116] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + // [116] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy // sin16s::@2 __b2: // x<<3 - // [118] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz2_rol_3 + // [117] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz2_rol_3 lda.z x asl sta.z __4 @@ -8980,81 +8946,81 @@ sin16s: { rol.z __4+2 rol.z __4+3 // x1 = >x<<3 - // [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 + // [118] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 lda.z __4+2 sta.z x1 lda.z __4+3 sta.z x1+1 // mulu16_sel(x1, x1, 0) - // [120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + // [119] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda.z x1 sta.z mulu16_sel.v1 lda.z x1+1 sta.z mulu16_sel.v1+1 - // [121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + // [120] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda.z x1 sta.z mulu16_sel.v2 lda.z x1+1 sta.z mulu16_sel.v2+1 - // [122] call mulu16_sel - // [197] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] - // [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + // [121] call mulu16_sel + // [196] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + // [196] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - // [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - // [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + // [196] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + // [196] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel // mulu16_sel(x1, x1, 0) - // [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + // [122] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 // sin16s::@7 // x2 = mulu16_sel(x1, x1, 0) - // [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + // [123] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda.z mulu16_sel.return sta.z x2 lda.z mulu16_sel.return+1 sta.z x2+1 // mulu16_sel(x2, x1, 1) - // [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - // [126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + // [124] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + // [125] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda.z x1 sta.z mulu16_sel.v2 lda.z x1+1 sta.z mulu16_sel.v2+1 - // [127] call mulu16_sel - // [197] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] - // [197] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 + // [126] call mulu16_sel + // [196] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] + // [196] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - // [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy - // [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy + // [196] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy + // [196] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel // mulu16_sel(x2, x1, 1) - // [128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + // [127] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda.z mulu16_sel.return sta.z mulu16_sel.return_1 lda.z mulu16_sel.return+1 sta.z mulu16_sel.return_1+1 // sin16s::@8 // x3 = mulu16_sel(x2, x1, 1) - // [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + // [128] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 // mulu16_sel(x3, $10000/6, 1) - // [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - // [131] call mulu16_sel - // [197] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] - // [197] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + // [129] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + // [130] call mulu16_sel + // [196] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + // [196] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - // [197] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 + // [196] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta.z mulu16_sel.v2 lda #>$10000/6 sta.z mulu16_sel.v2+1 - // [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + // [196] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel // mulu16_sel(x3, $10000/6, 1) - // [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + // [131] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 // sin16s::@9 // x3_6 = mulu16_sel(x3, $10000/6, 1) - // [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + // [132] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 // usinx = x1 - x3_6 - // [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + // [133] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z x1 sec sbc.z x3_6 @@ -9063,49 +9029,49 @@ sin16s: { sbc.z x3_6+1 sta.z usinx+1 // mulu16_sel(x3, x1, 0) - // [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - // [136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + // [134] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + // [135] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda.z x1 sta.z mulu16_sel.v2 lda.z x1+1 sta.z mulu16_sel.v2+1 - // [137] call mulu16_sel - // [197] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] - // [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + // [136] call mulu16_sel + // [196] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + // [196] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - // [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy - // [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + // [196] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy + // [196] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel // mulu16_sel(x3, x1, 0) - // [138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + // [137] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda.z mulu16_sel.return sta.z mulu16_sel.return_1 lda.z mulu16_sel.return+1 sta.z mulu16_sel.return_1+1 // sin16s::@10 // x4 = mulu16_sel(x3, x1, 0) - // [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + // [138] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 // mulu16_sel(x4, x1, 0) - // [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - // [141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + // [139] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + // [140] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda.z x1 sta.z mulu16_sel.v2 lda.z x1+1 sta.z mulu16_sel.v2+1 - // [142] call mulu16_sel - // [197] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] - // [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + // [141] call mulu16_sel + // [196] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + // [196] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - // [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - // [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + // [196] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + // [196] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel // mulu16_sel(x4, x1, 0) - // [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + // [142] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 // sin16s::@11 // x5 = mulu16_sel(x4, x1, 0) - // [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + // [143] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 // x5_128 = x5>>4 - // [145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 + // [144] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 lsr.z x5_128+1 ror.z x5_128 lsr.z x5_128+1 @@ -9115,7 +9081,7 @@ sin16s: { lsr.z x5_128+1 ror.z x5_128 // usinx = usinx + x5_128 - // [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + // [145] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z usinx clc adc.z x5_128 @@ -9124,12 +9090,12 @@ sin16s: { adc.z x5_128+1 sta.z usinx+1 // if(isUpper!=0) - // [147] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuyy_eq_0_then_la1 + // [146] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuyy_eq_0_then_la1 cpy #0 beq __b3 // sin16s::@6 // sinx = -(signed int)usinx - // [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + // [147] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc.z sinx @@ -9137,16 +9103,16 @@ sin16s: { lda #0 sbc.z sinx+1 sta.z sinx+1 - // [149] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] - // [149] phi (signed word) sin16s::return#1 = (signed word) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy + // [148] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] + // [148] phi (signed word) sin16s::return#1 = (signed word) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy // sin16s::@3 __b3: // sin16s::@return // } - // [150] return + // [149] return rts // sin16s::@12 - // [151] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + // [150] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 } // mul16s // Multiply of two signed ints to a signed long @@ -9159,38 +9125,38 @@ mul16s: { .label return = $e .label a = $12 // mul16u((unsigned int)a, (unsigned int) b) - // [152] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + // [151] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda.z a sta.z mul16u.a lda.z a+1 sta.z mul16u.a+1 - // [153] call mul16u - // [206] phi from mul16s to mul16u [phi:mul16s->mul16u] - // [206] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy - // [206] phi (word) mul16u::b#2 = (word)(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + // [152] call mul16u + // [205] phi from mul16s to mul16u [phi:mul16s->mul16u] + // [205] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy + // [205] phi (word) mul16u::b#2 = (word)(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl sta.z mul16u.b+1 jsr mul16u // mul16u((unsigned int)a, (unsigned int) b) - // [154] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + // [153] (dword) mul16u::return#2 ← (dword) mul16u::res#2 // mul16s::@4 // m = mul16u((unsigned int)a, (unsigned int) b) - // [155] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + // [154] (dword) mul16s::m#0 ← (dword) mul16u::return#2 // if(a<0) - // [156] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + // [155] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda.z a+1 bpl __b2 // mul16s::@3 // >m - // [157] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + // [156] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda.z m+2 sta.z __6 lda.z m+3 sta.z __6+1 // >m = (>m)-(unsigned int)b - // [158] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + // [157] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 lda.z __11 sec sbc #sin16s_gen2.ampl sta.z __11+1 - // [159] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 -- vduz1=vduz1_sethi_vwuz2 + // [158] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 -- vduz1=vduz1_sethi_vwuz2 lda.z __11 sta.z m+2 lda.z __11+1 sta.z m+3 - // [160] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] - // [160] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy + // [159] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] + // [159] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy // mul16s::@1 // mul16s::@2 __b2: // return (signed long)m; - // [161] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 + // [160] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 // mul16s::@return // } - // [162] return + // [161] return rts } // wrap_y // wrap_y(signed word zp($12) y) wrap_y: { .label y = $12 - // [164] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] - // [164] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy + // [163] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] + // [163] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy // wrap_y::@1 __b1: // while(y>=200) - // [165] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 -- vwsz1_ge_vwsc1_then_la1 + // [164] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 -- vwsz1_ge_vwsc1_then_la1 lda.z y cmp #<$c8 lda.z y+1 @@ -9233,26 +9199,26 @@ wrap_y: { eor #$80 !: bpl __b2 - // [166] phi from wrap_y::@1 wrap_y::@4 to wrap_y::@3 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3] - // [166] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3#0] -- register_copy + // [165] phi from wrap_y::@1 wrap_y::@4 to wrap_y::@3 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3] + // [165] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3#0] -- register_copy // wrap_y::@3 __b3: // while(y<0) - // [167] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 -- vwsz1_lt_0_then_la1 + // [166] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 -- vwsz1_lt_0_then_la1 lda.z y+1 bmi __b4 // wrap_y::@5 // return (char)y; - // [168] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 -- vbuaa=_byte_vwsz1 + // [167] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 -- vbuaa=_byte_vwsz1 lda.z y // wrap_y::@return // } - // [169] return + // [168] return rts // wrap_y::@4 __b4: // y += 200 - // [170] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 -- vwsz1=vwsz1_plus_vwsc1 + // [169] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 -- vwsz1=vwsz1_plus_vwsc1 clc lda.z y adc #<$c8 @@ -9264,7 +9230,7 @@ wrap_y: { // wrap_y::@2 __b2: // y -= 200 - // [171] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 -- vwsz1=vwsz1_minus_vwsc1 + // [170] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 -- vwsz1=vwsz1_minus_vwsc1 lda.z y sec sbc #<$c8 @@ -9282,13 +9248,13 @@ bitmap_plot: { .label plotter = $23 .label x = 8 // plotter = (char*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] } - // [173] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + // [172] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#2) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_yhi,x sta.z plotter+1 lda bitmap_plot_ylo,x sta.z plotter // x & $fff8 - // [174] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#2 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + // [173] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#2 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda.z x and #<$fff8 sta.z __0 @@ -9296,7 +9262,7 @@ bitmap_plot: { and #>$fff8 sta.z __0+1 // plotter += ( x & $fff8 ) - // [175] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2 + // [174] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2 lda.z plotter clc adc.z __0 @@ -9305,17 +9271,17 @@ bitmap_plot: { adc.z __0+1 sta.z plotter+1 // divr16u::@1] - // [180] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + .label dividend = $25 + .label quotient = $14 + .label return = $14 + // [179] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + // [179] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - // [180] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 + // [179] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 txa sta.z quotient sta.z quotient+1 - // [180] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - // [180] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy - // [180] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - // [180] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - // [180] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - // [180] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - // [180] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + // [179] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + // [179] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + // [179] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + // [179] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + // [179] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + // [179] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + // [179] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy // divr16u::@1 __b1: // rem = rem << 1 - // [181] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [180] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z rem rol.z rem+1 // >dividend - // [182] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + // [181] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda.z dividend+1 // >dividend & $80 - // [183] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + // [182] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 // if( (>dividend & $80) != 0 ) - // [184] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + // [183] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq __b2 // divr16u::@4 // rem = rem | 1 - // [185] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + // [184] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora.z rem sta.z rem - // [186] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - // [186] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + // [185] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + // [185] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy // divr16u::@2 __b2: // dividend = dividend << 1 - // [187] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [186] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z dividend rol.z dividend+1 // quotient = quotient << 1 - // [188] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [187] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z quotient rol.z quotient+1 // if(rem>=divisor) - // [189] if((word) divr16u::rem#6<(const nomodify word) SIN_SIZE) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + // [188] if((word) divr16u::rem#6<(const nomodify word) SIN_SIZE) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda.z rem+1 cmp #>SIN_SIZE bcc __b3 @@ -9389,13 +9355,13 @@ divr16u: { !: // divr16u::@5 // quotient++; - // [190] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + // [189] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc.z quotient bne !+ inc.z quotient+1 !: // rem = rem - divisor - // [191] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const nomodify word) SIN_SIZE -- vwuz1=vwuz1_minus_vwuc1 + // [190] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const nomodify word) SIN_SIZE -- vwuz1=vwuz1_minus_vwuc1 lda.z rem sec sbc #SIN_SIZE sta.z rem+1 - // [192] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - // [192] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - // [192] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + // [191] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + // [191] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + // [191] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy // divr16u::@3 __b3: // for( char i : 0..15) - // [193] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + // [192] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - // [194] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + // [193] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne __b1 // divr16u::@6 // rem16u = rem - // [195] (word) rem16u#0 ← (word) divr16u::rem#11 + // [194] (word) rem16u#0 ← (word) divr16u::rem#11 // divr16u::@return // } - // [196] return + // [195] return rts } // mulu16_sel // Calculate val*val for two unsigned int values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip -// mulu16_sel(word zp($23) v1, word zp($25) v2, byte register(X) select) +// mulu16_sel(word zp($25) v1, word zp($14) v2, byte register(X) select) mulu16_sel: { .label __0 = $e .label __1 = $e - .label v1 = $23 - .label v2 = $25 - .label return = $21 - .label return_1 = $23 + .label v1 = $25 + .label v2 = $14 + .label return = $23 + .label return_1 = $25 // mul16u(v1, v2) - // [198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + // [197] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda.z v1 sta.z mul16u.a lda.z v1+1 sta.z mul16u.a+1 - // [199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - // [200] call mul16u - // [206] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] - // [206] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - // [206] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + // [198] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + // [199] call mul16u + // [205] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + // [205] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + // [205] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u // mul16u(v1, v2) - // [201] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + // [200] (dword) mul16u::return#3 ← (dword) mul16u::res#2 // mulu16_sel::@1 - // [202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + // [201] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 // mul16u(v1, v2)< (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + // [203] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda.z __1+2 sta.z return lda.z __1+3 sta.z return+1 // mulu16_sel::@return // } - // [205] return + // [204] return rts } // mul16u // Perform binary multiplication of two unsigned 16-bit unsigned ints into a 32-bit unsigned long -// mul16u(word zp($19) a, word zp($25) b) +// mul16u(word zp($1b) a, word zp($14) b) mul16u: { - .label mb = $1b - .label a = $19 + .label mb = $1d + .label a = $1b .label res = $e .label return = $e - .label b = $25 + .label b = $14 // mb = b - // [207] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 -- vduz1=_dword_vwuz2 + // [206] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda.z b sta.z mb lda.z b+1 @@ -9490,41 +9456,41 @@ mul16u: { lda #0 sta.z mb+2 sta.z mb+3 - // [208] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] - // [208] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - // [208] phi (dword) mul16u::res#2 = (dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vduc1 + // [207] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + // [207] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + // [207] phi (dword) mul16u::res#2 = (dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vduc1 sta.z res sta.z res+1 lda #<0>>$10 sta.z res+2 lda #>0>>$10 sta.z res+3 - // [208] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + // [207] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy // mul16u::@1 __b1: // while(a!=0) - // [209] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + // [208] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda.z a bne __b2 lda.z a+1 bne __b2 // mul16u::@return // } - // [210] return + // [209] return rts // mul16u::@2 __b2: // a&1 - // [211] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 + // [210] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 lda #1 and.z a // if( (a&1) != 0) - // [212] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 + // [211] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq __b3 // mul16u::@4 // res = res + mb - // [213] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + // [212] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda.z res clc adc.z mb @@ -9538,24 +9504,24 @@ mul16u: { lda.z res+3 adc.z mb+3 sta.z res+3 - // [214] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] - // [214] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + // [213] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + // [213] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy // mul16u::@3 __b3: // a = a>>1 - // [215] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + // [214] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr.z a+1 ror.z a // mb = mb<<1 - // [216] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + // [215] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl.z mb rol.z mb+1 rol.z mb+2 rol.z mb+3 - // [208] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] - // [208] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - // [208] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - // [208] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + // [207] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + // [207] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + // [207] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + // [207] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp __b1 } // File Data diff --git a/src/test/ref/examples/sinplotter/sine-plotter.sym b/src/test/ref/examples/sinplotter/sine-plotter.sym index 69cc757fe..30208dfe9 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.sym +++ b/src/test/ref/examples/sinplotter/sine-plotter.sym @@ -117,7 +117,7 @@ (byte~) bitmap_init::$4 reg byte a 202.0 (byte~) bitmap_init::$5 reg byte a 202.0 (byte~) bitmap_init::$6 reg byte a 202.0 -(byte~) bitmap_init::$7 zp[1]:20 50.5 +(byte~) bitmap_init::$7 zp[1]:22 50.5 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 @@ -168,12 +168,12 @@ (word) div32u16u::divisor (dword) div32u16u::quotient (word) div32u16u::quotient_hi -(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:31 40.4 +(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:33 40.4 (word) div32u16u::quotient_lo -(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:37 202.0 +(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:20 202.0 (dword) div32u16u::return -(dword) div32u16u::return#0 return zp[4]:21 37.33333333333333 -(dword) div32u16u::return#2 return zp[4]:21 22.0 +(dword) div32u16u::return#0 return zp[4]:23 37.33333333333333 +(dword) div32u16u::return#2 return zp[4]:23 22.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) (byte~) divr16u::$1 reg byte a 20002.0 (byte~) divr16u::$2 reg byte a 20002.0 @@ -185,17 +185,17 @@ (label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp[2]:35 2500.25 -(word) divr16u::dividend#3 dividend zp[2]:35 4429.142857142857 -(word) divr16u::dividend#5 dividend zp[2]:35 1001.0 +(word) divr16u::dividend#0 dividend zp[2]:37 2500.25 +(word) divr16u::dividend#3 dividend zp[2]:37 4429.142857142857 +(word) divr16u::dividend#5 dividend zp[2]:37 1001.0 (word) divr16u::divisor (byte) divr16u::i (byte) divr16u::i#1 reg byte x 15001.5 (byte) divr16u::i#2 reg byte x 1538.6153846153845 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp[2]:37 15001.5 -(word) divr16u::quotient#2 quotient zp[2]:37 10001.0 -(word) divr16u::quotient#3 quotient zp[2]:37 2500.25 +(word) divr16u::quotient#1 quotient zp[2]:20 15001.5 +(word) divr16u::quotient#2 quotient zp[2]:20 10001.0 +(word) divr16u::quotient#3 quotient zp[2]:20 2500.25 (word) divr16u::rem (word) divr16u::rem#0 rem zp[2]:18 7500.75 (word) divr16u::rem#1 rem zp[2]:18 20002.0 @@ -206,9 +206,9 @@ (word) divr16u::rem#5 rem zp[2]:18 21003.0 (word) divr16u::rem#6 rem zp[2]:18 10001.0 (word) divr16u::return -(word) divr16u::return#0 return zp[2]:37 4315.0 -(word) divr16u::return#2 return zp[2]:37 202.0 -(word) divr16u::return#3 return zp[2]:37 202.0 +(word) divr16u::return#0 return zp[2]:20 4315.0 +(word) divr16u::return#2 return zp[2]:20 202.0 +(word) divr16u::return#3 return zp[2]:20 202.0 (void()) main() (label) main::@1 (label) main::@2 @@ -272,18 +272,18 @@ (label) mul16u::@4 (label) mul16u::@return (word) mul16u::a -(word) mul16u::a#0 a zp[2]:25 1.0000001E7 -(word) mul16u::a#1 a zp[2]:25 2002.0 -(word) mul16u::a#2 a zp[2]:25 10001.0 -(word) mul16u::a#3 a zp[2]:25 6683334.166666666 -(word) mul16u::a#6 a zp[2]:25 55501.5 +(word) mul16u::a#0 a zp[2]:27 1.0000001E7 +(word) mul16u::a#1 a zp[2]:27 2002.0 +(word) mul16u::a#2 a zp[2]:27 10001.0 +(word) mul16u::a#3 a zp[2]:27 6683334.166666666 +(word) mul16u::a#6 a zp[2]:27 55501.5 (word) mul16u::b -(word) mul16u::b#1 b zp[2]:37 20002.0 -(word) mul16u::b#2 b zp[2]:37 10001.0 +(word) mul16u::b#1 b zp[2]:20 20002.0 +(word) mul16u::b#2 b zp[2]:20 10001.0 (dword) mul16u::mb -(dword) mul16u::mb#0 mb zp[4]:27 200002.0 -(dword) mul16u::mb#1 mb zp[4]:27 2.0000002E7 -(dword) mul16u::mb#2 mb zp[4]:27 4300000.571428571 +(dword) mul16u::mb#0 mb zp[4]:29 200002.0 +(dword) mul16u::mb#1 mb zp[4]:29 2.0000002E7 +(dword) mul16u::mb#2 mb zp[4]:29 4300000.571428571 (dword) mul16u::res (dword) mul16u::res#1 res zp[4]:14 2.0000002E7 (dword) mul16u::res#2 res zp[4]:14 4287286.428571429 @@ -297,34 +297,33 @@ (label) mulu16_sel::@1 (label) mulu16_sel::@return (word) mulu16_sel::return -(word) mulu16_sel::return#0 return zp[2]:33 2002.0 -(word) mulu16_sel::return#1 return_1 zp[2]:35 2002.0 -(word) mulu16_sel::return#10 return_1 zp[2]:35 2002.0 -(word) mulu16_sel::return#11 return zp[2]:33 2002.0 -(word) mulu16_sel::return#12 return zp[2]:33 2143.714285714286 -(word) mulu16_sel::return#2 return zp[2]:33 2002.0 +(word) mulu16_sel::return#0 return zp[2]:35 2002.0 +(word) mulu16_sel::return#1 return_1 zp[2]:37 2002.0 +(word) mulu16_sel::return#10 return_1 zp[2]:37 2002.0 +(word) mulu16_sel::return#11 return zp[2]:35 2002.0 +(word) mulu16_sel::return#12 return zp[2]:35 2143.714285714286 +(word) mulu16_sel::return#2 return zp[2]:35 2002.0 (byte) mulu16_sel::select (byte) mulu16_sel::select#5 reg byte x 1666.8333333333333 (word) mulu16_sel::v1 -(word) mulu16_sel::v1#0 v1 zp[2]:35 1001.0 -(word) mulu16_sel::v1#1 v1 zp[2]:35 1001.0 -(word) mulu16_sel::v1#2 v1 zp[2]:35 2002.0 -(word) mulu16_sel::v1#3 v1 zp[2]:35 1001.0 -(word) mulu16_sel::v1#4 v1 zp[2]:35 1001.0 -(word) mulu16_sel::v1#5 v1 zp[2]:35 15006.0 +(word) mulu16_sel::v1#0 v1 zp[2]:37 1001.0 +(word) mulu16_sel::v1#1 v1 zp[2]:37 1001.0 +(word) mulu16_sel::v1#2 v1 zp[2]:37 2002.0 +(word) mulu16_sel::v1#3 v1 zp[2]:37 1001.0 +(word) mulu16_sel::v1#4 v1 zp[2]:37 1001.0 +(word) mulu16_sel::v1#5 v1 zp[2]:37 15006.0 (word) mulu16_sel::v2 -(word) mulu16_sel::v2#0 v2 zp[2]:37 2002.0 -(word) mulu16_sel::v2#1 v2 zp[2]:37 2002.0 -(word) mulu16_sel::v2#3 v2 zp[2]:37 2002.0 -(word) mulu16_sel::v2#4 v2 zp[2]:37 2002.0 -(word) mulu16_sel::v2#5 v2 zp[2]:37 7002.5 +(word) mulu16_sel::v2#0 v2 zp[2]:20 2002.0 +(word) mulu16_sel::v2#1 v2 zp[2]:20 2002.0 +(word) mulu16_sel::v2#3 v2 zp[2]:20 2002.0 +(word) mulu16_sel::v2#4 v2 zp[2]:20 2002.0 +(word) mulu16_sel::v2#5 v2 zp[2]:20 7002.5 (word) rem16u (word) rem16u#0 rem16u zp[2]:18 220.39999999999998 (void()) render_sine() (signed word*~) render_sine::$1 zp[2]:18 202.0 -(word~) render_sine::$10 zp[2]:18 202.0 -(word~) render_sine::$11 zp[2]:18 202.0 -(signed word*~) render_sine::$4 zp[2]:18 202.0 +(word~) render_sine::$11 zp[2]:33 30.299999999999997 +(signed word*~) render_sine::$4 zp[2]:33 202.0 (label) render_sine::@1 (label) render_sine::@2 (label) render_sine::@3 @@ -338,12 +337,12 @@ (signed word) render_sine::sin2_val#0 sin2_val zp[2]:18 202.0 (word) render_sine::sin_idx (word) render_sine::sin_idx#1 sin_idx zp[2]:6 202.0 -(word) render_sine::sin_idx#2 sin_idx zp[2]:6 19.423076923076923 +(word) render_sine::sin_idx#2 sin_idx zp[2]:6 16.16 (signed word) render_sine::sin_val (signed word) render_sine::sin_val#0 sin_val zp[2]:18 202.0 (word) render_sine::xpos (word) render_sine::xpos#1 xpos zp[2]:8 101.0 -(word) render_sine::xpos#3 xpos zp[2]:8 18.363636363636363 +(word) render_sine::xpos#3 xpos zp[2]:8 19.238095238095237 (word) render_sine::xpos#9 xpos zp[2]:8 101.0 (byte) render_sine::ypos (byte) render_sine::ypos#0 reg byte x 101.0 @@ -351,7 +350,7 @@ (byte) render_sine::ypos2#0 reg byte x 101.0 (const signed word*) sin[(number) $200] = { fill( $200, 0) } (signed word()) sin16s((dword) sin16s::x) -(dword~) sin16s::$4 zp[4]:27 2002.0 +(dword~) sin16s::$4 zp[4]:29 2002.0 (label) sin16s::@1 (label) sin16s::@10 (label) sin16s::@11 @@ -383,22 +382,22 @@ (dword) sin16s::x#4 x zp[4]:10 2502.5 (dword) sin16s::x#6 x zp[4]:10 3003.0 (word) sin16s::x1 -(word) sin16s::x1#0 x1 zp[2]:31 318.5 +(word) sin16s::x1#0 x1 zp[2]:33 318.5 (word) sin16s::x2 -(word) sin16s::x2#0 x2 zp[2]:35 2002.0 +(word) sin16s::x2#0 x2 zp[2]:37 2002.0 (word) sin16s::x3 -(word) sin16s::x3#0 x3 zp[2]:35 500.5 +(word) sin16s::x3#0 x3 zp[2]:37 500.5 (word) sin16s::x3_6 -(word) sin16s::x3_6#0 x3_6 zp[2]:33 2002.0 +(word) sin16s::x3_6#0 x3_6 zp[2]:35 2002.0 (word) sin16s::x4 -(word) sin16s::x4#0 x4 zp[2]:35 2002.0 +(word) sin16s::x4#0 x4 zp[2]:37 2002.0 (word) sin16s::x5 -(word) sin16s::x5#0 x5 zp[2]:33 2002.0 +(word) sin16s::x5#0 x5 zp[2]:35 2002.0 (word) sin16s::x5_128 -(word) sin16s::x5_128#0 x5_128 zp[2]:33 2002.0 +(word) sin16s::x5_128#0 x5_128 zp[2]:35 2002.0 (void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max) (signed dword~) sin16s_gen2::$6 zp[4]:14 202.0 -(word~) sin16s_gen2::$8 zp[2]:25 101.0 +(word~) sin16s_gen2::$8 zp[2]:27 101.0 (label) sin16s_gen2::@1 (label) sin16s_gen2::@2 (label) sin16s_gen2::@3 @@ -419,7 +418,7 @@ (signed word*) sin16s_gen2::sintab#0 sintab zp[2]:6 67.33333333333333 (signed word*) sin16s_gen2::sintab#2 sintab zp[2]:6 27.545454545454547 (dword) sin16s_gen2::step -(dword) sin16s_gen2::step#0 step zp[4]:21 7.466666666666667 +(dword) sin16s_gen2::step#0 step zp[4]:23 7.466666666666667 (word) sin16s_gen2::wavelength (dword) sin16s_gen2::x (dword) sin16s_gen2::x#1 x zp[4]:2 101.0 @@ -459,25 +458,25 @@ reg byte y [ sin16s::isUpper#2 ] zp[4]:10 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[4]:14 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$6 mulu16_sel::$0 mulu16_sel::$1 ] reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] -zp[2]:18 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$10 render_sine::$1 render_sine::$11 render_sine::$4 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] +zp[2]:18 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$1 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] +zp[2]:20 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 mul16u::b#2 mul16u::b#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] reg byte x [ mulu16_sel::select#5 ] -zp[1]:20 [ bitmap_init::$7 ] +zp[1]:22 [ bitmap_init::$7 ] reg byte a [ bitmap_init::$4 ] reg byte a [ bitmap_init::$5 ] reg byte a [ bitmap_init::$6 ] -zp[4]:21 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ] -zp[2]:25 [ sin16s_gen2::$8 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] +zp[4]:23 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ] +zp[2]:27 [ sin16s_gen2::$8 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] reg byte a [ wrap_y::return#0 ] reg byte x [ render_sine::ypos#0 ] reg byte a [ wrap_y::return#1 ] reg byte x [ render_sine::ypos2#0 ] -zp[4]:27 [ sin16s::$4 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] -zp[2]:31 [ sin16s::x1#0 div32u16u::quotient_hi#0 ] -zp[2]:33 [ mul16s::$6 mul16s::$11 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] +zp[4]:29 [ sin16s::$4 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] +zp[2]:33 [ mul16s::$6 mul16s::$11 sin16s::x1#0 div32u16u::quotient_hi#0 render_sine::$11 render_sine::$4 ] reg byte a [ wrap_y::return#2 ] -zp[2]:35 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] -zp[2]:37 [ bitmap_plot::$0 mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 mul16u::b#2 mul16u::b#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] +zp[2]:35 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] +zp[2]:37 [ bitmap_plot::$0 mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] reg byte x [ bitmap_plot::$1 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] diff --git a/src/test/ref/hex2dec.asm b/src/test/ref/hex2dec.asm index dea207818..19233df61 100644 --- a/src/test/ref/hex2dec.asm +++ b/src/test/ref/hex2dec.asm @@ -208,8 +208,8 @@ utoa10w: { // value>=UTOA10_SUB[i] txa asl - // while(value>=UTOA10_SUB[i]) tay + // while(value>=UTOA10_SUB[i]) lda UTOA10_SUB+1,y cmp.z value+1 bne !+ @@ -270,9 +270,6 @@ utoa10w: { adc.z digit sta.z digit // value -= UTOA10_SUB[i] - txa - asl - tay sec lda.z value sbc UTOA10_SUB,y diff --git a/src/test/ref/hex2dec.cfg b/src/test/ref/hex2dec.cfg index fd49a8aa0..8cfb7d883 100644 --- a/src/test/ref/hex2dec.cfg +++ b/src/test/ref/hex2dec.cfg @@ -111,8 +111,8 @@ utoa10w::@1: scope:[utoa10w] from utoa10w utoa10w::@2 utoa10w::@6 [59] (byte) utoa10w::digit#3 ← phi( utoa10w/(byte) 0 utoa10w::@2/(byte) utoa10w::digit#1 utoa10w::@6/(byte) utoa10w::digit#7 ) [59] (word) utoa10w::value#10 ← phi( utoa10w/(word) utoa10w::value#0 utoa10w::@2/(word) utoa10w::value#1 utoa10w::@6/(word) utoa10w::value#10 ) [59] (byte) utoa10w::i#2 ← phi( utoa10w/(byte) 0 utoa10w::@2/(byte) utoa10w::i#2 utoa10w::@6/(byte) utoa10w::i#1 ) - [60] (byte~) utoa10w::$7 ← (byte) utoa10w::i#2 << (byte) 1 - [61] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$7)) goto utoa10w::@2 + [60] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 + [61] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$8)) goto utoa10w::@2 to:utoa10w::@3 utoa10w::@3: scope:[utoa10w] from utoa10w::@1 [62] (byte~) utoa10w::$1 ← (byte) utoa10w::i#2 & (byte) 1 @@ -145,27 +145,26 @@ utoa10w::@return: scope:[utoa10w] from utoa10w::@8 to:@return utoa10w::@2: scope:[utoa10w] from utoa10w::@1 [76] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte*) UTOA10_VAL + (byte) utoa10w::i#2) - [77] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 - [78] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$8) + [77] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$8) to:utoa10w::@1 (byte()) utoa16n((byte) utoa16n::nybble , (word**) utoa16n::dst , (byte) utoa16n::started) utoa16n: scope:[utoa16n] from utoa16w utoa16w::@1 utoa16w::@2 utoa16w::@3 - [79] (byte) utoa16n::started#7 ← phi( utoa16w/(byte) 0 utoa16w::@1/(byte) utoa16n::started#1 utoa16w::@2/(byte) utoa16n::started#2 utoa16w::@3/(byte) 1 ) - [79] (byte) utoa16n::nybble#4 ← phi( utoa16w/(byte) utoa16n::nybble#0 utoa16w::@1/(byte) utoa16n::nybble#1 utoa16w::@2/(byte) utoa16n::nybble#2 utoa16w::@3/(byte) utoa16n::nybble#3 ) - [80] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 + [78] (byte) utoa16n::started#7 ← phi( utoa16w/(byte) 0 utoa16w::@1/(byte) utoa16n::started#1 utoa16w::@2/(byte) utoa16n::started#2 utoa16w::@3/(byte) 1 ) + [78] (byte) utoa16n::nybble#4 ← phi( utoa16w/(byte) utoa16n::nybble#0 utoa16w::@1/(byte) utoa16n::nybble#1 utoa16w::@2/(byte) utoa16n::nybble#2 utoa16w::@3/(byte) utoa16n::nybble#3 ) + [79] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 to:utoa16n::@1 utoa16n::@3: scope:[utoa16n] from utoa16n - [81] phi() + [80] phi() to:utoa16n::@1 utoa16n::@1: scope:[utoa16n] from utoa16n utoa16n::@3 - [82] (byte) utoa16n::return#4 ← phi( utoa16n::@3/(byte) utoa16n::started#7 utoa16n/(byte) 1 ) - [83] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return + [81] (byte) utoa16n::return#4 ← phi( utoa16n::@3/(byte) utoa16n::started#7 utoa16n/(byte) 1 ) + [82] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return to:utoa16n::@2 utoa16n::@2: scope:[utoa16n] from utoa16n::@1 - [84] *(*(&(volatile byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) - [85] *(&(volatile byte*) utoa16w::dst) ← ++ *(&(volatile byte*) utoa16w::dst) + [83] *(*(&(volatile byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) + [84] *(&(volatile byte*) utoa16w::dst) ← ++ *(&(volatile byte*) utoa16w::dst) to:utoa16n::@return utoa16n::@return: scope:[utoa16n] from utoa16n::@1 utoa16n::@2 - [86] return + [85] return to:@return diff --git a/src/test/ref/hex2dec.log b/src/test/ref/hex2dec.log index a059b6443..d9b5c1725 100644 --- a/src/test/ref/hex2dec.log +++ b/src/test/ref/hex2dec.log @@ -886,8 +886,12 @@ Constant inlined utoa10w::digit#2 = (byte) 0 Successful SSA optimization Pass2ConstantInlining Identical Phi Values (word**) utoa16n::dst#4 &(volatile byte*) utoa16w::dst Successful SSA optimization Pass2IdenticalPhiElimination +Identified duplicate assignment right side [40] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 +Successful SSA optimization Pass2DuplicateRValueIdentification Eliminating unused constant (const byte) SIZEOF_WORD Successful SSA optimization PassNEliminateUnusedVars +Alias utoa10w::$8 = utoa10w::$7 +Successful SSA optimization Pass2AliasElimination Added new block during phi lifting cls::@2(between cls::@1 and cls::@1) Added new block during phi lifting utoa10w::@9(between utoa10w::@6 and utoa10w::@1) Added new block during phi lifting utoa10w::@10(between utoa10w::@3 and utoa10w::@6) @@ -923,11 +927,11 @@ Coalesced [93] utoa10w::dst#13 ← utoa10w::dst#4 Coalesced (already) [94] utoa10w::dst#16 ← utoa10w::dst#11 Coalesced (already) [95] utoa10w::dst#14 ← utoa10w::dst#11 Coalesced (already) [96] utoa10w::digit#11 ← utoa10w::digit#3 -Coalesced (already) [100] utoa10w::i#9 ← utoa10w::i#2 -Coalesced [101] utoa10w::value#12 ← utoa10w::value#1 -Coalesced [102] utoa10w::digit#9 ← utoa10w::digit#1 -Coalesced (already) [103] utoa10w::dst#12 ← utoa10w::dst#11 -Coalesced [113] utoa16n::return#10 ← utoa16n::started#7 +Coalesced (already) [99] utoa10w::i#9 ← utoa10w::i#2 +Coalesced [100] utoa10w::value#12 ← utoa10w::value#1 +Coalesced [101] utoa10w::digit#9 ← utoa10w::digit#1 +Coalesced (already) [102] utoa10w::dst#12 ← utoa10w::dst#11 +Coalesced [112] utoa16n::return#10 ← utoa16n::started#7 Coalesced down to 10 phi equivalence classes Culled Empty Block (label) main::@6 Culled Empty Block (label) main::@1 @@ -1067,8 +1071,8 @@ utoa10w::@1: scope:[utoa10w] from utoa10w utoa10w::@2 utoa10w::@6 [59] (byte) utoa10w::digit#3 ← phi( utoa10w/(byte) 0 utoa10w::@2/(byte) utoa10w::digit#1 utoa10w::@6/(byte) utoa10w::digit#7 ) [59] (word) utoa10w::value#10 ← phi( utoa10w/(word) utoa10w::value#0 utoa10w::@2/(word) utoa10w::value#1 utoa10w::@6/(word) utoa10w::value#10 ) [59] (byte) utoa10w::i#2 ← phi( utoa10w/(byte) 0 utoa10w::@2/(byte) utoa10w::i#2 utoa10w::@6/(byte) utoa10w::i#1 ) - [60] (byte~) utoa10w::$7 ← (byte) utoa10w::i#2 << (byte) 1 - [61] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$7)) goto utoa10w::@2 + [60] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 + [61] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$8)) goto utoa10w::@2 to:utoa10w::@3 utoa10w::@3: scope:[utoa10w] from utoa10w::@1 [62] (byte~) utoa10w::$1 ← (byte) utoa10w::i#2 & (byte) 1 @@ -1101,29 +1105,28 @@ utoa10w::@return: scope:[utoa10w] from utoa10w::@8 to:@return utoa10w::@2: scope:[utoa10w] from utoa10w::@1 [76] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte*) UTOA10_VAL + (byte) utoa10w::i#2) - [77] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 - [78] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$8) + [77] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$8) to:utoa10w::@1 (byte()) utoa16n((byte) utoa16n::nybble , (word**) utoa16n::dst , (byte) utoa16n::started) utoa16n: scope:[utoa16n] from utoa16w utoa16w::@1 utoa16w::@2 utoa16w::@3 - [79] (byte) utoa16n::started#7 ← phi( utoa16w/(byte) 0 utoa16w::@1/(byte) utoa16n::started#1 utoa16w::@2/(byte) utoa16n::started#2 utoa16w::@3/(byte) 1 ) - [79] (byte) utoa16n::nybble#4 ← phi( utoa16w/(byte) utoa16n::nybble#0 utoa16w::@1/(byte) utoa16n::nybble#1 utoa16w::@2/(byte) utoa16n::nybble#2 utoa16w::@3/(byte) utoa16n::nybble#3 ) - [80] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 + [78] (byte) utoa16n::started#7 ← phi( utoa16w/(byte) 0 utoa16w::@1/(byte) utoa16n::started#1 utoa16w::@2/(byte) utoa16n::started#2 utoa16w::@3/(byte) 1 ) + [78] (byte) utoa16n::nybble#4 ← phi( utoa16w/(byte) utoa16n::nybble#0 utoa16w::@1/(byte) utoa16n::nybble#1 utoa16w::@2/(byte) utoa16n::nybble#2 utoa16w::@3/(byte) utoa16n::nybble#3 ) + [79] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 to:utoa16n::@1 utoa16n::@3: scope:[utoa16n] from utoa16n - [81] phi() + [80] phi() to:utoa16n::@1 utoa16n::@1: scope:[utoa16n] from utoa16n utoa16n::@3 - [82] (byte) utoa16n::return#4 ← phi( utoa16n::@3/(byte) utoa16n::started#7 utoa16n/(byte) 1 ) - [83] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return + [81] (byte) utoa16n::return#4 ← phi( utoa16n::@3/(byte) utoa16n::started#7 utoa16n/(byte) 1 ) + [82] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return to:utoa16n::@2 utoa16n::@2: scope:[utoa16n] from utoa16n::@1 - [84] *(*(&(volatile byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) - [85] *(&(volatile byte*) utoa16w::dst) ← ++ *(&(volatile byte*) utoa16w::dst) + [83] *(*(&(volatile byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) + [84] *(&(volatile byte*) utoa16w::dst) ← ++ *(&(volatile byte*) utoa16w::dst) to:utoa16n::@return utoa16n::@return: scope:[utoa16n] from utoa16n::@1 utoa16n::@2 - [86] return + [85] return to:@return @@ -1149,28 +1152,27 @@ VARIABLE REGISTER WEIGHTS (byte) main::time_start#0 1.2941176470588236 (void()) utoa10w((word) utoa10w::value , (byte*) utoa10w::dst) (byte~) utoa10w::$1 20002.0 -(byte~) utoa10w::$7 20002.0 -(byte~) utoa10w::$8 20002.0 +(byte~) utoa10w::$8 10001.0 (byte~) utoa10w::$9 202.0 (byte) utoa10w::bStarted (byte) utoa10w::bStarted#2 2500.25 (byte) utoa10w::digit -(byte) utoa10w::digit#1 6667.333333333333 +(byte) utoa10w::digit#1 10001.0 (byte) utoa10w::digit#3 8334.166666666666 (byte) utoa10w::digit#7 6667.333333333333 (byte*) utoa10w::dst (byte*) utoa10w::dst#1 20002.0 -(byte*) utoa10w::dst#11 7000.700000000001 +(byte*) utoa10w::dst#11 7778.555555555557 (byte*) utoa10w::dst#2 202.0 (byte*) utoa10w::dst#4 6041.0 (byte*) utoa10w::dst#8 30003.0 (byte) utoa10w::i (byte) utoa10w::i#1 15001.5 -(byte) utoa10w::i#2 6154.461538461538 +(byte) utoa10w::i#2 5833.916666666667 (word) utoa10w::value (word) utoa10w::value#0 56.0 (word) utoa10w::value#1 20002.0 -(word) utoa10w::value#10 3579.000000000001 +(word) utoa10w::value#10 3854.3076923076924 (byte()) utoa16n((byte) utoa16n::nybble , (word**) utoa16n::dst , (byte) utoa16n::started) (word**) utoa16n::dst (byte) utoa16n::nybble @@ -1225,11 +1227,10 @@ Added variable utoa16n::return#1 to live range equivalence class [ utoa16n::retu Added variable utoa16w::started#2 to live range equivalence class [ utoa16w::started#2 ] Added variable utoa16w::$6 to live range equivalence class [ utoa16w::$6 ] Added variable utoa16w::$9 to live range equivalence class [ utoa16w::$9 ] -Added variable utoa10w::$7 to live range equivalence class [ utoa10w::$7 ] +Added variable utoa10w::$8 to live range equivalence class [ utoa10w::$8 ] Added variable utoa10w::$1 to live range equivalence class [ utoa10w::$1 ] Added variable utoa10w::$9 to live range equivalence class [ utoa10w::$9 ] Added variable utoa10w::dst#2 to live range equivalence class [ utoa10w::dst#2 ] -Added variable utoa10w::$8 to live range equivalence class [ utoa10w::$8 ] Complete equivalence classes [ main::i#2 main::i#1 ] [ cls::sc#2 cls::sc#1 ] @@ -1256,11 +1257,10 @@ Complete equivalence classes [ utoa16w::started#2 ] [ utoa16w::$6 ] [ utoa16w::$9 ] -[ utoa10w::$7 ] +[ utoa10w::$8 ] [ utoa10w::$1 ] [ utoa10w::$9 ] [ utoa10w::dst#2 ] -[ utoa10w::$8 ] Allocated zp[1]:2 [ main::i#2 main::i#1 ] Allocated zp[2]:3 [ cls::sc#2 cls::sc#1 ] Allocated zp[2]:5 [ utoa16w::value#5 ] @@ -1286,11 +1286,10 @@ Allocated zp[1]:28 [ utoa16n::return#1 ] Allocated zp[1]:29 [ utoa16w::started#2 ] Allocated zp[1]:30 [ utoa16w::$6 ] Allocated zp[1]:31 [ utoa16w::$9 ] -Allocated zp[1]:32 [ utoa10w::$7 ] +Allocated zp[1]:32 [ utoa10w::$8 ] Allocated zp[1]:33 [ utoa10w::$1 ] Allocated zp[1]:34 [ utoa10w::$9 ] Allocated zp[2]:35 [ utoa10w::dst#2 ] -Allocated zp[1]:37 [ utoa10w::$8 ] INITIAL ASM Target platform is c64basic / MOS6502X @@ -1552,12 +1551,12 @@ utoa16w: { lsr sta.z utoa16n.nybble // [40] call utoa16n - // [79] phi from utoa16w to utoa16n [phi:utoa16w->utoa16n] + // [78] phi from utoa16w to utoa16n [phi:utoa16w->utoa16n] utoa16n_from_utoa16w: - // [79] phi (byte) utoa16n::started#7 = (byte) 0 [phi:utoa16w->utoa16n#0] -- vbuz1=vbuc1 + // [78] phi (byte) utoa16n::started#7 = (byte) 0 [phi:utoa16w->utoa16n#0] -- vbuz1=vbuc1 lda #0 sta.z utoa16n.started - // [79] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#0 [phi:utoa16w->utoa16n#1] -- register_copy + // [78] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#0 [phi:utoa16w->utoa16n#1] -- register_copy jsr utoa16n // [41] (byte) utoa16n::return#0 ← (byte) utoa16n::return#4 -- vbuz1=vbuz2 lda.z utoa16n.return_2 @@ -1579,10 +1578,10 @@ utoa16w: { lda.z started sta.z utoa16n.started // [46] call utoa16n - // [79] phi from utoa16w::@1 to utoa16n [phi:utoa16w::@1->utoa16n] + // [78] phi from utoa16w::@1 to utoa16n [phi:utoa16w::@1->utoa16n] utoa16n_from___b1: - // [79] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#1 [phi:utoa16w::@1->utoa16n#0] -- register_copy - // [79] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#1 [phi:utoa16w::@1->utoa16n#1] -- register_copy + // [78] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#1 [phi:utoa16w::@1->utoa16n#0] -- register_copy + // [78] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#1 [phi:utoa16w::@1->utoa16n#1] -- register_copy jsr utoa16n // [47] (byte) utoa16n::return#1 ← (byte) utoa16n::return#4 -- vbuz1=vbuz2 lda.z utoa16n.return_2 @@ -1607,10 +1606,10 @@ utoa16w: { lda.z started_1 sta.z utoa16n.started // [52] call utoa16n - // [79] phi from utoa16w::@2 to utoa16n [phi:utoa16w::@2->utoa16n] + // [78] phi from utoa16w::@2 to utoa16n [phi:utoa16w::@2->utoa16n] utoa16n_from___b2: - // [79] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#2 [phi:utoa16w::@2->utoa16n#0] -- register_copy - // [79] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#2 [phi:utoa16w::@2->utoa16n#1] -- register_copy + // [78] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#2 [phi:utoa16w::@2->utoa16n#0] -- register_copy + // [78] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#2 [phi:utoa16w::@2->utoa16n#1] -- register_copy jsr utoa16n jmp __b3 // utoa16w::@3 @@ -1623,12 +1622,12 @@ utoa16w: { and.z __9 sta.z utoa16n.nybble // [55] call utoa16n - // [79] phi from utoa16w::@3 to utoa16n [phi:utoa16w::@3->utoa16n] + // [78] phi from utoa16w::@3 to utoa16n [phi:utoa16w::@3->utoa16n] utoa16n_from___b3: - // [79] phi (byte) utoa16n::started#7 = (byte) 1 [phi:utoa16w::@3->utoa16n#0] -- vbuz1=vbuc1 + // [78] phi (byte) utoa16n::started#7 = (byte) 1 [phi:utoa16w::@3->utoa16n#0] -- vbuz1=vbuc1 lda #1 sta.z utoa16n.started - // [79] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#3 [phi:utoa16w::@3->utoa16n#1] -- register_copy + // [78] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#3 [phi:utoa16w::@3->utoa16n#1] -- register_copy jsr utoa16n jmp __b4 // utoa16w::@4 @@ -1648,8 +1647,7 @@ utoa16w: { // utoa10w(word zp(8) value, byte* zp($c) dst) utoa10w: { .label __1 = $21 - .label __7 = $20 - .label __8 = $25 + .label __8 = $20 .label __9 = $22 .label value = 8 .label digit = $a @@ -1685,12 +1683,12 @@ utoa10w: { jmp __b1 // utoa10w::@1 __b1: - // [60] (byte~) utoa10w::$7 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [60] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i asl - sta.z __7 - // [61] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$7)) goto utoa10w::@2 -- vwuz1_ge_pwuc1_derefidx_vbuz2_then_la1 - ldy.z __7 + sta.z __8 + // [61] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$8)) goto utoa10w::@2 -- vwuz1_ge_pwuc1_derefidx_vbuz2_then_la1 + ldy.z __8 lda UTOA10_SUB+1,y cmp.z value+1 bne !+ @@ -1793,11 +1791,7 @@ utoa10w: { clc adc UTOA10_VAL,y sta.z digit - // [77] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 - lda.z i - asl - sta.z __8 - // [78] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$8) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuz2 + // [77] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$8) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuz2 ldy.z __8 sec lda.z value @@ -1826,35 +1820,35 @@ utoa16n: { .label started = $f .label return_1 = $1c .label return_2 = $f - // [80] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 -- vbuz1_eq_0_then_la1 + // [79] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 -- vbuz1_eq_0_then_la1 lda.z nybble cmp #0 beq __b3_from_utoa16n - // [82] phi from utoa16n to utoa16n::@1 [phi:utoa16n->utoa16n::@1] + // [81] phi from utoa16n to utoa16n::@1 [phi:utoa16n->utoa16n::@1] __b1_from_utoa16n: - // [82] phi (byte) utoa16n::return#4 = (byte) 1 [phi:utoa16n->utoa16n::@1#0] -- vbuz1=vbuc1 + // [81] phi (byte) utoa16n::return#4 = (byte) 1 [phi:utoa16n->utoa16n::@1#0] -- vbuz1=vbuc1 lda #1 sta.z return_2 jmp __b1 - // [81] phi from utoa16n to utoa16n::@3 [phi:utoa16n->utoa16n::@3] + // [80] phi from utoa16n to utoa16n::@3 [phi:utoa16n->utoa16n::@3] __b3_from_utoa16n: jmp __b3 // utoa16n::@3 __b3: - // [82] phi from utoa16n::@3 to utoa16n::@1 [phi:utoa16n::@3->utoa16n::@1] + // [81] phi from utoa16n::@3 to utoa16n::@1 [phi:utoa16n::@3->utoa16n::@1] __b1_from___b3: - // [82] phi (byte) utoa16n::return#4 = (byte) utoa16n::started#7 [phi:utoa16n::@3->utoa16n::@1#0] -- register_copy + // [81] phi (byte) utoa16n::return#4 = (byte) utoa16n::started#7 [phi:utoa16n::@3->utoa16n::@1#0] -- register_copy jmp __b1 // utoa16n::@1 __b1: - // [83] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return -- vbuz1_eq_0_then_la1 + // [82] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return -- vbuz1_eq_0_then_la1 lda.z return_2 cmp #0 beq __breturn jmp __b2 // utoa16n::@2 __b2: - // [84] *(*(&(volatile byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) -- _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuz1 + // [83] *(*(&(volatile byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) -- _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuz1 ldy.z nybble lda DIGITS,y ldy.z utoa16w.dst @@ -1863,7 +1857,7 @@ utoa16n: { sty.z $ff ldy #0 sta ($fe),y - // [85] *(&(volatile byte*) utoa16w::dst) ← ++ *(&(volatile byte*) utoa16w::dst) -- _deref_qbuc1=_inc__deref_qbuc1 + // [84] *(&(volatile byte*) utoa16w::dst) ← ++ *(&(volatile byte*) utoa16w::dst) -- _deref_qbuc1=_inc__deref_qbuc1 inc.z utoa16w.dst bne !+ inc.z utoa16w.dst+1 @@ -1871,7 +1865,7 @@ utoa16n: { jmp __breturn // utoa16n::@return __breturn: - // [86] return + // [85] return rts } // File Data @@ -1908,11 +1902,12 @@ Statement [50] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$6 >> (byte) 4 [ ut Removing always clobbered register reg byte a as potential for zp[1]:29 [ utoa16w::started#2 ] Statement [56] *((volatile byte*) utoa16w::dst) ← (byte) 0 [ ] ( utoa16w:9 [ main::time_start#0 ] { } utoa16w:12 [ main::time_start#0 ] { } utoa16w:15 [ main::time_start#0 ] { } utoa16w:18 [ main::time_start#0 ] { } utoa16w:21 [ main::time_start#0 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:19 [ main::time_start#0 ] -Statement [60] (byte~) utoa10w::$7 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$7 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$7 ] { } ) always clobbers reg byte a +Statement [60] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:7 [ utoa10w::i#2 utoa10w::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ utoa10w::digit#3 utoa10w::digit#1 utoa10w::digit#7 ] Removing always clobbered register reg byte a as potential for zp[1]:11 [ utoa10w::bStarted#2 ] -Statement [61] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$7)) goto utoa10w::@2 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] { } ) always clobbers reg byte a +Statement [61] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$8)) goto utoa10w::@2 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:32 [ utoa10w::$8 ] Statement [62] (byte~) utoa10w::$1 ← (byte) utoa10w::i#2 & (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$1 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$1 ] { } ) always clobbers reg byte a Statement [65] *((byte*) utoa10w::dst#11) ← *((const byte*) DIGITS + (byte) utoa10w::digit#3) [ utoa10w::i#2 utoa10w::value#10 utoa10w::bStarted#2 utoa10w::dst#11 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::bStarted#2 utoa10w::dst#11 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:7 [ utoa10w::i#2 utoa10w::i#1 ] @@ -1921,10 +1916,9 @@ Statement [71] (byte~) utoa10w::$9 ← (byte)(word) utoa10w::value#10 [ utoa10w: Statement [72] *((byte*) utoa10w::dst#4) ← *((const byte*) DIGITS + (byte~) utoa10w::$9) [ utoa10w::dst#4 ] ( utoa10w:26 [ utoa10w::dst#4 ] { } ) always clobbers reg byte a reg byte y Statement [73] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 [ utoa10w::dst#2 ] ( utoa10w:26 [ utoa10w::dst#2 ] { } ) always clobbers reg byte a Statement [74] *((byte*) utoa10w::dst#2) ← (byte) 0 [ ] ( utoa10w:26 [ ] { } ) always clobbers reg byte a reg byte y -Statement [76] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte*) UTOA10_VAL + (byte) utoa10w::i#2) [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 ] { } ) always clobbers reg byte a -Statement [77] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 utoa10w::$8 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 utoa10w::$8 ] { } ) always clobbers reg byte a -Statement [78] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$8) [ utoa10w::i#2 utoa10w::dst#11 utoa10w::value#1 utoa10w::digit#1 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::dst#11 utoa10w::value#1 utoa10w::digit#1 ] { } ) always clobbers reg byte a -Statement [84] *(*(&(volatile byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) [ utoa16w::dst utoa16n::return#4 ] ( utoa16w:9::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:12::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:15::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:18::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:21::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:9::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:12::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:15::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:18::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:21::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:9::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:12::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:15::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:18::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:21::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:9::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } utoa16w:12::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } utoa16w:15::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } utoa16w:18::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } utoa16w:21::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } ) always clobbers reg byte a reg byte y +Statement [76] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte*) UTOA10_VAL + (byte) utoa10w::i#2) [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 utoa10w::$8 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 utoa10w::$8 ] { } ) always clobbers reg byte a +Statement [77] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$8) [ utoa10w::i#2 utoa10w::dst#11 utoa10w::value#1 utoa10w::digit#1 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::dst#11 utoa10w::value#1 utoa10w::digit#1 ] { } ) always clobbers reg byte a +Statement [83] *(*(&(volatile byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) [ utoa16w::dst utoa16n::return#4 ] ( utoa16w:9::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:12::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:15::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:18::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:21::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:9::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:12::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:15::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:18::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:21::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:9::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:12::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:15::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:18::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:21::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:9::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } utoa16w:12::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } utoa16w:15::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } utoa16w:18::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } utoa16w:21::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:15 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] Removing always clobbered register reg byte y as potential for zp[1]:15 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] Statement [2] (byte~) main::$1 ← *((const nomodify byte*) control) & (byte) $80 [ main::$1 ] ( [ main::$1 ] { } ) always clobbers reg byte a @@ -1945,18 +1939,17 @@ Statement [35] if((byte*) cls::sc#1!=(const byte*) cls::screen+(word) $3e7+(byte Statement [39] (byte) utoa16n::nybble#0 ← (byte~) utoa16w::$0 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] ( utoa16w:9 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:12 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:15 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:18 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:21 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16n::nybble#0 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } ) always clobbers reg byte a Statement [50] (byte) utoa16n::nybble#2 ← (byte~) utoa16w::$6 >> (byte) 4 [ utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] ( utoa16w:9 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:12 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:15 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:18 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:21 [ main::time_start#0 utoa16w::dst utoa16w::value#5 utoa16w::started#2 utoa16n::nybble#2 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } ) always clobbers reg byte a Statement [56] *((volatile byte*) utoa16w::dst) ← (byte) 0 [ ] ( utoa16w:9 [ main::time_start#0 ] { } utoa16w:12 [ main::time_start#0 ] { } utoa16w:15 [ main::time_start#0 ] { } utoa16w:18 [ main::time_start#0 ] { } utoa16w:21 [ main::time_start#0 ] { } ) always clobbers reg byte a reg byte y -Statement [60] (byte~) utoa10w::$7 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$7 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$7 ] { } ) always clobbers reg byte a -Statement [61] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$7)) goto utoa10w::@2 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 ] { } ) always clobbers reg byte a +Statement [60] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] { } ) always clobbers reg byte a +Statement [61] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$8)) goto utoa10w::@2 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$8 ] { } ) always clobbers reg byte a Statement [62] (byte~) utoa10w::$1 ← (byte) utoa10w::i#2 & (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$1 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::digit#3 utoa10w::bStarted#2 utoa10w::dst#11 utoa10w::$1 ] { } ) always clobbers reg byte a Statement [65] *((byte*) utoa10w::dst#11) ← *((const byte*) DIGITS + (byte) utoa10w::digit#3) [ utoa10w::i#2 utoa10w::value#10 utoa10w::bStarted#2 utoa10w::dst#11 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::bStarted#2 utoa10w::dst#11 ] { } ) always clobbers reg byte a reg byte y Statement [71] (byte~) utoa10w::$9 ← (byte)(word) utoa10w::value#10 [ utoa10w::dst#4 utoa10w::$9 ] ( utoa10w:26 [ utoa10w::dst#4 utoa10w::$9 ] { } ) always clobbers reg byte a Statement [72] *((byte*) utoa10w::dst#4) ← *((const byte*) DIGITS + (byte~) utoa10w::$9) [ utoa10w::dst#4 ] ( utoa10w:26 [ utoa10w::dst#4 ] { } ) always clobbers reg byte a reg byte y Statement [73] (byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4 [ utoa10w::dst#2 ] ( utoa10w:26 [ utoa10w::dst#2 ] { } ) always clobbers reg byte a Statement [74] *((byte*) utoa10w::dst#2) ← (byte) 0 [ ] ( utoa10w:26 [ ] { } ) always clobbers reg byte a reg byte y -Statement [76] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte*) UTOA10_VAL + (byte) utoa10w::i#2) [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 ] { } ) always clobbers reg byte a -Statement [77] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 utoa10w::$8 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 utoa10w::$8 ] { } ) always clobbers reg byte a -Statement [78] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$8) [ utoa10w::i#2 utoa10w::dst#11 utoa10w::value#1 utoa10w::digit#1 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::dst#11 utoa10w::value#1 utoa10w::digit#1 ] { } ) always clobbers reg byte a -Statement [84] *(*(&(volatile byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) [ utoa16w::dst utoa16n::return#4 ] ( utoa16w:9::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:12::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:15::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:18::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:21::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:9::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:12::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:15::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:18::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:21::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:9::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:12::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:15::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:18::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:21::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:9::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } utoa16w:12::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } utoa16w:15::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } utoa16w:18::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } utoa16w:21::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } ) always clobbers reg byte a reg byte y +Statement [76] (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte*) UTOA10_VAL + (byte) utoa10w::i#2) [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 utoa10w::$8 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::value#10 utoa10w::dst#11 utoa10w::digit#1 utoa10w::$8 ] { } ) always clobbers reg byte a +Statement [77] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$8) [ utoa10w::i#2 utoa10w::dst#11 utoa10w::value#1 utoa10w::digit#1 ] ( utoa10w:26 [ utoa10w::i#2 utoa10w::dst#11 utoa10w::value#1 utoa10w::digit#1 ] { } ) always clobbers reg byte a +Statement [83] *(*(&(volatile byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) [ utoa16w::dst utoa16n::return#4 ] ( utoa16w:9::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:12::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:15::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:18::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:21::utoa16n:40 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#0 = utoa16n::nybble#4 } { utoa16n::return#0 = utoa16n::return#4 } } utoa16w:9::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:12::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:15::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:18::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:21::utoa16n:46 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#1 = utoa16n::nybble#4 } { utoa16n::started#1 = utoa16n::started#7 utoa16w::started#1 } { utoa16n::return#1 = utoa16n::return#4 } } utoa16w:9::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:12::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:15::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:18::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:21::utoa16n:52 [ main::time_start#0 utoa16w::value#5 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#2 = utoa16n::nybble#4 } { utoa16n::started#2 = utoa16n::started#7 utoa16w::started#2 } } utoa16w:9::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } utoa16w:12::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } utoa16w:15::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } utoa16w:18::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } utoa16w:21::utoa16n:55 [ main::time_start#0 utoa16w::dst utoa16n::return#4 ] { { utoa16n::nybble#3 = utoa16n::nybble#4 } } ) always clobbers reg byte a reg byte y Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[2]:3 [ cls::sc#2 cls::sc#1 ] : zp[2]:3 , Potential registers zp[2]:5 [ utoa16w::value#5 ] : zp[2]:5 , @@ -1982,50 +1975,47 @@ Potential registers zp[1]:28 [ utoa16n::return#1 ] : zp[1]:28 , reg byte a , reg Potential registers zp[1]:29 [ utoa16w::started#2 ] : zp[1]:29 , reg byte x , reg byte y , Potential registers zp[1]:30 [ utoa16w::$6 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:31 [ utoa16w::$9 ] : zp[1]:31 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:32 [ utoa10w::$7 ] : zp[1]:32 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:32 [ utoa10w::$8 ] : zp[1]:32 , reg byte x , reg byte y , Potential registers zp[1]:33 [ utoa10w::$1 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:34 [ utoa10w::$9 ] : zp[1]:34 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:35 [ utoa10w::dst#2 ] : zp[2]:35 , -Potential registers zp[1]:37 [ utoa10w::$8 ] : zp[1]:37 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [utoa10w] 63,046.7: zp[2]:12 [ utoa10w::dst#8 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] 23,637: zp[2]:8 [ utoa10w::value#10 utoa10w::value#0 utoa10w::value#1 ] 21,668.83: zp[1]:10 [ utoa10w::digit#3 utoa10w::digit#1 utoa10w::digit#7 ] 21,155.96: zp[1]:7 [ utoa10w::i#2 utoa10w::i#1 ] 20,002: zp[1]:32 [ utoa10w::$7 ] 20,002: zp[1]:33 [ utoa10w::$1 ] 20,002: zp[1]:37 [ utoa10w::$8 ] 2,500.25: zp[1]:11 [ utoa10w::bStarted#2 ] 202: zp[1]:34 [ utoa10w::$9 ] 202: zp[2]:35 [ utoa10w::dst#2 ] +Uplift Scope [utoa10w] 63,824.56: zp[2]:12 [ utoa10w::dst#8 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] 25,002.5: zp[1]:10 [ utoa10w::digit#3 utoa10w::digit#1 utoa10w::digit#7 ] 23,912.31: zp[2]:8 [ utoa10w::value#10 utoa10w::value#0 utoa10w::value#1 ] 20,835.42: zp[1]:7 [ utoa10w::i#2 utoa10w::i#1 ] 20,002: zp[1]:33 [ utoa10w::$1 ] 10,001: zp[1]:32 [ utoa10w::$8 ] 2,500.25: zp[1]:11 [ utoa10w::bStarted#2 ] 202: zp[1]:34 [ utoa10w::$9 ] 202: zp[2]:35 [ utoa10w::dst#2 ] Uplift Scope [utoa16n] 1,119.86: zp[1]:15 [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] 1,087.2: zp[1]:14 [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] 202: zp[1]:25 [ utoa16n::return#0 ] 202: zp[1]:28 [ utoa16n::return#1 ] Uplift Scope [utoa16w] 202: zp[1]:24 [ utoa16w::$0 ] 202: zp[1]:27 [ utoa16w::$3 ] 202: zp[1]:30 [ utoa16w::$6 ] 202: zp[1]:31 [ utoa16w::$9 ] 67.33: zp[1]:26 [ utoa16w::started#1 ] 67.33: zp[1]:29 [ utoa16w::started#2 ] 25.25: zp[2]:5 [ utoa16w::value#5 ] 4.88: zp[2]:20 [ utoa16w::dst ] Uplift Scope [main] 370.33: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:17 [ main::$2 ] 202: zp[1]:18 [ main::rst#0 ] 101: zp[1]:16 [ main::$1 ] 11: zp[1]:22 [ main::time_end#0 ] 11: zp[1]:23 [ main::time#0 ] 1.29: zp[1]:19 [ main::time_start#0 ] Uplift Scope [cls] 303: zp[2]:3 [ cls::sc#2 cls::sc#1 ] Uplift Scope [] -Uplifting [utoa10w] best 28959 combination zp[2]:12 [ utoa10w::dst#8 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] zp[2]:8 [ utoa10w::value#10 utoa10w::value#0 utoa10w::value#1 ] zp[1]:10 [ utoa10w::digit#3 utoa10w::digit#1 utoa10w::digit#7 ] reg byte x [ utoa10w::i#2 utoa10w::i#1 ] reg byte a [ utoa10w::$7 ] reg byte a [ utoa10w::$1 ] zp[1]:37 [ utoa10w::$8 ] zp[1]:11 [ utoa10w::bStarted#2 ] zp[1]:34 [ utoa10w::$9 ] zp[2]:35 [ utoa10w::dst#2 ] -Limited combination testing to 100 combinations of 3072 possible. -Uplifting [utoa16n] best 28907 combination reg byte x [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] reg byte a [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] reg byte x [ utoa16n::return#0 ] reg byte x [ utoa16n::return#1 ] +Uplifting [utoa10w] best 27959 combination zp[2]:12 [ utoa10w::dst#8 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] zp[1]:10 [ utoa10w::digit#3 utoa10w::digit#1 utoa10w::digit#7 ] zp[2]:8 [ utoa10w::value#10 utoa10w::value#0 utoa10w::value#1 ] reg byte x [ utoa10w::i#2 utoa10w::i#1 ] reg byte a [ utoa10w::$1 ] reg byte y [ utoa10w::$8 ] zp[1]:11 [ utoa10w::bStarted#2 ] zp[1]:34 [ utoa10w::$9 ] zp[2]:35 [ utoa10w::dst#2 ] +Limited combination testing to 100 combinations of 576 possible. +Uplifting [utoa16n] best 27907 combination reg byte x [ utoa16n::return#4 utoa16n::started#7 utoa16n::started#1 utoa16n::started#2 ] reg byte a [ utoa16n::nybble#4 utoa16n::nybble#0 utoa16n::nybble#1 utoa16n::nybble#2 utoa16n::nybble#3 ] reg byte x [ utoa16n::return#0 ] reg byte x [ utoa16n::return#1 ] Limited combination testing to 100 combinations of 128 possible. -Uplifting [utoa16w] best 28883 combination reg byte a [ utoa16w::$0 ] reg byte a [ utoa16w::$3 ] reg byte a [ utoa16w::$6 ] reg byte a [ utoa16w::$9 ] zp[1]:26 [ utoa16w::started#1 ] zp[1]:29 [ utoa16w::started#2 ] zp[2]:5 [ utoa16w::value#5 ] zp[2]:20 [ utoa16w::dst ] +Uplifting [utoa16w] best 27883 combination reg byte a [ utoa16w::$0 ] reg byte a [ utoa16w::$3 ] reg byte a [ utoa16w::$6 ] reg byte a [ utoa16w::$9 ] zp[1]:26 [ utoa16w::started#1 ] zp[1]:29 [ utoa16w::started#2 ] zp[2]:5 [ utoa16w::value#5 ] zp[2]:20 [ utoa16w::dst ] Limited combination testing to 100 combinations of 3072 possible. -Uplifting [main] best 26483 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] reg byte a [ main::rst#0 ] zp[1]:16 [ main::$1 ] zp[1]:22 [ main::time_end#0 ] zp[1]:23 [ main::time#0 ] zp[1]:19 [ main::time_start#0 ] +Uplifting [main] best 25483 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] reg byte a [ main::rst#0 ] zp[1]:16 [ main::$1 ] zp[1]:22 [ main::time_end#0 ] zp[1]:23 [ main::time#0 ] zp[1]:19 [ main::time_start#0 ] Limited combination testing to 100 combinations of 3456 possible. -Uplifting [cls] best 26483 combination zp[2]:3 [ cls::sc#2 cls::sc#1 ] -Uplifting [] best 26483 combination +Uplifting [cls] best 25483 combination zp[2]:3 [ cls::sc#2 cls::sc#1 ] +Uplifting [] best 25483 combination Attempting to uplift remaining variables inzp[1]:10 [ utoa10w::digit#3 utoa10w::digit#1 utoa10w::digit#7 ] -Uplifting [utoa10w] best 26483 combination zp[1]:10 [ utoa10w::digit#3 utoa10w::digit#1 utoa10w::digit#7 ] -Attempting to uplift remaining variables inzp[1]:37 [ utoa10w::$8 ] -Uplifting [utoa10w] best 26083 combination reg byte a [ utoa10w::$8 ] +Uplifting [utoa10w] best 25483 combination zp[1]:10 [ utoa10w::digit#3 utoa10w::digit#1 utoa10w::digit#7 ] Attempting to uplift remaining variables inzp[1]:11 [ utoa10w::bStarted#2 ] -Uplifting [utoa10w] best 26083 combination zp[1]:11 [ utoa10w::bStarted#2 ] +Uplifting [utoa10w] best 25483 combination zp[1]:11 [ utoa10w::bStarted#2 ] Attempting to uplift remaining variables inzp[1]:34 [ utoa10w::$9 ] -Uplifting [utoa10w] best 26079 combination reg byte a [ utoa10w::$9 ] +Uplifting [utoa10w] best 25479 combination reg byte a [ utoa10w::$9 ] Attempting to uplift remaining variables inzp[1]:16 [ main::$1 ] -Uplifting [main] best 26079 combination zp[1]:16 [ main::$1 ] +Uplifting [main] best 25479 combination zp[1]:16 [ main::$1 ] Attempting to uplift remaining variables inzp[1]:26 [ utoa16w::started#1 ] -Uplifting [utoa16w] best 26073 combination reg byte x [ utoa16w::started#1 ] +Uplifting [utoa16w] best 25473 combination reg byte x [ utoa16w::started#1 ] Attempting to uplift remaining variables inzp[1]:29 [ utoa16w::started#2 ] -Uplifting [utoa16w] best 26067 combination reg byte x [ utoa16w::started#2 ] +Uplifting [utoa16w] best 25467 combination reg byte x [ utoa16w::started#2 ] Attempting to uplift remaining variables inzp[1]:22 [ main::time_end#0 ] -Uplifting [main] best 26027 combination reg byte x [ main::time_end#0 ] +Uplifting [main] best 25427 combination reg byte x [ main::time_end#0 ] Attempting to uplift remaining variables inzp[1]:23 [ main::time#0 ] -Uplifting [main] best 25967 combination reg byte a [ main::time#0 ] +Uplifting [main] best 25367 combination reg byte a [ main::time#0 ] Attempting to uplift remaining variables inzp[1]:19 [ main::time_start#0 ] -Uplifting [main] best 25967 combination zp[1]:19 [ main::time_start#0 ] +Uplifting [main] best 25367 combination zp[1]:19 [ main::time_start#0 ] Coalescing zero page register [ zp[2]:12 [ utoa10w::dst#8 utoa10w::dst#11 utoa10w::dst#4 utoa10w::dst#1 ] ] with [ zp[2]:35 [ utoa10w::dst#2 ] ] - score: 1 Coalescing zero page register [ zp[2]:5 [ utoa16w::value#5 ] ] with [ zp[2]:3 [ cls::sc#2 cls::sc#1 ] ] Coalescing zero page register [ zp[1]:16 [ main::$1 ] ] with [ zp[1]:10 [ utoa10w::digit#3 utoa10w::digit#1 utoa10w::digit#7 ] ] @@ -2272,11 +2262,11 @@ utoa16w: { lsr lsr // [40] call utoa16n - // [79] phi from utoa16w to utoa16n [phi:utoa16w->utoa16n] + // [78] phi from utoa16w to utoa16n [phi:utoa16w->utoa16n] utoa16n_from_utoa16w: - // [79] phi (byte) utoa16n::started#7 = (byte) 0 [phi:utoa16w->utoa16n#0] -- vbuxx=vbuc1 + // [78] phi (byte) utoa16n::started#7 = (byte) 0 [phi:utoa16w->utoa16n#0] -- vbuxx=vbuc1 ldx #0 - // [79] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#0 [phi:utoa16w->utoa16n#1] -- register_copy + // [78] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#0 [phi:utoa16w->utoa16n#1] -- register_copy jsr utoa16n // [41] (byte) utoa16n::return#0 ← (byte) utoa16n::return#4 jmp __b1 @@ -2289,10 +2279,10 @@ utoa16w: { and #$f // [45] (byte) utoa16n::started#1 ← (byte) utoa16w::started#1 // [46] call utoa16n - // [79] phi from utoa16w::@1 to utoa16n [phi:utoa16w::@1->utoa16n] + // [78] phi from utoa16w::@1 to utoa16n [phi:utoa16w::@1->utoa16n] utoa16n_from___b1: - // [79] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#1 [phi:utoa16w::@1->utoa16n#0] -- register_copy - // [79] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#1 [phi:utoa16w::@1->utoa16n#1] -- register_copy + // [78] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#1 [phi:utoa16w::@1->utoa16n#0] -- register_copy + // [78] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#1 [phi:utoa16w::@1->utoa16n#1] -- register_copy jsr utoa16n // [47] (byte) utoa16n::return#1 ← (byte) utoa16n::return#4 jmp __b2 @@ -2308,10 +2298,10 @@ utoa16w: { lsr // [51] (byte) utoa16n::started#2 ← (byte) utoa16w::started#2 // [52] call utoa16n - // [79] phi from utoa16w::@2 to utoa16n [phi:utoa16w::@2->utoa16n] + // [78] phi from utoa16w::@2 to utoa16n [phi:utoa16w::@2->utoa16n] utoa16n_from___b2: - // [79] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#2 [phi:utoa16w::@2->utoa16n#0] -- register_copy - // [79] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#2 [phi:utoa16w::@2->utoa16n#1] -- register_copy + // [78] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#2 [phi:utoa16w::@2->utoa16n#0] -- register_copy + // [78] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#2 [phi:utoa16w::@2->utoa16n#1] -- register_copy jsr utoa16n jmp __b3 // utoa16w::@3 @@ -2321,11 +2311,11 @@ utoa16w: { // [54] (byte) utoa16n::nybble#3 ← (byte~) utoa16w::$9 & (byte) $f -- vbuaa=vbuaa_band_vbuc1 and #$f // [55] call utoa16n - // [79] phi from utoa16w::@3 to utoa16n [phi:utoa16w::@3->utoa16n] + // [78] phi from utoa16w::@3 to utoa16n [phi:utoa16w::@3->utoa16n] utoa16n_from___b3: - // [79] phi (byte) utoa16n::started#7 = (byte) 1 [phi:utoa16w::@3->utoa16n#0] -- vbuxx=vbuc1 + // [78] phi (byte) utoa16n::started#7 = (byte) 1 [phi:utoa16w::@3->utoa16n#0] -- vbuxx=vbuc1 ldx #1 - // [79] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#3 [phi:utoa16w::@3->utoa16n#1] -- register_copy + // [78] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#3 [phi:utoa16w::@3->utoa16n#1] -- register_copy jsr utoa16n jmp __b4 // utoa16w::@4 @@ -2375,11 +2365,11 @@ utoa10w: { jmp __b1 // utoa10w::@1 __b1: - // [60] (byte~) utoa10w::$7 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + // [60] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuyy=vbuxx_rol_1 txa asl - // [61] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$7)) goto utoa10w::@2 -- vwuz1_ge_pwuc1_derefidx_vbuaa_then_la1 tay + // [61] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$8)) goto utoa10w::@2 -- vwuz1_ge_pwuc1_derefidx_vbuyy_then_la1 lda UTOA10_SUB+1,y cmp.z value+1 bne !+ @@ -2474,11 +2464,7 @@ utoa10w: { clc adc.z digit sta.z digit - // [77] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa - asl - // [78] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$8) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa - tay + // [77] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$8) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuyy sec lda.z value sbc UTOA10_SUB,y @@ -2501,32 +2487,32 @@ utoa10w: { // Hexadecimal utoa() for a single nybble // utoa16n(byte register(A) nybble, byte register(X) started) utoa16n: { - // [80] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 -- vbuaa_eq_0_then_la1 + // [79] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq __b3_from_utoa16n - // [82] phi from utoa16n to utoa16n::@1 [phi:utoa16n->utoa16n::@1] + // [81] phi from utoa16n to utoa16n::@1 [phi:utoa16n->utoa16n::@1] __b1_from_utoa16n: - // [82] phi (byte) utoa16n::return#4 = (byte) 1 [phi:utoa16n->utoa16n::@1#0] -- vbuxx=vbuc1 + // [81] phi (byte) utoa16n::return#4 = (byte) 1 [phi:utoa16n->utoa16n::@1#0] -- vbuxx=vbuc1 ldx #1 jmp __b1 - // [81] phi from utoa16n to utoa16n::@3 [phi:utoa16n->utoa16n::@3] + // [80] phi from utoa16n to utoa16n::@3 [phi:utoa16n->utoa16n::@3] __b3_from_utoa16n: jmp __b3 // utoa16n::@3 __b3: - // [82] phi from utoa16n::@3 to utoa16n::@1 [phi:utoa16n::@3->utoa16n::@1] + // [81] phi from utoa16n::@3 to utoa16n::@1 [phi:utoa16n::@3->utoa16n::@1] __b1_from___b3: - // [82] phi (byte) utoa16n::return#4 = (byte) utoa16n::started#7 [phi:utoa16n::@3->utoa16n::@1#0] -- register_copy + // [81] phi (byte) utoa16n::return#4 = (byte) utoa16n::started#7 [phi:utoa16n::@3->utoa16n::@1#0] -- register_copy jmp __b1 // utoa16n::@1 __b1: - // [83] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return -- vbuxx_eq_0_then_la1 + // [82] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return -- vbuxx_eq_0_then_la1 cpx #0 beq __breturn jmp __b2 // utoa16n::@2 __b2: - // [84] *(*(&(volatile byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) -- _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuaa + // [83] *(*(&(volatile byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) -- _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuaa tay lda DIGITS,y ldy.z utoa16w.dst @@ -2535,7 +2521,7 @@ utoa16n: { sty.z $ff ldy #0 sta ($fe),y - // [85] *(&(volatile byte*) utoa16w::dst) ← ++ *(&(volatile byte*) utoa16w::dst) -- _deref_qbuc1=_inc__deref_qbuc1 + // [84] *(&(volatile byte*) utoa16w::dst) ← ++ *(&(volatile byte*) utoa16w::dst) -- _deref_qbuc1=_inc__deref_qbuc1 inc.z utoa16w.dst bne !+ inc.z utoa16w.dst+1 @@ -2543,7 +2529,7 @@ utoa16n: { jmp __breturn // utoa16n::@return __breturn: - // [86] return + // [85] return rts } // File Data @@ -2689,8 +2675,7 @@ FINAL SYMBOL TABLE (const nomodify byte*) raster = (byte*) 53266 (void()) utoa10w((word) utoa10w::value , (byte*) utoa10w::dst) (byte~) utoa10w::$1 reg byte a 20002.0 -(byte~) utoa10w::$7 reg byte a 20002.0 -(byte~) utoa10w::$8 reg byte a 20002.0 +(byte~) utoa10w::$8 reg byte y 10001.0 (byte~) utoa10w::$9 reg byte a 202.0 (label) utoa10w::@1 (label) utoa10w::@2 @@ -2704,22 +2689,22 @@ FINAL SYMBOL TABLE (byte) utoa10w::bStarted (byte) utoa10w::bStarted#2 bStarted zp[1]:7 2500.25 (byte) utoa10w::digit -(byte) utoa10w::digit#1 digit zp[1]:6 6667.333333333333 +(byte) utoa10w::digit#1 digit zp[1]:6 10001.0 (byte) utoa10w::digit#3 digit zp[1]:6 8334.166666666666 (byte) utoa10w::digit#7 digit zp[1]:6 6667.333333333333 (byte*) utoa10w::dst (byte*) utoa10w::dst#1 dst zp[2]:4 20002.0 -(byte*) utoa10w::dst#11 dst zp[2]:4 7000.700000000001 +(byte*) utoa10w::dst#11 dst zp[2]:4 7778.555555555557 (byte*) utoa10w::dst#2 dst zp[2]:4 202.0 (byte*) utoa10w::dst#4 dst zp[2]:4 6041.0 (byte*) utoa10w::dst#8 dst zp[2]:4 30003.0 (byte) utoa10w::i (byte) utoa10w::i#1 reg byte x 15001.5 -(byte) utoa10w::i#2 reg byte x 6154.461538461538 +(byte) utoa10w::i#2 reg byte x 5833.916666666667 (word) utoa10w::value (word) utoa10w::value#0 value zp[2]:2 56.0 (word) utoa10w::value#1 value zp[2]:2 20002.0 -(word) utoa10w::value#10 value zp[2]:2 3579.000000000001 +(word) utoa10w::value#10 value zp[2]:2 3854.3076923076924 (byte()) utoa16n((byte) utoa16n::nybble , (word**) utoa16n::dst , (byte) utoa16n::started) (label) utoa16n::@1 (label) utoa16n::@2 @@ -2778,14 +2763,13 @@ reg byte x [ utoa16n::return#1 ] reg byte x [ utoa16w::started#2 ] reg byte a [ utoa16w::$6 ] reg byte a [ utoa16w::$9 ] -reg byte a [ utoa10w::$7 ] +reg byte y [ utoa10w::$8 ] reg byte a [ utoa10w::$1 ] reg byte a [ utoa10w::$9 ] -reg byte a [ utoa10w::$8 ] FINAL ASSEMBLER -Score: 22318 +Score: 21718 // File Comments // Testing hex to decimal conversion @@ -3020,10 +3004,10 @@ utoa16w: { lsr lsr // [40] call utoa16n - // [79] phi from utoa16w to utoa16n [phi:utoa16w->utoa16n] - // [79] phi (byte) utoa16n::started#7 = (byte) 0 [phi:utoa16w->utoa16n#0] -- vbuxx=vbuc1 + // [78] phi from utoa16w to utoa16n [phi:utoa16w->utoa16n] + // [78] phi (byte) utoa16n::started#7 = (byte) 0 [phi:utoa16w->utoa16n#0] -- vbuxx=vbuc1 ldx #0 - // [79] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#0 [phi:utoa16w->utoa16n#1] -- register_copy + // [78] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#0 [phi:utoa16w->utoa16n#1] -- register_copy jsr utoa16n // utoa16n((>value)>>4, &dst, started) // [41] (byte) utoa16n::return#0 ← (byte) utoa16n::return#4 @@ -3038,9 +3022,9 @@ utoa16w: { and #$f // [45] (byte) utoa16n::started#1 ← (byte) utoa16w::started#1 // [46] call utoa16n - // [79] phi from utoa16w::@1 to utoa16n [phi:utoa16w::@1->utoa16n] - // [79] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#1 [phi:utoa16w::@1->utoa16n#0] -- register_copy - // [79] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#1 [phi:utoa16w::@1->utoa16n#1] -- register_copy + // [78] phi from utoa16w::@1 to utoa16n [phi:utoa16w::@1->utoa16n] + // [78] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#1 [phi:utoa16w::@1->utoa16n#0] -- register_copy + // [78] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#1 [phi:utoa16w::@1->utoa16n#1] -- register_copy jsr utoa16n // utoa16n((>value)&0x0f, &dst, started) // [47] (byte) utoa16n::return#1 ← (byte) utoa16n::return#4 @@ -3058,9 +3042,9 @@ utoa16w: { lsr // [51] (byte) utoa16n::started#2 ← (byte) utoa16w::started#2 // [52] call utoa16n - // [79] phi from utoa16w::@2 to utoa16n [phi:utoa16w::@2->utoa16n] - // [79] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#2 [phi:utoa16w::@2->utoa16n#0] -- register_copy - // [79] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#2 [phi:utoa16w::@2->utoa16n#1] -- register_copy + // [78] phi from utoa16w::@2 to utoa16n [phi:utoa16w::@2->utoa16n] + // [78] phi (byte) utoa16n::started#7 = (byte) utoa16n::started#2 [phi:utoa16w::@2->utoa16n#0] -- register_copy + // [78] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#2 [phi:utoa16w::@2->utoa16n#1] -- register_copy jsr utoa16n // utoa16w::@3 // utoa16n] - // [79] phi (byte) utoa16n::started#7 = (byte) 1 [phi:utoa16w::@3->utoa16n#0] -- vbuxx=vbuc1 + // [78] phi from utoa16w::@3 to utoa16n [phi:utoa16w::@3->utoa16n] + // [78] phi (byte) utoa16n::started#7 = (byte) 1 [phi:utoa16w::@3->utoa16n#0] -- vbuxx=vbuc1 ldx #1 - // [79] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#3 [phi:utoa16w::@3->utoa16n#1] -- register_copy + // [78] phi (byte) utoa16n::nybble#4 = (byte) utoa16n::nybble#3 [phi:utoa16w::@3->utoa16n#1] -- register_copy jsr utoa16n // utoa16w::@4 // *dst = 0 @@ -3117,12 +3101,12 @@ utoa10w: { // utoa10w::@1 __b1: // value>=UTOA10_SUB[i] - // [60] (byte~) utoa10w::$7 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + // [60] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuyy=vbuxx_rol_1 txa asl - // while(value>=UTOA10_SUB[i]) - // [61] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$7)) goto utoa10w::@2 -- vwuz1_ge_pwuc1_derefidx_vbuaa_then_la1 tay + // while(value>=UTOA10_SUB[i]) + // [61] if((word) utoa10w::value#10>=*((const word*) UTOA10_SUB + (byte~) utoa10w::$8)) goto utoa10w::@2 -- vwuz1_ge_pwuc1_derefidx_vbuyy_then_la1 lda UTOA10_SUB+1,y cmp.z value+1 bne !+ @@ -3212,11 +3196,7 @@ utoa10w: { adc.z digit sta.z digit // value -= UTOA10_SUB[i] - // [77] (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa - asl - // [78] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$8) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa - tay + // [77] (word) utoa10w::value#1 ← (word) utoa10w::value#10 - *((const word*) UTOA10_SUB + (byte~) utoa10w::$8) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuyy sec lda.z value sbc UTOA10_SUB,y @@ -3239,25 +3219,25 @@ utoa10w: { // utoa16n(byte register(A) nybble, byte register(X) started) utoa16n: { // if(nybble!=0) - // [80] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 -- vbuaa_eq_0_then_la1 + // [79] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq __b1 - // [82] phi from utoa16n to utoa16n::@1 [phi:utoa16n->utoa16n::@1] - // [82] phi (byte) utoa16n::return#4 = (byte) 1 [phi:utoa16n->utoa16n::@1#0] -- vbuxx=vbuc1 + // [81] phi from utoa16n to utoa16n::@1 [phi:utoa16n->utoa16n::@1] + // [81] phi (byte) utoa16n::return#4 = (byte) 1 [phi:utoa16n->utoa16n::@1#0] -- vbuxx=vbuc1 ldx #1 - // [81] phi from utoa16n to utoa16n::@3 [phi:utoa16n->utoa16n::@3] + // [80] phi from utoa16n to utoa16n::@3 [phi:utoa16n->utoa16n::@3] // utoa16n::@3 - // [82] phi from utoa16n::@3 to utoa16n::@1 [phi:utoa16n::@3->utoa16n::@1] - // [82] phi (byte) utoa16n::return#4 = (byte) utoa16n::started#7 [phi:utoa16n::@3->utoa16n::@1#0] -- register_copy + // [81] phi from utoa16n::@3 to utoa16n::@1 [phi:utoa16n::@3->utoa16n::@1] + // [81] phi (byte) utoa16n::return#4 = (byte) utoa16n::started#7 [phi:utoa16n::@3->utoa16n::@1#0] -- register_copy // utoa16n::@1 __b1: // if(started!=0) - // [83] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return -- vbuxx_eq_0_then_la1 + // [82] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@return -- vbuxx_eq_0_then_la1 cpx #0 beq __breturn // utoa16n::@2 // *(*dst)++ = DIGITS[nybble] - // [84] *(*(&(volatile byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) -- _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuaa + // [83] *(*(&(volatile byte*) utoa16w::dst)) ← *((const byte*) DIGITS + (byte) utoa16n::nybble#4) -- _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuaa tay lda DIGITS,y ldy.z utoa16w.dst @@ -3267,7 +3247,7 @@ utoa16n: { ldy #0 sta ($fe),y // *(*dst)++ = DIGITS[nybble]; - // [85] *(&(volatile byte*) utoa16w::dst) ← ++ *(&(volatile byte*) utoa16w::dst) -- _deref_qbuc1=_inc__deref_qbuc1 + // [84] *(&(volatile byte*) utoa16w::dst) ← ++ *(&(volatile byte*) utoa16w::dst) -- _deref_qbuc1=_inc__deref_qbuc1 inc.z utoa16w.dst bne !+ inc.z utoa16w.dst+1 @@ -3275,7 +3255,7 @@ utoa16n: { // utoa16n::@return __breturn: // } - // [86] return + // [85] return rts } // File Data diff --git a/src/test/ref/hex2dec.sym b/src/test/ref/hex2dec.sym index 693d67b21..d836a5a7f 100644 --- a/src/test/ref/hex2dec.sym +++ b/src/test/ref/hex2dec.sym @@ -38,8 +38,7 @@ (const nomodify byte*) raster = (byte*) 53266 (void()) utoa10w((word) utoa10w::value , (byte*) utoa10w::dst) (byte~) utoa10w::$1 reg byte a 20002.0 -(byte~) utoa10w::$7 reg byte a 20002.0 -(byte~) utoa10w::$8 reg byte a 20002.0 +(byte~) utoa10w::$8 reg byte y 10001.0 (byte~) utoa10w::$9 reg byte a 202.0 (label) utoa10w::@1 (label) utoa10w::@2 @@ -53,22 +52,22 @@ (byte) utoa10w::bStarted (byte) utoa10w::bStarted#2 bStarted zp[1]:7 2500.25 (byte) utoa10w::digit -(byte) utoa10w::digit#1 digit zp[1]:6 6667.333333333333 +(byte) utoa10w::digit#1 digit zp[1]:6 10001.0 (byte) utoa10w::digit#3 digit zp[1]:6 8334.166666666666 (byte) utoa10w::digit#7 digit zp[1]:6 6667.333333333333 (byte*) utoa10w::dst (byte*) utoa10w::dst#1 dst zp[2]:4 20002.0 -(byte*) utoa10w::dst#11 dst zp[2]:4 7000.700000000001 +(byte*) utoa10w::dst#11 dst zp[2]:4 7778.555555555557 (byte*) utoa10w::dst#2 dst zp[2]:4 202.0 (byte*) utoa10w::dst#4 dst zp[2]:4 6041.0 (byte*) utoa10w::dst#8 dst zp[2]:4 30003.0 (byte) utoa10w::i (byte) utoa10w::i#1 reg byte x 15001.5 -(byte) utoa10w::i#2 reg byte x 6154.461538461538 +(byte) utoa10w::i#2 reg byte x 5833.916666666667 (word) utoa10w::value (word) utoa10w::value#0 value zp[2]:2 56.0 (word) utoa10w::value#1 value zp[2]:2 20002.0 -(word) utoa10w::value#10 value zp[2]:2 3579.000000000001 +(word) utoa10w::value#10 value zp[2]:2 3854.3076923076924 (byte()) utoa16n((byte) utoa16n::nybble , (word**) utoa16n::dst , (byte) utoa16n::started) (label) utoa16n::@1 (label) utoa16n::@2 @@ -127,7 +126,6 @@ reg byte x [ utoa16n::return#1 ] reg byte x [ utoa16w::started#2 ] reg byte a [ utoa16w::$6 ] reg byte a [ utoa16w::$9 ] -reg byte a [ utoa10w::$7 ] +reg byte y [ utoa10w::$8 ] reg byte a [ utoa10w::$1 ] reg byte a [ utoa10w::$9 ] -reg byte a [ utoa10w::$8 ] diff --git a/src/test/ref/index-sizeof-reuse-2.asm b/src/test/ref/index-sizeof-reuse-2.asm index 7ecd489b5..0ae4f588f 100644 --- a/src/test/ref/index-sizeof-reuse-2.asm +++ b/src/test/ref/index-sizeof-reuse-2.asm @@ -60,23 +60,17 @@ main: { bcc __b6 !: // entities[i] =0 - lda.z i - asl - tay lda #0 - sta entities,y - sta entities+1,y + sta entities,x + sta entities+1,x __b6: // line[entities[i]] = '*' - lda.z i - asl - tay clc lda.z line - adc entities,y + adc entities,x sta.z __11 lda.z line+1 - adc entities+1,y + adc entities+1,x sta.z __11+1 // Draw symbol lda #'*' diff --git a/src/test/ref/index-sizeof-reuse-2.cfg b/src/test/ref/index-sizeof-reuse-2.cfg index 07f874010..2036b1f49 100644 --- a/src/test/ref/index-sizeof-reuse-2.cfg +++ b/src/test/ref/index-sizeof-reuse-2.cfg @@ -18,20 +18,18 @@ main::@5: scope:[main] from main::@3 [5] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) $f to:main::@1 main::@4: scope:[main] from main::@3 - [6] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 - [7] (byte~) main::$9 ← (byte)*((const word*) entities + (byte~) main::$5) + [6] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 + [7] (byte~) main::$9 ← (byte)*((const word*) entities + (byte~) main::$7) [8] *((byte*) main::line#2 + (byte~) main::$9) ← (byte) ' ' - [9] *((const word*) entities + (byte~) main::$5) ← *((const word*) entities + (byte~) main::$5) + (byte) 1 - [10] if(*((const word*) entities + (byte~) main::$5)<(byte) $27+(byte) 1) goto main::@6 + [9] *((const word*) entities + (byte~) main::$7) ← *((const word*) entities + (byte~) main::$7) + (byte) 1 + [10] if(*((const word*) entities + (byte~) main::$7)<(byte) $27+(byte) 1) goto main::@6 to:main::@7 main::@7: scope:[main] from main::@4 - [11] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 - [12] *((const word*) entities + (byte~) main::$8) ← (byte) 0 + [11] *((const word*) entities + (byte~) main::$7) ← (byte) 0 to:main::@6 main::@6: scope:[main] from main::@4 main::@7 - [13] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 - [14] (byte*~) main::$11 ← (byte*) main::line#2 + *((const word*) entities + (byte~) main::$7) - [15] *((byte*~) main::$11) ← (byte) '*' - [16] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 - [17] (byte) main::i#1 ← ++ (byte) main::i#2 + [12] (byte*~) main::$11 ← (byte*) main::line#2 + *((const word*) entities + (byte~) main::$7) + [13] *((byte*~) main::$11) ← (byte) '*' + [14] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 + [15] (byte) main::i#1 ← ++ (byte) main::i#2 to:main::@3 diff --git a/src/test/ref/index-sizeof-reuse-2.log b/src/test/ref/index-sizeof-reuse-2.log index 48304d237..b63389368 100644 --- a/src/test/ref/index-sizeof-reuse-2.log +++ b/src/test/ref/index-sizeof-reuse-2.log @@ -197,14 +197,19 @@ Inlining constant with var siblings (const byte) main::i#0 Constant inlined main::line#0 = (const nomodify byte*) SCREEN Constant inlined main::i#0 = (byte) 0 Successful SSA optimization Pass2ConstantInlining +Identified duplicate assignment right side [11] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 +Identified duplicate assignment right side [16] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 +Successful SSA optimization Pass2DuplicateRValueIdentification Eliminating unused constant (const byte) SIZEOF_WORD Successful SSA optimization PassNEliminateUnusedVars +Alias main::$7 = main::$5 main::$8 +Successful SSA optimization Pass2AliasElimination Adding NOP phi() at start of main::@1 CALL GRAPH Created 2 initial phi equivalence classes -Coalesced [19] main::i#6 ← main::i#1 -Coalesced [20] main::line#6 ← main::line#1 +Coalesced [17] main::i#6 ← main::i#1 +Coalesced [18] main::line#6 ← main::line#1 Coalesced down to 2 phi equivalence classes Culled Empty Block (label) main::@1 Renumbering block main::@2 to main::@1 @@ -236,62 +241,52 @@ main::@5: scope:[main] from main::@3 [5] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) $f to:main::@1 main::@4: scope:[main] from main::@3 - [6] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 - [7] (byte~) main::$9 ← (byte)*((const word*) entities + (byte~) main::$5) + [6] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 + [7] (byte~) main::$9 ← (byte)*((const word*) entities + (byte~) main::$7) [8] *((byte*) main::line#2 + (byte~) main::$9) ← (byte) ' ' - [9] *((const word*) entities + (byte~) main::$5) ← *((const word*) entities + (byte~) main::$5) + (byte) 1 - [10] if(*((const word*) entities + (byte~) main::$5)<(byte) $27+(byte) 1) goto main::@6 + [9] *((const word*) entities + (byte~) main::$7) ← *((const word*) entities + (byte~) main::$7) + (byte) 1 + [10] if(*((const word*) entities + (byte~) main::$7)<(byte) $27+(byte) 1) goto main::@6 to:main::@7 main::@7: scope:[main] from main::@4 - [11] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 - [12] *((const word*) entities + (byte~) main::$8) ← (byte) 0 + [11] *((const word*) entities + (byte~) main::$7) ← (byte) 0 to:main::@6 main::@6: scope:[main] from main::@4 main::@7 - [13] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 - [14] (byte*~) main::$11 ← (byte*) main::line#2 + *((const word*) entities + (byte~) main::$7) - [15] *((byte*~) main::$11) ← (byte) '*' - [16] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 - [17] (byte) main::i#1 ← ++ (byte) main::i#2 + [12] (byte*~) main::$11 ← (byte*) main::line#2 + *((const word*) entities + (byte~) main::$7) + [13] *((byte*~) main::$11) ← (byte) '*' + [14] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 + [15] (byte) main::i#1 ← ++ (byte) main::i#2 to:main::@3 VARIABLE REGISTER WEIGHTS (void()) main() (byte*~) main::$11 202.0 -(byte~) main::$5 101.0 -(byte~) main::$7 202.0 -(byte~) main::$8 202.0 +(byte~) main::$7 100.99999999999999 (byte~) main::$9 202.0 (byte) main::i (byte) main::i#1 202.0 -(byte) main::i#2 46.61538461538461 +(byte) main::i#2 36.72727272727273 (byte*) main::line (byte*) main::line#1 101.0 -(byte*) main::line#2 33.666666666666664 +(byte*) main::line#2 40.4 Initial phi equivalence classes [ main::i#2 main::i#1 ] [ main::line#2 main::line#1 ] -Added variable main::$5 to live range equivalence class [ main::$5 ] -Added variable main::$9 to live range equivalence class [ main::$9 ] -Added variable main::$8 to live range equivalence class [ main::$8 ] Added variable main::$7 to live range equivalence class [ main::$7 ] +Added variable main::$9 to live range equivalence class [ main::$9 ] Added variable main::$11 to live range equivalence class [ main::$11 ] Complete equivalence classes [ main::i#2 main::i#1 ] [ main::line#2 main::line#1 ] -[ main::$5 ] -[ main::$9 ] -[ main::$8 ] [ main::$7 ] +[ main::$9 ] [ main::$11 ] Allocated zp[1]:2 [ main::i#2 main::i#1 ] Allocated zp[2]:3 [ main::line#2 main::line#1 ] -Allocated zp[1]:5 [ main::$5 ] +Allocated zp[1]:5 [ main::$7 ] Allocated zp[1]:6 [ main::$9 ] -Allocated zp[1]:7 [ main::$8 ] -Allocated zp[1]:8 [ main::$7 ] -Allocated zp[2]:9 [ main::$11 ] +Allocated zp[2]:7 [ main::$11 ] INITIAL ASM Target platform is c64basic / MOS6502X @@ -307,14 +302,12 @@ Target platform is c64basic / MOS6502X .label SCREEN = $400 // main main: { - .label __5 = 5 - .label __7 = 8 - .label __8 = 7 + .label __7 = 5 .label __9 = 6 // Move the entities .label line = 3 .label i = 2 - .label __11 = 9 + .label __11 = 7 // asm { sei } sei jmp __b1 @@ -357,12 +350,12 @@ main: { jmp __b1 // main::@4 __b4: - // [6] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [6] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i asl - sta.z __5 - // [7] (byte~) main::$9 ← (byte)*((const word*) entities + (byte~) main::$5) -- vbuz1=_byte_pwuc1_derefidx_vbuz2 - ldy.z __5 + sta.z __7 + // [7] (byte~) main::$9 ← (byte)*((const word*) entities + (byte~) main::$7) -- vbuz1=_byte_pwuc1_derefidx_vbuz2 + ldy.z __7 lda entities,y sta.z __9 // [8] *((byte*) main::line#2 + (byte~) main::$9) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1 @@ -370,15 +363,15 @@ main: { lda #' ' ldy.z __9 sta (line),y - // [9] *((const word*) entities + (byte~) main::$5) ← *((const word*) entities + (byte~) main::$5) + (byte) 1 -- pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_plus_1 + // [9] *((const word*) entities + (byte~) main::$7) ← *((const word*) entities + (byte~) main::$7) + (byte) 1 -- pwuc1_derefidx_vbuz1=pwuc1_derefidx_vbuz1_plus_1 // Move by velocity - ldx.z __5 + ldx.z __7 inc entities,x bne !+ inc entities+1,x !: - // [10] if(*((const word*) entities + (byte~) main::$5)<(byte) $27+(byte) 1) goto main::@6 -- pwuc1_derefidx_vbuz1_lt_vbuc2_then_la1 - ldy.z __5 + // [10] if(*((const word*) entities + (byte~) main::$7)<(byte) $27+(byte) 1) goto main::@6 -- pwuc1_derefidx_vbuz1_lt_vbuc2_then_la1 + ldy.z __7 lda entities+1,y bne !+ lda entities,y @@ -388,24 +381,16 @@ main: { jmp __b7 // main::@7 __b7: - // [11] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 - lda.z i - asl - sta.z __8 - // [12] *((const word*) entities + (byte~) main::$8) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 + // [11] *((const word*) entities + (byte~) main::$7) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2 lda #0 - ldy.z __8 + ldy.z __7 sta entities,y lda #0 sta entities+1,y jmp __b6 // main::@6 __b6: - // [13] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 - lda.z i - asl - sta.z __7 - // [14] (byte*~) main::$11 ← (byte*) main::line#2 + *((const word*) entities + (byte~) main::$7) -- pbuz1=pbuz2_plus_pwuc1_derefidx_vbuz3 + // [12] (byte*~) main::$11 ← (byte*) main::line#2 + *((const word*) entities + (byte~) main::$7) -- pbuz1=pbuz2_plus_pwuc1_derefidx_vbuz3 ldy.z __7 clc lda.z line @@ -414,12 +399,12 @@ main: { lda.z line+1 adc entities+1,y sta.z __11+1 - // [15] *((byte*~) main::$11) ← (byte) '*' -- _deref_pbuz1=vbuc1 + // [13] *((byte*~) main::$11) ← (byte) '*' -- _deref_pbuz1=vbuc1 // Draw symbol lda #'*' ldy #0 sta (__11),y - // [16] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [14] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 // Next line lda #$28 clc @@ -428,7 +413,7 @@ main: { bcc !+ inc.z line+1 !: - // [17] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + // [15] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc.z i // [3] phi from main::@6 to main::@3 [phi:main::@6->main::@3] __b3_from___b6: @@ -443,52 +428,43 @@ REGISTER UPLIFT POTENTIAL REGISTERS Statement [1] if(*((const nomodify byte*) VIC_RASTER)!=(byte) $ff) goto main::@1 [ ] ( [ ] { } ) always clobbers reg byte a Statement [2] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a Statement [5] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) $f [ ] ( [ ] { } ) always clobbers reg byte a -Statement [6] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::line#2 main::$5 ] ( [ main::i#2 main::line#2 main::$5 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::line#2 main::$7 ] ( [ main::i#2 main::line#2 main::$7 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (byte~) main::$9 ← (byte)*((const word*) entities + (byte~) main::$5) [ main::i#2 main::line#2 main::$5 main::$9 ] ( [ main::i#2 main::line#2 main::$5 main::$9 ] { } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::$5 ] -Statement [8] *((byte*) main::line#2 + (byte~) main::$9) ← (byte) ' ' [ main::i#2 main::line#2 main::$5 ] ( [ main::i#2 main::line#2 main::$5 ] { } ) always clobbers reg byte a -Statement [10] if(*((const word*) entities + (byte~) main::$5)<(byte) $27+(byte) 1) goto main::@6 [ main::i#2 main::line#2 ] ( [ main::i#2 main::line#2 ] { } ) always clobbers reg byte a -Statement [11] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::line#2 main::$8 ] ( [ main::i#2 main::line#2 main::$8 ] { } ) always clobbers reg byte a -Statement [12] *((const word*) entities + (byte~) main::$8) ← (byte) 0 [ main::i#2 main::line#2 ] ( [ main::i#2 main::line#2 ] { } ) always clobbers reg byte a -Statement [13] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::line#2 main::$7 ] ( [ main::i#2 main::line#2 main::$7 ] { } ) always clobbers reg byte a -Statement [14] (byte*~) main::$11 ← (byte*) main::line#2 + *((const word*) entities + (byte~) main::$7) [ main::i#2 main::line#2 main::$11 ] ( [ main::i#2 main::line#2 main::$11 ] { } ) always clobbers reg byte a -Statement [15] *((byte*~) main::$11) ← (byte) '*' [ main::i#2 main::line#2 ] ( [ main::i#2 main::line#2 ] { } ) always clobbers reg byte a reg byte y +Statement [7] (byte~) main::$9 ← (byte)*((const word*) entities + (byte~) main::$7) [ main::i#2 main::line#2 main::$7 main::$9 ] ( [ main::i#2 main::line#2 main::$7 main::$9 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::$7 ] +Statement [8] *((byte*) main::line#2 + (byte~) main::$9) ← (byte) ' ' [ main::i#2 main::line#2 main::$7 ] ( [ main::i#2 main::line#2 main::$7 ] { } ) always clobbers reg byte a +Statement [10] if(*((const word*) entities + (byte~) main::$7)<(byte) $27+(byte) 1) goto main::@6 [ main::i#2 main::line#2 main::$7 ] ( [ main::i#2 main::line#2 main::$7 ] { } ) always clobbers reg byte a +Statement [11] *((const word*) entities + (byte~) main::$7) ← (byte) 0 [ main::i#2 main::line#2 main::$7 ] ( [ main::i#2 main::line#2 main::$7 ] { } ) always clobbers reg byte a +Statement [12] (byte*~) main::$11 ← (byte*) main::line#2 + *((const word*) entities + (byte~) main::$7) [ main::i#2 main::line#2 main::$11 ] ( [ main::i#2 main::line#2 main::$11 ] { } ) always clobbers reg byte a +Statement [13] *((byte*~) main::$11) ← (byte) '*' [ main::i#2 main::line#2 ] ( [ main::i#2 main::line#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [16] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 [ main::i#2 main::line#1 ] ( [ main::i#2 main::line#1 ] { } ) always clobbers reg byte a +Statement [14] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 [ main::i#2 main::line#1 ] ( [ main::i#2 main::line#1 ] { } ) always clobbers reg byte a Statement [1] if(*((const nomodify byte*) VIC_RASTER)!=(byte) $ff) goto main::@1 [ ] ( [ ] { } ) always clobbers reg byte a Statement [2] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a Statement [5] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) $f [ ] ( [ ] { } ) always clobbers reg byte a -Statement [6] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::line#2 main::$5 ] ( [ main::i#2 main::line#2 main::$5 ] { } ) always clobbers reg byte a -Statement [7] (byte~) main::$9 ← (byte)*((const word*) entities + (byte~) main::$5) [ main::i#2 main::line#2 main::$5 main::$9 ] ( [ main::i#2 main::line#2 main::$5 main::$9 ] { } ) always clobbers reg byte a -Statement [8] *((byte*) main::line#2 + (byte~) main::$9) ← (byte) ' ' [ main::i#2 main::line#2 main::$5 ] ( [ main::i#2 main::line#2 main::$5 ] { } ) always clobbers reg byte a -Statement [10] if(*((const word*) entities + (byte~) main::$5)<(byte) $27+(byte) 1) goto main::@6 [ main::i#2 main::line#2 ] ( [ main::i#2 main::line#2 ] { } ) always clobbers reg byte a -Statement [11] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::line#2 main::$8 ] ( [ main::i#2 main::line#2 main::$8 ] { } ) always clobbers reg byte a -Statement [12] *((const word*) entities + (byte~) main::$8) ← (byte) 0 [ main::i#2 main::line#2 ] ( [ main::i#2 main::line#2 ] { } ) always clobbers reg byte a -Statement [13] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::line#2 main::$7 ] ( [ main::i#2 main::line#2 main::$7 ] { } ) always clobbers reg byte a -Statement [14] (byte*~) main::$11 ← (byte*) main::line#2 + *((const word*) entities + (byte~) main::$7) [ main::i#2 main::line#2 main::$11 ] ( [ main::i#2 main::line#2 main::$11 ] { } ) always clobbers reg byte a -Statement [15] *((byte*~) main::$11) ← (byte) '*' [ main::i#2 main::line#2 ] ( [ main::i#2 main::line#2 ] { } ) always clobbers reg byte a reg byte y -Statement [16] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 [ main::i#2 main::line#1 ] ( [ main::i#2 main::line#1 ] { } ) always clobbers reg byte a +Statement [6] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::line#2 main::$7 ] ( [ main::i#2 main::line#2 main::$7 ] { } ) always clobbers reg byte a +Statement [7] (byte~) main::$9 ← (byte)*((const word*) entities + (byte~) main::$7) [ main::i#2 main::line#2 main::$7 main::$9 ] ( [ main::i#2 main::line#2 main::$7 main::$9 ] { } ) always clobbers reg byte a +Statement [8] *((byte*) main::line#2 + (byte~) main::$9) ← (byte) ' ' [ main::i#2 main::line#2 main::$7 ] ( [ main::i#2 main::line#2 main::$7 ] { } ) always clobbers reg byte a +Statement [10] if(*((const word*) entities + (byte~) main::$7)<(byte) $27+(byte) 1) goto main::@6 [ main::i#2 main::line#2 main::$7 ] ( [ main::i#2 main::line#2 main::$7 ] { } ) always clobbers reg byte a +Statement [11] *((const word*) entities + (byte~) main::$7) ← (byte) 0 [ main::i#2 main::line#2 main::$7 ] ( [ main::i#2 main::line#2 main::$7 ] { } ) always clobbers reg byte a +Statement [12] (byte*~) main::$11 ← (byte*) main::line#2 + *((const word*) entities + (byte~) main::$7) [ main::i#2 main::line#2 main::$11 ] ( [ main::i#2 main::line#2 main::$11 ] { } ) always clobbers reg byte a +Statement [13] *((byte*~) main::$11) ← (byte) '*' [ main::i#2 main::line#2 ] ( [ main::i#2 main::line#2 ] { } ) always clobbers reg byte a reg byte y +Statement [14] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 [ main::i#2 main::line#1 ] ( [ main::i#2 main::line#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ main::line#2 main::line#1 ] : zp[2]:3 , -Potential registers zp[1]:5 [ main::$5 ] : zp[1]:5 , reg byte x , reg byte y , +Potential registers zp[1]:5 [ main::$7 ] : zp[1]:5 , reg byte x , reg byte y , Potential registers zp[1]:6 [ main::$9 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:7 [ main::$8 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:8 [ main::$7 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:9 [ main::$11 ] : zp[2]:9 , +Potential registers zp[2]:7 [ main::$11 ] : zp[2]:7 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 248.62: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:6 [ main::$9 ] 202: zp[1]:7 [ main::$8 ] 202: zp[1]:8 [ main::$7 ] 202: zp[2]:9 [ main::$11 ] 134.67: zp[2]:3 [ main::line#2 main::line#1 ] 101: zp[1]:5 [ main::$5 ] +Uplift Scope [main] 238.73: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:6 [ main::$9 ] 202: zp[2]:7 [ main::$11 ] 141.4: zp[2]:3 [ main::line#2 main::line#1 ] 101: zp[1]:5 [ main::$7 ] Uplift Scope [] -Uplifting [main] best 19805 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$9 ] reg byte a [ main::$8 ] reg byte a [ main::$7 ] zp[2]:9 [ main::$11 ] zp[2]:3 [ main::line#2 main::line#1 ] zp[1]:5 [ main::$5 ] -Limited combination testing to 100 combinations of 384 possible. -Uplifting [] best 19805 combination +Uplifting [main] best 17405 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$9 ] zp[2]:7 [ main::$11 ] zp[2]:3 [ main::line#2 main::line#1 ] reg byte x [ main::$7 ] +Uplifting [] best 17405 combination Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] -Uplifting [main] best 19805 combination zp[1]:2 [ main::i#2 main::i#1 ] -Attempting to uplift remaining variables inzp[1]:5 [ main::$5 ] -Uplifting [main] best 18805 combination reg byte x [ main::$5 ] -Allocated (was zp[2]:9) zp[2]:5 [ main::$11 ] +Uplifting [main] best 17405 combination zp[1]:2 [ main::i#2 main::i#1 ] +Allocated (was zp[2]:7) zp[2]:5 [ main::$11 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -549,24 +525,24 @@ main: { jmp __b1 // main::@4 __b4: - // [6] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 + // [6] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda.z i asl tax - // [7] (byte~) main::$9 ← (byte)*((const word*) entities + (byte~) main::$5) -- vbuaa=_byte_pwuc1_derefidx_vbuxx + // [7] (byte~) main::$9 ← (byte)*((const word*) entities + (byte~) main::$7) -- vbuaa=_byte_pwuc1_derefidx_vbuxx lda entities,x // [8] *((byte*) main::line#2 + (byte~) main::$9) ← (byte) ' ' -- pbuz1_derefidx_vbuaa=vbuc1 // Delete old symbol tay lda #' ' sta (line),y - // [9] *((const word*) entities + (byte~) main::$5) ← *((const word*) entities + (byte~) main::$5) + (byte) 1 -- pwuc1_derefidx_vbuxx=pwuc1_derefidx_vbuxx_plus_1 + // [9] *((const word*) entities + (byte~) main::$7) ← *((const word*) entities + (byte~) main::$7) + (byte) 1 -- pwuc1_derefidx_vbuxx=pwuc1_derefidx_vbuxx_plus_1 // Move by velocity inc entities,x bne !+ inc entities+1,x !: - // [10] if(*((const word*) entities + (byte~) main::$5)<(byte) $27+(byte) 1) goto main::@6 -- pwuc1_derefidx_vbuxx_lt_vbuc2_then_la1 + // [10] if(*((const word*) entities + (byte~) main::$7)<(byte) $27+(byte) 1) goto main::@6 -- pwuc1_derefidx_vbuxx_lt_vbuc2_then_la1 lda entities+1,x bne !+ lda entities,x @@ -576,36 +552,28 @@ main: { jmp __b7 // main::@7 __b7: - // [11] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 - lda.z i - asl - // [12] *((const word*) entities + (byte~) main::$8) ← (byte) 0 -- pwuc1_derefidx_vbuaa=vbuc2 - tay + // [11] *((const word*) entities + (byte~) main::$7) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 lda #0 - sta entities,y + sta entities,x lda #0 - sta entities+1,y + sta entities+1,x jmp __b6 // main::@6 __b6: - // [13] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 - lda.z i - asl - // [14] (byte*~) main::$11 ← (byte*) main::line#2 + *((const word*) entities + (byte~) main::$7) -- pbuz1=pbuz2_plus_pwuc1_derefidx_vbuaa - tay + // [12] (byte*~) main::$11 ← (byte*) main::line#2 + *((const word*) entities + (byte~) main::$7) -- pbuz1=pbuz2_plus_pwuc1_derefidx_vbuxx clc lda.z line - adc entities,y + adc entities,x sta.z __11 lda.z line+1 - adc entities+1,y + adc entities+1,x sta.z __11+1 - // [15] *((byte*~) main::$11) ← (byte) '*' -- _deref_pbuz1=vbuc1 + // [13] *((byte*~) main::$11) ← (byte) '*' -- _deref_pbuz1=vbuc1 // Draw symbol lda #'*' ldy #0 sta (__11),y - // [16] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [14] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 // Next line lda #$28 clc @@ -614,7 +582,7 @@ main: { bcc !+ inc.z line+1 !: - // [17] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + // [15] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc.z i // [3] phi from main::@6 to main::@3 [phi:main::@6->main::@3] __b3_from___b6: @@ -649,9 +617,7 @@ FINAL SYMBOL TABLE (const word*) entities[(number) $19] = { fill( $19, 0) } (void()) main() (byte*~) main::$11 zp[2]:5 202.0 -(byte~) main::$5 reg byte x 101.0 -(byte~) main::$7 reg byte a 202.0 -(byte~) main::$8 reg byte a 202.0 +(byte~) main::$7 reg byte x 100.99999999999999 (byte~) main::$9 reg byte a 202.0 (label) main::@1 (label) main::@2 @@ -662,22 +628,20 @@ FINAL SYMBOL TABLE (label) main::@7 (byte) main::i (byte) main::i#1 i zp[1]:2 202.0 -(byte) main::i#2 i zp[1]:2 46.61538461538461 +(byte) main::i#2 i zp[1]:2 36.72727272727273 (byte*) main::line (byte*) main::line#1 line zp[2]:3 101.0 -(byte*) main::line#2 line zp[2]:3 33.666666666666664 +(byte*) main::line#2 line zp[2]:3 40.4 zp[1]:2 [ main::i#2 main::i#1 ] zp[2]:3 [ main::line#2 main::line#1 ] -reg byte x [ main::$5 ] +reg byte x [ main::$7 ] reg byte a [ main::$9 ] -reg byte a [ main::$8 ] -reg byte a [ main::$7 ] zp[2]:5 [ main::$11 ] FINAL ASSEMBLER -Score: 17102 +Score: 15702 // File Comments // Test that the multiplication of a idx*sizeof(element) is reused inside loops @@ -736,11 +700,11 @@ main: { // main::@4 __b4: // line[(char)entities[i]] = ' ' - // [6] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 + // [6] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda.z i asl tax - // [7] (byte~) main::$9 ← (byte)*((const word*) entities + (byte~) main::$5) -- vbuaa=_byte_pwuc1_derefidx_vbuxx + // [7] (byte~) main::$9 ← (byte)*((const word*) entities + (byte~) main::$7) -- vbuaa=_byte_pwuc1_derefidx_vbuxx lda entities,x // [8] *((byte*) main::line#2 + (byte~) main::$9) ← (byte) ' ' -- pbuz1_derefidx_vbuaa=vbuc1 // Delete old symbol @@ -748,14 +712,14 @@ main: { lda #' ' sta (line),y // entities[i] += 1 - // [9] *((const word*) entities + (byte~) main::$5) ← *((const word*) entities + (byte~) main::$5) + (byte) 1 -- pwuc1_derefidx_vbuxx=pwuc1_derefidx_vbuxx_plus_1 + // [9] *((const word*) entities + (byte~) main::$7) ← *((const word*) entities + (byte~) main::$7) + (byte) 1 -- pwuc1_derefidx_vbuxx=pwuc1_derefidx_vbuxx_plus_1 // Move by velocity inc entities,x bne !+ inc entities+1,x !: // if(entities[i]>39) - // [10] if(*((const word*) entities + (byte~) main::$5)<(byte) $27+(byte) 1) goto main::@6 -- pwuc1_derefidx_vbuxx_lt_vbuc2_then_la1 + // [10] if(*((const word*) entities + (byte~) main::$7)<(byte) $27+(byte) 1) goto main::@6 -- pwuc1_derefidx_vbuxx_lt_vbuc2_then_la1 lda entities+1,x bne !+ lda entities,x @@ -764,36 +728,28 @@ main: { !: // main::@7 // entities[i] =0 - // [11] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 - lda.z i - asl - // [12] *((const word*) entities + (byte~) main::$8) ← (byte) 0 -- pwuc1_derefidx_vbuaa=vbuc2 - tay + // [11] *((const word*) entities + (byte~) main::$7) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2 lda #0 - sta entities,y - sta entities+1,y + sta entities,x + sta entities+1,x // main::@6 __b6: // line[entities[i]] = '*' - // [13] (byte~) main::$7 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 - lda.z i - asl - // [14] (byte*~) main::$11 ← (byte*) main::line#2 + *((const word*) entities + (byte~) main::$7) -- pbuz1=pbuz2_plus_pwuc1_derefidx_vbuaa - tay + // [12] (byte*~) main::$11 ← (byte*) main::line#2 + *((const word*) entities + (byte~) main::$7) -- pbuz1=pbuz2_plus_pwuc1_derefidx_vbuxx clc lda.z line - adc entities,y + adc entities,x sta.z __11 lda.z line+1 - adc entities+1,y + adc entities+1,x sta.z __11+1 - // [15] *((byte*~) main::$11) ← (byte) '*' -- _deref_pbuz1=vbuc1 + // [13] *((byte*~) main::$11) ← (byte) '*' -- _deref_pbuz1=vbuc1 // Draw symbol lda #'*' ldy #0 sta (__11),y // line +=40 - // [16] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [14] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 // Next line lda #$28 clc @@ -803,7 +759,7 @@ main: { inc.z line+1 !: // for(char i=0;imain::@3] // [3] phi (byte*) main::line#2 = (byte*) main::line#1 [phi:main::@6->main::@3#0] -- register_copy diff --git a/src/test/ref/index-sizeof-reuse-2.sym b/src/test/ref/index-sizeof-reuse-2.sym index b08d6344c..660b48dff 100644 --- a/src/test/ref/index-sizeof-reuse-2.sym +++ b/src/test/ref/index-sizeof-reuse-2.sym @@ -4,9 +4,7 @@ (const word*) entities[(number) $19] = { fill( $19, 0) } (void()) main() (byte*~) main::$11 zp[2]:5 202.0 -(byte~) main::$5 reg byte x 101.0 -(byte~) main::$7 reg byte a 202.0 -(byte~) main::$8 reg byte a 202.0 +(byte~) main::$7 reg byte x 100.99999999999999 (byte~) main::$9 reg byte a 202.0 (label) main::@1 (label) main::@2 @@ -17,15 +15,13 @@ (label) main::@7 (byte) main::i (byte) main::i#1 i zp[1]:2 202.0 -(byte) main::i#2 i zp[1]:2 46.61538461538461 +(byte) main::i#2 i zp[1]:2 36.72727272727273 (byte*) main::line (byte*) main::line#1 line zp[2]:3 101.0 -(byte*) main::line#2 line zp[2]:3 33.666666666666664 +(byte*) main::line#2 line zp[2]:3 40.4 zp[1]:2 [ main::i#2 main::i#1 ] zp[2]:3 [ main::line#2 main::line#1 ] -reg byte x [ main::$5 ] +reg byte x [ main::$7 ] reg byte a [ main::$9 ] -reg byte a [ main::$8 ] -reg byte a [ main::$7 ] zp[2]:5 [ main::$11 ] diff --git a/src/test/ref/index-sizeof-reuse.asm b/src/test/ref/index-sizeof-reuse.asm index 7e695497f..fa2f07e49 100644 --- a/src/test/ref/index-sizeof-reuse.asm +++ b/src/test/ref/index-sizeof-reuse.asm @@ -13,6 +13,7 @@ main: { // Move the entities .label line = 4 .label i1 = 3 + .label __25 = 6 // asm sei lda #-1 @@ -52,6 +53,7 @@ main: { // line[entities[i].x_pos] = ' ' lda.z i1 asl + sta.z __25 clc adc.z i1 tax @@ -78,8 +80,7 @@ main: { bmi __b8 __b9: // -entities[i].x_vel - lda.z i1 - asl + lda.z __25 clc adc.z i1 tax @@ -96,8 +97,7 @@ main: { sta entities,x __b8: // line[entities[i].x_pos] = entities[i].symbol - lda.z i1 - asl + lda.z __25 clc adc.z i1 // Draw symbol diff --git a/src/test/ref/index-sizeof-reuse.cfg b/src/test/ref/index-sizeof-reuse.cfg index 91ae9de13..10a2bee9d 100644 --- a/src/test/ref/index-sizeof-reuse.cfg +++ b/src/test/ref/index-sizeof-reuse.cfg @@ -23,8 +23,8 @@ main::@7: scope:[main] from main::@5 [7] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) $f to:main::@3 main::@6: scope:[main] from main::@5 - [8] (byte~) main::$23 ← (byte) main::i1#2 << (byte) 1 - [9] (byte~) main::$13 ← (byte~) main::$23 + (byte) main::i1#2 + [8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 + [9] (byte~) main::$13 ← (byte~) main::$25 + (byte) main::i1#2 [10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$13)) ← (byte) ' ' [11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$13) [12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) 0) goto main::@9 @@ -33,25 +33,23 @@ main::@10: scope:[main] from main::@6 [13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) $27+(signed byte) 1) goto main::@8 to:main::@9 main::@9: scope:[main] from main::@10 main::@6 - [14] (byte~) main::$27 ← (byte) main::i1#2 << (byte) 1 - [15] (byte~) main::$18 ← (byte~) main::$27 + (byte) main::i1#2 - [16] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) - [17] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) ← (signed byte~) main::$8 - [18] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) + [14] (byte~) main::$18 ← (byte~) main::$25 + (byte) main::i1#2 + [15] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) + [16] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) ← (signed byte~) main::$8 + [17] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) to:main::@8 main::@8: scope:[main] from main::@10 main::@9 - [19] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 - [20] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 - [21] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) - [22] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 - [23] (byte) main::i1#1 ← ++ (byte) main::i1#2 + [18] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 + [19] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) + [20] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 + [21] (byte) main::i1#1 ← ++ (byte) main::i1#2 to:main::@5 main::@2: scope:[main] from main::@1 - [24] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 - [25] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 - [26] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 - [27] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 - [28] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 - [29] (signed byte) main::v#1 ← - (signed byte) main::v#2 - [30] (byte) main::i#1 ← ++ (byte) main::i#2 + [22] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 + [23] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 + [24] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 + [25] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 + [26] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 + [27] (signed byte) main::v#1 ← - (signed byte) main::v#2 + [28] (byte) main::i#1 ← ++ (byte) main::i#2 to:main::@1 diff --git a/src/test/ref/index-sizeof-reuse.log b/src/test/ref/index-sizeof-reuse.log index 171ae89f7..69de69138 100644 --- a/src/test/ref/index-sizeof-reuse.log +++ b/src/test/ref/index-sizeof-reuse.log @@ -288,16 +288,21 @@ Alias main::$13 = main::$24 Alias main::$16 = main::$26 Alias main::$18 = main::$28 Successful SSA optimization Pass2AliasElimination +Identified duplicate assignment right side [22] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 +Identified duplicate assignment right side [28] (byte~) main::$27 ← (byte) main::i1#2 << (byte) 1 +Successful SSA optimization Pass2DuplicateRValueIdentification Eliminating unused constant (const byte) SIZEOF_STRUCT_ENTITY Successful SSA optimization PassNEliminateUnusedVars +Alias main::$25 = main::$23 main::$27 +Successful SSA optimization Pass2AliasElimination Adding NOP phi() at start of main::@3 CALL GRAPH Created 4 initial phi equivalence classes -Coalesced [25] main::i1#6 ← main::i1#1 -Coalesced [26] main::line#6 ← main::line#1 -Coalesced [34] main::i#4 ← main::i#1 -Coalesced [35] main::v#4 ← main::v#1 +Coalesced [23] main::i1#6 ← main::i1#1 +Coalesced [24] main::line#6 ← main::line#1 +Coalesced [32] main::i#4 ← main::i#1 +Coalesced [33] main::v#4 ← main::v#1 Coalesced down to 4 phi equivalence classes Culled Empty Block (label) main::@3 Renumbering block main::@4 to main::@3 @@ -335,8 +340,8 @@ main::@7: scope:[main] from main::@5 [7] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) $f to:main::@3 main::@6: scope:[main] from main::@5 - [8] (byte~) main::$23 ← (byte) main::i1#2 << (byte) 1 - [9] (byte~) main::$13 ← (byte~) main::$23 + (byte) main::i1#2 + [8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 + [9] (byte~) main::$13 ← (byte~) main::$25 + (byte) main::i1#2 [10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$13)) ← (byte) ' ' [11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$13) [12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) 0) goto main::@9 @@ -345,27 +350,25 @@ main::@10: scope:[main] from main::@6 [13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) $27+(signed byte) 1) goto main::@8 to:main::@9 main::@9: scope:[main] from main::@10 main::@6 - [14] (byte~) main::$27 ← (byte) main::i1#2 << (byte) 1 - [15] (byte~) main::$18 ← (byte~) main::$27 + (byte) main::i1#2 - [16] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) - [17] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) ← (signed byte~) main::$8 - [18] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) + [14] (byte~) main::$18 ← (byte~) main::$25 + (byte) main::i1#2 + [15] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) + [16] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) ← (signed byte~) main::$8 + [17] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) to:main::@8 main::@8: scope:[main] from main::@10 main::@9 - [19] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 - [20] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 - [21] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) - [22] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 - [23] (byte) main::i1#1 ← ++ (byte) main::i1#2 + [18] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 + [19] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) + [20] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 + [21] (byte) main::i1#1 ← ++ (byte) main::i1#2 to:main::@5 main::@2: scope:[main] from main::@1 - [24] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 - [25] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 - [26] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 - [27] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 - [28] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 - [29] (signed byte) main::v#1 ← - (signed byte) main::v#2 - [30] (byte) main::i#1 ← ++ (byte) main::i#2 + [22] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 + [23] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 + [24] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 + [25] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 + [26] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 + [27] (signed byte) main::v#1 ← - (signed byte) main::v#2 + [28] (byte) main::i#1 ← ++ (byte) main::i#2 to:main::@1 @@ -379,19 +382,17 @@ VARIABLE REGISTER WEIGHTS (byte~) main::$16 303.0 (byte~) main::$18 201.99999999999997 (byte~) main::$21 22.0 -(byte~) main::$23 202.0 -(byte~) main::$25 202.0 -(byte~) main::$27 202.0 +(byte~) main::$25 40.4 (signed byte~) main::$8 202.0 (byte) main::i (byte) main::i#1 22.0 (byte) main::i#2 8.25 (byte) main::i1 (byte) main::i1#1 202.0 -(byte) main::i1#2 53.470588235294116 +(byte) main::i1#2 47.13333333333333 (byte*) main::line (byte*) main::line#1 101.0 -(byte*) main::line#2 25.25 +(byte*) main::line#2 28.857142857142858 (signed byte) main::v (signed byte) main::v#1 11.0 (signed byte) main::v#2 4.714285714285714 @@ -401,12 +402,10 @@ Initial phi equivalence classes [ main::v#2 main::v#1 ] [ main::i1#2 main::i1#1 ] [ main::line#2 main::line#1 ] -Added variable main::$23 to live range equivalence class [ main::$23 ] +Added variable main::$25 to live range equivalence class [ main::$25 ] Added variable main::$13 to live range equivalence class [ main::$13 ] -Added variable main::$27 to live range equivalence class [ main::$27 ] Added variable main::$18 to live range equivalence class [ main::$18 ] Added variable main::$8 to live range equivalence class [ main::$8 ] -Added variable main::$25 to live range equivalence class [ main::$25 ] Added variable main::$16 to live range equivalence class [ main::$16 ] Added variable main::$21 to live range equivalence class [ main::$21 ] Added variable main::$10 to live range equivalence class [ main::$10 ] @@ -415,12 +414,10 @@ Complete equivalence classes [ main::v#2 main::v#1 ] [ main::i1#2 main::i1#1 ] [ main::line#2 main::line#1 ] -[ main::$23 ] +[ main::$25 ] [ main::$13 ] -[ main::$27 ] [ main::$18 ] [ main::$8 ] -[ main::$25 ] [ main::$16 ] [ main::$21 ] [ main::$10 ] @@ -428,15 +425,13 @@ Allocated zp[1]:2 [ main::i#2 main::i#1 ] Allocated zp[1]:3 [ main::v#2 main::v#1 ] Allocated zp[1]:4 [ main::i1#2 main::i1#1 ] Allocated zp[2]:5 [ main::line#2 main::line#1 ] -Allocated zp[1]:7 [ main::$23 ] +Allocated zp[1]:7 [ main::$25 ] Allocated zp[1]:8 [ main::$13 ] -Allocated zp[1]:9 [ main::$27 ] -Allocated zp[1]:10 [ main::$18 ] -Allocated zp[1]:11 [ main::$8 ] -Allocated zp[1]:12 [ main::$25 ] -Allocated zp[1]:13 [ main::$16 ] -Allocated zp[1]:14 [ main::$21 ] -Allocated zp[1]:15 [ main::$10 ] +Allocated zp[1]:9 [ main::$18 ] +Allocated zp[1]:10 [ main::$8 ] +Allocated zp[1]:11 [ main::$16 ] +Allocated zp[1]:12 [ main::$21 ] +Allocated zp[1]:13 [ main::$10 ] INITIAL ASM Target platform is c64basic / MOS6502X @@ -454,21 +449,19 @@ Target platform is c64basic / MOS6502X .label SCREEN = $400 // main main: { - .label __8 = $b - .label __10 = $f + .label __8 = $a + .label __10 = $d .label __13 = 8 - .label __16 = $d - .label __18 = $a + .label __16 = $b + .label __18 = 9 // Initialize velocities .label v = 3 .label i = 2 // Move the entities .label line = 5 .label i1 = 4 - .label __21 = $e - .label __23 = 7 - .label __25 = $c - .label __27 = 9 + .label __21 = $c + .label __25 = 7 // asm { sei } sei // [1] phi from main to main::@1 [phi:main->main::@1] @@ -526,12 +519,12 @@ main: { jmp __b3 // main::@6 __b6: - // [8] (byte~) main::$23 ← (byte) main::i1#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i1 asl - sta.z __23 - // [9] (byte~) main::$13 ← (byte~) main::$23 + (byte) main::i1#2 -- vbuz1=vbuz2_plus_vbuz3 - lda.z __23 + sta.z __25 + // [9] (byte~) main::$13 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuz1=vbuz2_plus_vbuz3 + lda.z __25 clc adc.z i1 sta.z __13 @@ -568,27 +561,23 @@ main: { jmp __b9 // main::@9 __b9: - // [14] (byte~) main::$27 ← (byte) main::i1#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 - lda.z i1 - asl - sta.z __27 - // [15] (byte~) main::$18 ← (byte~) main::$27 + (byte) main::i1#2 -- vbuz1=vbuz2_plus_vbuz3 - lda.z __27 + // [14] (byte~) main::$18 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuz1=vbuz2_plus_vbuz3 + lda.z __25 clc adc.z i1 sta.z __18 - // [16] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- vbsz1=_neg_pbsc1_derefidx_vbuz2 + // [15] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- vbsz1=_neg_pbsc1_derefidx_vbuz2 ldy.z __18 lda entities+OFFSET_STRUCT_ENTITY_X_VEL,y eor #$ff clc adc #1 sta.z __8 - // [17] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) ← (signed byte~) main::$8 -- pbsc1_derefidx_vbuz1=vbsz2 + // [16] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) ← (signed byte~) main::$8 -- pbsc1_derefidx_vbuz1=vbsz2 lda.z __8 ldy.z __18 sta entities+OFFSET_STRUCT_ENTITY_X_VEL,y - // [18] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- pbsc1_derefidx_vbuz1=pbsc1_derefidx_vbuz1_plus_pbsc2_derefidx_vbuz1 + // [17] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- pbsc1_derefidx_vbuz1=pbsc1_derefidx_vbuz1_plus_pbsc2_derefidx_vbuz1 ldy.z __18 clc lda entities,y @@ -597,22 +586,18 @@ main: { jmp __b8 // main::@8 __b8: - // [19] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 - lda.z i1 - asl - sta.z __25 - // [20] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuz1=vbuz2_plus_vbuz3 + // [18] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuz1=vbuz2_plus_vbuz3 lda.z __25 clc adc.z i1 sta.z __16 - // [21] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) -- pbuz1_derefidx_(pbsc1_derefidx_vbuz2)=pbuc2_derefidx_vbuz2 + // [19] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) -- pbuz1_derefidx_(pbsc1_derefidx_vbuz2)=pbuc2_derefidx_vbuz2 // Draw symbol ldx.z __16 lda entities+OFFSET_STRUCT_ENTITY_SYMBOL,x ldy entities,x sta (line),y - // [22] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [20] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 // Next line lda #$28 clc @@ -621,7 +606,7 @@ main: { bcc !+ inc.z line+1 !: - // [23] (byte) main::i1#1 ← ++ (byte) main::i1#2 -- vbuz1=_inc_vbuz1 + // [21] (byte) main::i1#1 ← ++ (byte) main::i1#2 -- vbuz1=_inc_vbuz1 inc.z i1 // [5] phi from main::@8 to main::@5 [phi:main::@8->main::@5] __b5_from___b8: @@ -630,34 +615,34 @@ main: { jmp __b5 // main::@2 __b2: - // [24] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [22] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i asl sta.z __21 - // [25] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3 + // [23] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3 lda.z __21 clc adc.z i sta.z __10 - // [26] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 -- pbsc1_derefidx_vbuz1=vbsz2 + // [24] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 -- pbsc1_derefidx_vbuz1=vbsz2 lda.z i ldy.z __10 sta entities,y - // [27] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 -- pbsc1_derefidx_vbuz1=vbsz2 + // [25] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 -- pbsc1_derefidx_vbuz1=vbsz2 lda.z v ldy.z __10 sta entities+OFFSET_STRUCT_ENTITY_X_VEL,y - // [28] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz2 + // [26] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda.z i ldy.z __10 sta entities+OFFSET_STRUCT_ENTITY_SYMBOL,y - // [29] (signed byte) main::v#1 ← - (signed byte) main::v#2 -- vbsz1=_neg_vbsz1 + // [27] (signed byte) main::v#1 ← - (signed byte) main::v#2 -- vbsz1=_neg_vbsz1 lda.z v eor #$ff clc adc #1 sta.z v - // [30] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + // [28] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc.z i // [1] phi from main::@2 to main::@1 [phi:main::@2->main::@1] __b1_from___b2: @@ -672,101 +657,94 @@ REGISTER UPLIFT POTENTIAL REGISTERS Statement [3] if(*((const nomodify byte*) VIC_RASTER)!=(byte) $ff) goto main::@3 [ ] ( [ ] { } ) always clobbers reg byte a Statement [4] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a Statement [7] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) $f [ ] ( [ ] { } ) always clobbers reg byte a -Statement [8] (byte~) main::$23 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::line#2 main::$23 ] ( [ main::i1#2 main::line#2 main::$23 ] { } ) always clobbers reg byte a +Statement [8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::line#2 main::$25 ] ( [ main::i1#2 main::line#2 main::$25 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::i1#2 main::i1#1 ] -Statement [9] (byte~) main::$13 ← (byte~) main::$23 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$13 ] ( [ main::i1#2 main::line#2 main::$13 ] { } ) always clobbers reg byte a -Statement [10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$13)) ← (byte) ' ' [ main::i1#2 main::line#2 main::$13 ] ( [ main::i1#2 main::line#2 main::$13 ] { } ) always clobbers reg byte a reg byte y +Statement [9] (byte~) main::$13 ← (byte~) main::$25 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$25 main::$13 ] ( [ main::i1#2 main::line#2 main::$25 main::$13 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::$25 ] +Statement [10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$13)) ← (byte) ' ' [ main::i1#2 main::line#2 main::$25 main::$13 ] ( [ main::i1#2 main::line#2 main::$25 main::$13 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::i1#2 main::i1#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:7 [ main::$25 ] Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::$13 ] Removing always clobbered register reg byte y as potential for zp[1]:8 [ main::$13 ] -Statement [11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$13) [ main::i1#2 main::line#2 main::$13 ] ( [ main::i1#2 main::line#2 main::$13 ] { } ) always clobbers reg byte a -Statement [12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) 0) goto main::@9 [ main::i1#2 main::line#2 main::$13 ] ( [ main::i1#2 main::line#2 main::$13 ] { } ) always clobbers reg byte a -Statement [13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) $27+(signed byte) 1) goto main::@8 [ main::i1#2 main::line#2 ] ( [ main::i1#2 main::line#2 ] { } ) always clobbers reg byte a -Statement [14] (byte~) main::$27 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::line#2 main::$27 ] ( [ main::i1#2 main::line#2 main::$27 ] { } ) always clobbers reg byte a -Statement [15] (byte~) main::$18 ← (byte~) main::$27 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$18 ] ( [ main::i1#2 main::line#2 main::$18 ] { } ) always clobbers reg byte a -Statement [16] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) [ main::i1#2 main::line#2 main::$18 main::$8 ] ( [ main::i1#2 main::line#2 main::$18 main::$8 ] { } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:10 [ main::$18 ] -Statement [18] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) [ main::i1#2 main::line#2 ] ( [ main::i1#2 main::line#2 ] { } ) always clobbers reg byte a -Statement [19] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::line#2 main::$25 ] ( [ main::i1#2 main::line#2 main::$25 ] { } ) always clobbers reg byte a -Statement [20] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a -Statement [21] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) [ main::i1#2 main::line#2 ] ( [ main::i1#2 main::line#2 ] { } ) always clobbers reg byte a reg byte y -Statement [22] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 [ main::i1#2 main::line#1 ] ( [ main::i1#2 main::line#1 ] { } ) always clobbers reg byte a -Statement [24] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::v#2 main::$21 ] ( [ main::i#2 main::v#2 main::$21 ] { } ) always clobbers reg byte a +Statement [11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$13) [ main::i1#2 main::line#2 main::$25 main::$13 ] ( [ main::i1#2 main::line#2 main::$25 main::$13 ] { } ) always clobbers reg byte a +Statement [12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) 0) goto main::@9 [ main::i1#2 main::line#2 main::$25 main::$13 ] ( [ main::i1#2 main::line#2 main::$25 main::$13 ] { } ) always clobbers reg byte a +Statement [13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) $27+(signed byte) 1) goto main::@8 [ main::i1#2 main::line#2 main::$25 ] ( [ main::i1#2 main::line#2 main::$25 ] { } ) always clobbers reg byte a +Statement [14] (byte~) main::$18 ← (byte~) main::$25 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$25 main::$18 ] ( [ main::i1#2 main::line#2 main::$25 main::$18 ] { } ) always clobbers reg byte a +Statement [15] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) [ main::i1#2 main::line#2 main::$25 main::$18 main::$8 ] ( [ main::i1#2 main::line#2 main::$25 main::$18 main::$8 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:9 [ main::$18 ] +Statement [17] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) [ main::i1#2 main::line#2 main::$25 ] ( [ main::i1#2 main::line#2 main::$25 ] { } ) always clobbers reg byte a +Statement [18] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a +Statement [19] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) [ main::i1#2 main::line#2 ] ( [ main::i1#2 main::line#2 ] { } ) always clobbers reg byte a reg byte y +Statement [20] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 [ main::i1#2 main::line#1 ] ( [ main::i1#2 main::line#1 ] { } ) always clobbers reg byte a +Statement [22] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::v#2 main::$21 ] ( [ main::i#2 main::v#2 main::$21 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::v#2 main::v#1 ] -Statement [25] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a -Statement [26] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:15 [ main::$10 ] -Statement [27] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a -Statement [28] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 [ main::i#2 main::v#2 ] ( [ main::i#2 main::v#2 ] { } ) always clobbers reg byte a -Statement [29] (signed byte) main::v#1 ← - (signed byte) main::v#2 [ main::i#2 main::v#1 ] ( [ main::i#2 main::v#1 ] { } ) always clobbers reg byte a +Statement [23] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a +Statement [24] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:13 [ main::$10 ] +Statement [25] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a +Statement [26] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 [ main::i#2 main::v#2 ] ( [ main::i#2 main::v#2 ] { } ) always clobbers reg byte a +Statement [27] (signed byte) main::v#1 ← - (signed byte) main::v#2 [ main::i#2 main::v#1 ] ( [ main::i#2 main::v#1 ] { } ) always clobbers reg byte a Statement [3] if(*((const nomodify byte*) VIC_RASTER)!=(byte) $ff) goto main::@3 [ ] ( [ ] { } ) always clobbers reg byte a Statement [4] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a Statement [7] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) $f [ ] ( [ ] { } ) always clobbers reg byte a -Statement [8] (byte~) main::$23 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::line#2 main::$23 ] ( [ main::i1#2 main::line#2 main::$23 ] { } ) always clobbers reg byte a -Statement [9] (byte~) main::$13 ← (byte~) main::$23 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$13 ] ( [ main::i1#2 main::line#2 main::$13 ] { } ) always clobbers reg byte a -Statement [10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$13)) ← (byte) ' ' [ main::i1#2 main::line#2 main::$13 ] ( [ main::i1#2 main::line#2 main::$13 ] { } ) always clobbers reg byte a reg byte y -Statement [11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$13) [ main::i1#2 main::line#2 main::$13 ] ( [ main::i1#2 main::line#2 main::$13 ] { } ) always clobbers reg byte a -Statement [12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) 0) goto main::@9 [ main::i1#2 main::line#2 main::$13 ] ( [ main::i1#2 main::line#2 main::$13 ] { } ) always clobbers reg byte a -Statement [13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) $27+(signed byte) 1) goto main::@8 [ main::i1#2 main::line#2 ] ( [ main::i1#2 main::line#2 ] { } ) always clobbers reg byte a -Statement [14] (byte~) main::$27 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::line#2 main::$27 ] ( [ main::i1#2 main::line#2 main::$27 ] { } ) always clobbers reg byte a -Statement [15] (byte~) main::$18 ← (byte~) main::$27 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$18 ] ( [ main::i1#2 main::line#2 main::$18 ] { } ) always clobbers reg byte a -Statement [16] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) [ main::i1#2 main::line#2 main::$18 main::$8 ] ( [ main::i1#2 main::line#2 main::$18 main::$8 ] { } ) always clobbers reg byte a -Statement [18] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) [ main::i1#2 main::line#2 ] ( [ main::i1#2 main::line#2 ] { } ) always clobbers reg byte a -Statement [19] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::line#2 main::$25 ] ( [ main::i1#2 main::line#2 main::$25 ] { } ) always clobbers reg byte a -Statement [20] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a -Statement [21] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) [ main::i1#2 main::line#2 ] ( [ main::i1#2 main::line#2 ] { } ) always clobbers reg byte a reg byte y -Statement [22] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 [ main::i1#2 main::line#1 ] ( [ main::i1#2 main::line#1 ] { } ) always clobbers reg byte a -Statement [24] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::v#2 main::$21 ] ( [ main::i#2 main::v#2 main::$21 ] { } ) always clobbers reg byte a -Statement [25] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a -Statement [26] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a -Statement [27] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a -Statement [28] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 [ main::i#2 main::v#2 ] ( [ main::i#2 main::v#2 ] { } ) always clobbers reg byte a -Statement [29] (signed byte) main::v#1 ← - (signed byte) main::v#2 [ main::i#2 main::v#1 ] ( [ main::i#2 main::v#1 ] { } ) always clobbers reg byte a +Statement [8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::line#2 main::$25 ] ( [ main::i1#2 main::line#2 main::$25 ] { } ) always clobbers reg byte a +Statement [9] (byte~) main::$13 ← (byte~) main::$25 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$25 main::$13 ] ( [ main::i1#2 main::line#2 main::$25 main::$13 ] { } ) always clobbers reg byte a +Statement [10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$13)) ← (byte) ' ' [ main::i1#2 main::line#2 main::$25 main::$13 ] ( [ main::i1#2 main::line#2 main::$25 main::$13 ] { } ) always clobbers reg byte a reg byte y +Statement [11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$13) [ main::i1#2 main::line#2 main::$25 main::$13 ] ( [ main::i1#2 main::line#2 main::$25 main::$13 ] { } ) always clobbers reg byte a +Statement [12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) 0) goto main::@9 [ main::i1#2 main::line#2 main::$25 main::$13 ] ( [ main::i1#2 main::line#2 main::$25 main::$13 ] { } ) always clobbers reg byte a +Statement [13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) $27+(signed byte) 1) goto main::@8 [ main::i1#2 main::line#2 main::$25 ] ( [ main::i1#2 main::line#2 main::$25 ] { } ) always clobbers reg byte a +Statement [14] (byte~) main::$18 ← (byte~) main::$25 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$25 main::$18 ] ( [ main::i1#2 main::line#2 main::$25 main::$18 ] { } ) always clobbers reg byte a +Statement [15] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) [ main::i1#2 main::line#2 main::$25 main::$18 main::$8 ] ( [ main::i1#2 main::line#2 main::$25 main::$18 main::$8 ] { } ) always clobbers reg byte a +Statement [17] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) [ main::i1#2 main::line#2 main::$25 ] ( [ main::i1#2 main::line#2 main::$25 ] { } ) always clobbers reg byte a +Statement [18] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a +Statement [19] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) [ main::i1#2 main::line#2 ] ( [ main::i1#2 main::line#2 ] { } ) always clobbers reg byte a reg byte y +Statement [20] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 [ main::i1#2 main::line#1 ] ( [ main::i1#2 main::line#1 ] { } ) always clobbers reg byte a +Statement [22] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::v#2 main::$21 ] ( [ main::i#2 main::v#2 main::$21 ] { } ) always clobbers reg byte a +Statement [23] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a +Statement [24] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a +Statement [25] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a +Statement [26] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 [ main::i#2 main::v#2 ] ( [ main::i#2 main::v#2 ] { } ) always clobbers reg byte a +Statement [27] (signed byte) main::v#1 ← - (signed byte) main::v#2 [ main::i#2 main::v#1 ] ( [ main::i#2 main::v#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[1]:3 [ main::v#2 main::v#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ main::i1#2 main::i1#1 ] : zp[1]:4 , reg byte x , Potential registers zp[2]:5 [ main::line#2 main::line#1 ] : zp[2]:5 , -Potential registers zp[1]:7 [ main::$23 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:7 [ main::$25 ] : zp[1]:7 , reg byte x , Potential registers zp[1]:8 [ main::$13 ] : zp[1]:8 , reg byte x , -Potential registers zp[1]:9 [ main::$27 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:10 [ main::$18 ] : zp[1]:10 , reg byte x , reg byte y , -Potential registers zp[1]:11 [ main::$8 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:12 [ main::$25 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:13 [ main::$16 ] : zp[1]:13 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:14 [ main::$21 ] : zp[1]:14 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:15 [ main::$10 ] : zp[1]:15 , reg byte x , reg byte y , +Potential registers zp[1]:9 [ main::$18 ] : zp[1]:9 , reg byte x , reg byte y , +Potential registers zp[1]:10 [ main::$8 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:11 [ main::$16 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:12 [ main::$21 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:13 [ main::$10 ] : zp[1]:13 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 303: zp[1]:13 [ main::$16 ] 255.47: zp[1]:4 [ main::i1#2 main::i1#1 ] 202: zp[1]:7 [ main::$23 ] 202: zp[1]:9 [ main::$27 ] 202: zp[1]:11 [ main::$8 ] 202: zp[1]:12 [ main::$25 ] 202: zp[1]:10 [ main::$18 ] 176.75: zp[1]:8 [ main::$13 ] 126.25: zp[2]:5 [ main::line#2 main::line#1 ] 30.25: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:14 [ main::$21 ] 15.71: zp[1]:3 [ main::v#2 main::v#1 ] 14.67: zp[1]:15 [ main::$10 ] +Uplift Scope [main] 303: zp[1]:11 [ main::$16 ] 249.13: zp[1]:4 [ main::i1#2 main::i1#1 ] 202: zp[1]:10 [ main::$8 ] 202: zp[1]:9 [ main::$18 ] 176.75: zp[1]:8 [ main::$13 ] 129.86: zp[2]:5 [ main::line#2 main::line#1 ] 40.4: zp[1]:7 [ main::$25 ] 30.25: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:12 [ main::$21 ] 15.71: zp[1]:3 [ main::v#2 main::v#1 ] 14.67: zp[1]:13 [ main::$10 ] Uplift Scope [Entity] Uplift Scope [] -Uplifting [main] best 25607 combination reg byte a [ main::$16 ] zp[1]:4 [ main::i1#2 main::i1#1 ] reg byte a [ main::$23 ] reg byte a [ main::$27 ] zp[1]:11 [ main::$8 ] zp[1]:12 [ main::$25 ] zp[1]:10 [ main::$18 ] zp[1]:8 [ main::$13 ] zp[2]:5 [ main::line#2 main::line#1 ] zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:14 [ main::$21 ] zp[1]:3 [ main::v#2 main::v#1 ] zp[1]:15 [ main::$10 ] -Limited combination testing to 100 combinations of 1327104 possible. -Uplifting [Entity] best 25607 combination -Uplifting [] best 25607 combination +Uplifting [main] best 23607 combination reg byte a [ main::$16 ] zp[1]:4 [ main::i1#2 main::i1#1 ] reg byte a [ main::$8 ] reg byte x [ main::$18 ] zp[1]:8 [ main::$13 ] zp[2]:5 [ main::line#2 main::line#1 ] zp[1]:7 [ main::$25 ] zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:12 [ main::$21 ] zp[1]:3 [ main::v#2 main::v#1 ] zp[1]:13 [ main::$10 ] +Limited combination testing to 100 combinations of 41472 possible. +Uplifting [Entity] best 23607 combination +Uplifting [] best 23607 combination Attempting to uplift remaining variables inzp[1]:4 [ main::i1#2 main::i1#1 ] -Uplifting [main] best 25607 combination zp[1]:4 [ main::i1#2 main::i1#1 ] -Attempting to uplift remaining variables inzp[1]:11 [ main::$8 ] -Uplifting [main] best 25007 combination reg byte a [ main::$8 ] -Attempting to uplift remaining variables inzp[1]:12 [ main::$25 ] -Uplifting [main] best 24407 combination reg byte a [ main::$25 ] -Attempting to uplift remaining variables inzp[1]:10 [ main::$18 ] -Uplifting [main] best 23407 combination reg byte x [ main::$18 ] +Uplifting [main] best 23607 combination zp[1]:4 [ main::i1#2 main::i1#1 ] Attempting to uplift remaining variables inzp[1]:8 [ main::$13 ] -Uplifting [main] best 22107 combination reg byte x [ main::$13 ] +Uplifting [main] best 22307 combination reg byte x [ main::$13 ] +Attempting to uplift remaining variables inzp[1]:7 [ main::$25 ] +Uplifting [main] best 22307 combination zp[1]:7 [ main::$25 ] Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] -Uplifting [main] best 21977 combination reg byte x [ main::i#2 main::i#1 ] -Attempting to uplift remaining variables inzp[1]:14 [ main::$21 ] -Uplifting [main] best 21957 combination reg byte a [ main::$21 ] +Uplifting [main] best 22177 combination reg byte x [ main::i#2 main::i#1 ] +Attempting to uplift remaining variables inzp[1]:12 [ main::$21 ] +Uplifting [main] best 22157 combination reg byte a [ main::$21 ] Attempting to uplift remaining variables inzp[1]:3 [ main::v#2 main::v#1 ] -Uplifting [main] best 21957 combination zp[1]:3 [ main::v#2 main::v#1 ] -Attempting to uplift remaining variables inzp[1]:15 [ main::$10 ] -Uplifting [main] best 21857 combination reg byte y [ main::$10 ] +Uplifting [main] best 22157 combination zp[1]:3 [ main::v#2 main::v#1 ] +Attempting to uplift remaining variables inzp[1]:13 [ main::$10 ] +Uplifting [main] best 22057 combination reg byte y [ main::$10 ] Allocated (was zp[1]:3) zp[1]:2 [ main::v#2 main::v#1 ] Allocated (was zp[1]:4) zp[1]:3 [ main::i1#2 main::i1#1 ] Allocated (was zp[2]:5) zp[2]:4 [ main::line#2 main::line#1 ] +Allocated (was zp[1]:7) zp[1]:6 [ main::$25 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -788,6 +766,7 @@ main: { // Move the entities .label line = 4 .label i1 = 3 + .label __25 = 6 // asm { sei } sei // [1] phi from main to main::@1 [phi:main->main::@1] @@ -843,10 +822,12 @@ main: { jmp __b3 // main::@6 __b6: - // [8] (byte~) main::$23 ← (byte) main::i1#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + // [8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i1 asl - // [9] (byte~) main::$13 ← (byte~) main::$23 + (byte) main::i1#2 -- vbuxx=vbuaa_plus_vbuz1 + sta.z __25 + // [9] (byte~) main::$13 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuxx=vbuz1_plus_vbuz2 + lda.z __25 clc adc.z i1 tax @@ -879,21 +860,19 @@ main: { jmp __b9 // main::@9 __b9: - // [14] (byte~) main::$27 ← (byte) main::i1#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 - lda.z i1 - asl - // [15] (byte~) main::$18 ← (byte~) main::$27 + (byte) main::i1#2 -- vbuxx=vbuaa_plus_vbuz1 + // [14] (byte~) main::$18 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuxx=vbuz1_plus_vbuz2 + lda.z __25 clc adc.z i1 tax - // [16] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- vbsaa=_neg_pbsc1_derefidx_vbuxx + // [15] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- vbsaa=_neg_pbsc1_derefidx_vbuxx lda entities+OFFSET_STRUCT_ENTITY_X_VEL,x eor #$ff clc adc #1 - // [17] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) ← (signed byte~) main::$8 -- pbsc1_derefidx_vbuxx=vbsaa + // [16] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) ← (signed byte~) main::$8 -- pbsc1_derefidx_vbuxx=vbsaa sta entities+OFFSET_STRUCT_ENTITY_X_VEL,x - // [18] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- pbsc1_derefidx_vbuxx=pbsc1_derefidx_vbuxx_plus_pbsc2_derefidx_vbuxx + // [17] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- pbsc1_derefidx_vbuxx=pbsc1_derefidx_vbuxx_plus_pbsc2_derefidx_vbuxx clc lda entities,x adc entities+OFFSET_STRUCT_ENTITY_X_VEL,x @@ -901,19 +880,17 @@ main: { jmp __b8 // main::@8 __b8: - // [19] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 - lda.z i1 - asl - // [20] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuaa=vbuaa_plus_vbuz1 + // [18] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuaa=vbuz1_plus_vbuz2 + lda.z __25 clc adc.z i1 - // [21] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) -- pbuz1_derefidx_(pbsc1_derefidx_vbuaa)=pbuc2_derefidx_vbuaa + // [19] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) -- pbuz1_derefidx_(pbsc1_derefidx_vbuaa)=pbuc2_derefidx_vbuaa // Draw symbol tax lda entities+OFFSET_STRUCT_ENTITY_SYMBOL,x ldy entities,x sta (line),y - // [22] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [20] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 // Next line lda #$28 clc @@ -922,7 +899,7 @@ main: { bcc !+ inc.z line+1 !: - // [23] (byte) main::i1#1 ← ++ (byte) main::i1#2 -- vbuz1=_inc_vbuz1 + // [21] (byte) main::i1#1 ← ++ (byte) main::i1#2 -- vbuz1=_inc_vbuz1 inc.z i1 // [5] phi from main::@8 to main::@5 [phi:main::@8->main::@5] __b5_from___b8: @@ -931,30 +908,30 @@ main: { jmp __b5 // main::@2 __b2: - // [24] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + // [22] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - // [25] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 -- vbuyy=vbuaa_plus_vbuxx + // [23] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 -- vbuyy=vbuaa_plus_vbuxx stx.z $ff clc adc.z $ff tay - // [26] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 -- pbsc1_derefidx_vbuyy=vbsxx + // [24] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 -- pbsc1_derefidx_vbuyy=vbsxx txa sta entities,y - // [27] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 -- pbsc1_derefidx_vbuyy=vbsz1 + // [25] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 -- pbsc1_derefidx_vbuyy=vbsz1 lda.z v sta entities+OFFSET_STRUCT_ENTITY_X_VEL,y - // [28] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 -- pbuc1_derefidx_vbuyy=vbuxx + // [26] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 -- pbuc1_derefidx_vbuyy=vbuxx txa sta entities+OFFSET_STRUCT_ENTITY_SYMBOL,y - // [29] (signed byte) main::v#1 ← - (signed byte) main::v#2 -- vbsz1=_neg_vbsz1 + // [27] (signed byte) main::v#1 ← - (signed byte) main::v#2 -- vbsz1=_neg_vbsz1 lda.z v eor #$ff clc adc #1 sta.z v - // [30] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + // [28] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx // [1] phi from main::@2 to main::@1 [phi:main::@2->main::@1] __b1_from___b2: @@ -975,6 +952,8 @@ Removing instruction jmp __b10 Removing instruction jmp __b9 Removing instruction jmp __b8 Succesful ASM optimization Pass5NextJumpElimination +Removing instruction lda.z __25 +Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction __b1_from_main: Removing instruction __b4: Removing instruction __b5_from___b4: @@ -983,7 +962,7 @@ Removing instruction __b10: Removing instruction __b5_from___b8: Removing instruction __b1_from___b2: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [21] bcc __b2 to bcs +Fixing long branch [22] bcc __b2 to bcs FINAL SYMBOL TABLE (byte) Entity::symbol @@ -1001,9 +980,7 @@ FINAL SYMBOL TABLE (byte~) main::$16 reg byte a 303.0 (byte~) main::$18 reg byte x 201.99999999999997 (byte~) main::$21 reg byte a 22.0 -(byte~) main::$23 reg byte a 202.0 -(byte~) main::$25 reg byte a 202.0 -(byte~) main::$27 reg byte a 202.0 +(byte~) main::$25 zp[1]:6 40.4 (signed byte~) main::$8 reg byte a 202.0 (label) main::@1 (label) main::@10 @@ -1020,10 +997,10 @@ FINAL SYMBOL TABLE (byte) main::i#2 reg byte x 8.25 (byte) main::i1 (byte) main::i1#1 i1 zp[1]:3 202.0 -(byte) main::i1#2 i1 zp[1]:3 53.470588235294116 +(byte) main::i1#2 i1 zp[1]:3 47.13333333333333 (byte*) main::line (byte*) main::line#1 line zp[2]:4 101.0 -(byte*) main::line#2 line zp[2]:4 25.25 +(byte*) main::line#2 line zp[2]:4 28.857142857142858 (signed byte) main::v (signed byte) main::v#1 v zp[1]:2 11.0 (signed byte) main::v#2 v zp[1]:2 4.714285714285714 @@ -1032,19 +1009,17 @@ reg byte x [ main::i#2 main::i#1 ] zp[1]:2 [ main::v#2 main::v#1 ] zp[1]:3 [ main::i1#2 main::i1#1 ] zp[2]:4 [ main::line#2 main::line#1 ] -reg byte a [ main::$23 ] +zp[1]:6 [ main::$25 ] reg byte x [ main::$13 ] -reg byte a [ main::$27 ] reg byte x [ main::$18 ] reg byte a [ main::$8 ] -reg byte a [ main::$25 ] reg byte a [ main::$16 ] reg byte a [ main::$21 ] reg byte y [ main::$10 ] FINAL ASSEMBLER -Score: 20027 +Score: 19927 // File Comments // Test that the multiplication of a idx*sizeof(element) is reused inside loops @@ -1065,6 +1040,7 @@ main: { // Move the entities .label line = 4 .label i1 = 3 + .label __25 = 6 // asm // asm { sei } sei @@ -1120,10 +1096,11 @@ main: { // main::@6 __b6: // line[entities[i].x_pos] = ' ' - // [8] (byte~) main::$23 ← (byte) main::i1#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + // [8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i1 asl - // [9] (byte~) main::$13 ← (byte~) main::$23 + (byte) main::i1#2 -- vbuxx=vbuaa_plus_vbuz1 + sta.z __25 + // [9] (byte~) main::$13 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuxx=vbuz1_plus_vbuz2 clc adc.z i1 tax @@ -1156,23 +1133,21 @@ main: { // main::@9 __b9: // -entities[i].x_vel - // [14] (byte~) main::$27 ← (byte) main::i1#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 - lda.z i1 - asl - // [15] (byte~) main::$18 ← (byte~) main::$27 + (byte) main::i1#2 -- vbuxx=vbuaa_plus_vbuz1 + // [14] (byte~) main::$18 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuxx=vbuz1_plus_vbuz2 + lda.z __25 clc adc.z i1 tax - // [16] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- vbsaa=_neg_pbsc1_derefidx_vbuxx + // [15] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- vbsaa=_neg_pbsc1_derefidx_vbuxx lda entities+OFFSET_STRUCT_ENTITY_X_VEL,x eor #$ff clc adc #1 // entities[i].x_vel = -entities[i].x_vel - // [17] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) ← (signed byte~) main::$8 -- pbsc1_derefidx_vbuxx=vbsaa + // [16] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) ← (signed byte~) main::$8 -- pbsc1_derefidx_vbuxx=vbsaa sta entities+OFFSET_STRUCT_ENTITY_X_VEL,x // entities[i].x_pos += entities[i].x_vel - // [18] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- pbsc1_derefidx_vbuxx=pbsc1_derefidx_vbuxx_plus_pbsc2_derefidx_vbuxx + // [17] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- pbsc1_derefidx_vbuxx=pbsc1_derefidx_vbuxx_plus_pbsc2_derefidx_vbuxx clc lda entities,x adc entities+OFFSET_STRUCT_ENTITY_X_VEL,x @@ -1180,20 +1155,18 @@ main: { // main::@8 __b8: // line[entities[i].x_pos] = entities[i].symbol - // [19] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 - lda.z i1 - asl - // [20] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuaa=vbuaa_plus_vbuz1 + // [18] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuaa=vbuz1_plus_vbuz2 + lda.z __25 clc adc.z i1 - // [21] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) -- pbuz1_derefidx_(pbsc1_derefidx_vbuaa)=pbuc2_derefidx_vbuaa + // [19] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) -- pbuz1_derefidx_(pbsc1_derefidx_vbuaa)=pbuc2_derefidx_vbuaa // Draw symbol tax lda entities+OFFSET_STRUCT_ENTITY_SYMBOL,x ldy entities,x sta (line),y // line +=40 - // [22] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [20] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 // Next line lda #$28 clc @@ -1203,7 +1176,7 @@ main: { inc.z line+1 !: // for(char i=0;imain::@5] // [5] phi (byte*) main::line#2 = (byte*) main::line#1 [phi:main::@8->main::@5#0] -- register_copy @@ -1212,34 +1185,34 @@ main: { // main::@2 __b2: // entities[i].x_pos = (signed char)i - // [24] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 + // [22] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - // [25] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 -- vbuyy=vbuaa_plus_vbuxx + // [23] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 -- vbuyy=vbuaa_plus_vbuxx stx.z $ff clc adc.z $ff tay - // [26] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 -- pbsc1_derefidx_vbuyy=vbsxx + // [24] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 -- pbsc1_derefidx_vbuyy=vbsxx txa sta entities,y // entities[i].x_vel = v - // [27] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 -- pbsc1_derefidx_vbuyy=vbsz1 + // [25] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 -- pbsc1_derefidx_vbuyy=vbsz1 lda.z v sta entities+OFFSET_STRUCT_ENTITY_X_VEL,y // entities[i].symbol = i - // [28] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 -- pbuc1_derefidx_vbuyy=vbuxx + // [26] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 -- pbuc1_derefidx_vbuyy=vbuxx txa sta entities+OFFSET_STRUCT_ENTITY_SYMBOL,y // v = -v - // [29] (signed byte) main::v#1 ← - (signed byte) main::v#2 -- vbsz1=_neg_vbsz1 + // [27] (signed byte) main::v#1 ← - (signed byte) main::v#2 -- vbsz1=_neg_vbsz1 lda.z v eor #$ff clc adc #1 sta.z v // for(char i=0;imain::@1] // [1] phi (signed byte) main::v#2 = (signed byte) main::v#1 [phi:main::@2->main::@1#0] -- register_copy diff --git a/src/test/ref/index-sizeof-reuse.sym b/src/test/ref/index-sizeof-reuse.sym index a57bcdc2c..550eba980 100644 --- a/src/test/ref/index-sizeof-reuse.sym +++ b/src/test/ref/index-sizeof-reuse.sym @@ -13,9 +13,7 @@ (byte~) main::$16 reg byte a 303.0 (byte~) main::$18 reg byte x 201.99999999999997 (byte~) main::$21 reg byte a 22.0 -(byte~) main::$23 reg byte a 202.0 -(byte~) main::$25 reg byte a 202.0 -(byte~) main::$27 reg byte a 202.0 +(byte~) main::$25 zp[1]:6 40.4 (signed byte~) main::$8 reg byte a 202.0 (label) main::@1 (label) main::@10 @@ -32,10 +30,10 @@ (byte) main::i#2 reg byte x 8.25 (byte) main::i1 (byte) main::i1#1 i1 zp[1]:3 202.0 -(byte) main::i1#2 i1 zp[1]:3 53.470588235294116 +(byte) main::i1#2 i1 zp[1]:3 47.13333333333333 (byte*) main::line (byte*) main::line#1 line zp[2]:4 101.0 -(byte*) main::line#2 line zp[2]:4 25.25 +(byte*) main::line#2 line zp[2]:4 28.857142857142858 (signed byte) main::v (signed byte) main::v#1 v zp[1]:2 11.0 (signed byte) main::v#2 v zp[1]:2 4.714285714285714 @@ -44,12 +42,10 @@ reg byte x [ main::i#2 main::i#1 ] zp[1]:2 [ main::v#2 main::v#1 ] zp[1]:3 [ main::i1#2 main::i1#1 ] zp[2]:4 [ main::line#2 main::line#1 ] -reg byte a [ main::$23 ] +zp[1]:6 [ main::$25 ] reg byte x [ main::$13 ] -reg byte a [ main::$27 ] reg byte x [ main::$18 ] reg byte a [ main::$8 ] -reg byte a [ main::$25 ] reg byte a [ main::$16 ] reg byte a [ main::$21 ] reg byte y [ main::$10 ] diff --git a/src/test/ref/line-anim.asm b/src/test/ref/line-anim.asm index d4e430ab8..b23b48184 100644 --- a/src/test/ref/line-anim.asm +++ b/src/test/ref/line-anim.asm @@ -225,6 +225,7 @@ screen_fill: { point_init: { .label __5 = $c .label __6 = $e + .label __13 = 9 .label __17 = $10 .label __18 = $a .label __19 = $e @@ -237,6 +238,7 @@ point_init: { // ((signed word)x_end[point_idx])-((signed word)x_start[point_idx]) lda.z point_idx asl + sta.z __13 tay sec lda x_end,y @@ -294,13 +296,11 @@ point_init: { !: __b2: // x_start[point_idx]*$10 - lda.z point_idx - asl - tax - lda x_start,x + ldy.z __13 + lda x_start,y asl sta.z __5 - lda x_start+1,x + lda x_start+1,y rol sta.z __5+1 asl.z __5 @@ -311,9 +311,9 @@ point_init: { rol.z __5+1 // x_cur[point_idx] = x_start[point_idx]*$10 lda.z __5 - sta x_cur,x + sta x_cur,y lda.z __5+1 - sta x_cur+1,x + sta x_cur+1,y // ((word)y_start[point_idx])*$10 ldy.z point_idx lda y_start,y @@ -329,12 +329,14 @@ point_init: { asl.z __6 rol.z __6+1 // y_cur[point_idx] = ((word)y_start[point_idx])*$10 + ldy.z __13 lda.z __6 - sta y_cur,x + sta y_cur,y lda.z __6+1 - sta y_cur+1,x + sta y_cur+1,y // delay[point_idx] = DELAY lda #DELAY + ldy.z point_idx sta delay,y // } rts diff --git a/src/test/ref/line-anim.cfg b/src/test/ref/line-anim.cfg index 5ed5a284d..dba5ce4ca 100644 --- a/src/test/ref/line-anim.cfg +++ b/src/test/ref/line-anim.cfg @@ -145,8 +145,8 @@ screen_fill::@return: scope:[screen_fill] from screen_fill::@3 (void()) point_init((byte) point_init::point_idx) point_init: scope:[point_init] from main::@1 - [68] (byte~) point_init::$11 ← (byte) point_init::point_idx#0 << (byte) 1 - [69] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$11) - (signed word)*((const word*) x_start + (byte~) point_init::$11) + [68] (byte~) point_init::$13 ← (byte) point_init::point_idx#0 << (byte) 1 + [69] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$13) - (signed word)*((const word*) x_start + (byte~) point_init::$13) [70] (signed word~) point_init::$17 ← (signed word)*((const byte*) y_end + (byte) point_init::point_idx#0) [71] (signed word~) point_init::$18 ← (signed word)*((const byte*) y_start + (byte) point_init::point_idx#0) [72] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$17 - (signed word~) point_init::$18 @@ -173,142 +173,141 @@ point_init::@6: scope:[point_init] from point_init::abs16s2_@return [79] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 to:point_init::@2 point_init::@2: scope:[point_init] from point_init::@6 point_init::@7 - [80] (byte~) point_init::$13 ← (byte) point_init::point_idx#0 << (byte) 1 - [81] (word~) point_init::$5 ← *((const word*) x_start + (byte~) point_init::$13) << (byte) 4 - [82] *((const word*) x_cur + (byte~) point_init::$13) ← (word~) point_init::$5 - [83] (word~) point_init::$19 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) - [84] (word~) point_init::$6 ← (word~) point_init::$19 << (byte) 4 - [85] *((const word*) y_cur + (byte~) point_init::$13) ← (word~) point_init::$6 - [86] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const nomodify byte) DELAY + [80] (word~) point_init::$5 ← *((const word*) x_start + (byte~) point_init::$13) << (byte) 4 + [81] *((const word*) x_cur + (byte~) point_init::$13) ← (word~) point_init::$5 + [82] (word~) point_init::$19 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) + [83] (word~) point_init::$6 ← (word~) point_init::$19 << (byte) 4 + [84] *((const word*) y_cur + (byte~) point_init::$13) ← (word~) point_init::$6 + [85] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const nomodify byte) DELAY to:point_init::@return point_init::@return: scope:[point_init] from point_init::@2 - [87] return + [86] return to:@return point_init::@1: scope:[point_init] from point_init::@6 - [88] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 + [87] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 to:point_init::@3 point_init::@3: scope:[point_init] from point_init::@1 - [89] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 + [88] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 to:point_init::@5 point_init::@5: scope:[point_init] from point_init::@3 point_init::@4 - [90] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 - [91] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 - [92] call divr16s - [93] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + [89] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 + [90] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 + [91] call divr16s + [92] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 to:point_init::@7 point_init::@7: scope:[point_init] from point_init::@5 - [94] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 - [95] (byte~) point_init::$9 ← > (signed word) point_init::x_stepf#0 - [96] (byte~) point_init::$10 ← (byte~) point_init::$9 >> (byte) 4 - [97] *((const signed byte*) y_add + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$10 + [93] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 + [94] (byte~) point_init::$9 ← > (signed word) point_init::x_stepf#0 + [95] (byte~) point_init::$10 ← (byte~) point_init::$9 >> (byte) 4 + [96] *((const signed byte*) y_add + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$10 to:point_init::@2 point_init::@4: scope:[point_init] from point_init::@1 - [98] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 + [97] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 to:point_init::@5 point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2 - [99] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 - [100] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 + [98] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 + [99] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 to:point_init::abs16s2_@return point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1 - [101] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 - [102] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 + [100] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 + [101] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 to:point_init::abs16s1_@return (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) bitmap_plot: scope:[bitmap_plot] from main::@7 - [103] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) - [104] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 - [105] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 - [106] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#0 - [107] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) + [102] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) + [103] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 + [104] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 + [105] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#0 + [106] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot - [108] return + [107] return to:@return (signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem) divr16s: scope:[divr16s] from point_init::@5 - [109] phi() + [108] phi() to:divr16s::@10 divr16s::@10: scope:[divr16s] from divr16s - [110] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 + [109] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 to:divr16s::@6 divr16s::@6: scope:[divr16s] from divr16s::@10 - [111] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 + [110] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 to:divr16s::@2 divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@6 - [112] (word) divr16s::remu#3 ← phi( divr16s::@1/(word) divr16s::remu#7 divr16s::@6/(word) divr16s::remu#8 ) - [112] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte) 1 divr16s::@6/(byte) 0 ) - [113] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 + [111] (word) divr16s::remu#3 ← phi( divr16s::@1/(word) divr16s::remu#7 divr16s::@6/(word) divr16s::remu#8 ) + [111] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte) 1 divr16s::@6/(byte) 0 ) + [112] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 to:divr16s::@7 divr16s::@7: scope:[divr16s] from divr16s::@2 - [114] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + [113] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 to:divr16s::@4 divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@7 - [115] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@7/(byte) divr16s::neg#3 ) - [115] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word) divr16s::divisoru#4 divr16s::@7/(word) divr16s::divisoru#5 ) - [116] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 - [117] (word) divr16u::rem#3 ← (word) divr16s::remu#3 - [118] call divr16u - [119] (word) divr16u::return#2 ← (word) divr16u::return#0 + [114] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@7/(byte) divr16s::neg#3 ) + [114] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word) divr16s::divisoru#4 divr16s::@7/(word) divr16s::divisoru#5 ) + [115] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 + [116] (word) divr16u::rem#3 ← (word) divr16s::remu#3 + [117] call divr16u + [118] (word) divr16u::return#2 ← (word) divr16u::return#0 to:divr16s::@9 divr16s::@9: scope:[divr16s] from divr16s::@4 - [120] (word) divr16s::resultu#0 ← (word) divr16u::return#2 - [121] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 + [119] (word) divr16s::resultu#0 ← (word) divr16u::return#2 + [120] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 to:divr16s::@8 divr16s::@8: scope:[divr16s] from divr16s::@9 - [122] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 + [121] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 to:divr16s::@return divr16s::@return: scope:[divr16s] from divr16s::@5 divr16s::@8 - [123] (signed word) divr16s::return#2 ← phi( divr16s::@5/(signed word) divr16s::return#6 divr16s::@8/(signed word) divr16s::return#1 ) - [124] return + [122] (signed word) divr16s::return#2 ← phi( divr16s::@5/(signed word) divr16s::return#6 divr16s::@8/(signed word) divr16s::return#1 ) + [123] return to:@return divr16s::@5: scope:[divr16s] from divr16s::@9 - [125] (signed word) divr16s::return#6 ← (signed word)(word) divr16s::resultu#0 + [124] (signed word) divr16s::return#6 ← (signed word)(word) divr16s::resultu#0 to:divr16s::@return divr16s::@3: scope:[divr16s] from divr16s::@2 - [126] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 - [127] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 - [128] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 + [125] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 + [126] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 + [127] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 to:divr16s::@4 divr16s::@1: scope:[divr16s] from divr16s::@10 - [129] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 - [130] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 + [128] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 + [129] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 to:divr16s::@2 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) divr16u: scope:[divr16u] from divr16s::@4 - [131] phi() + [130] phi() to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [132] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) - [132] (word) divr16u::quotient#3 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::return#0 ) - [132] (word) divr16u::dividend#2 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::dividend#0 ) - [132] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#9 ) - [133] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 - [134] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 - [135] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 - [136] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 + [131] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) + [131] (word) divr16u::quotient#3 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::return#0 ) + [131] (word) divr16u::dividend#2 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::dividend#0 ) + [131] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#9 ) + [132] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 + [133] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 + [134] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 + [135] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [137] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 + [136] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [138] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [139] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 - [140] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 - [141] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 + [137] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [138] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 + [139] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 + [140] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [142] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [143] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 + [141] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [142] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [144] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [144] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) - [145] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [146] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 + [143] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [143] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + [144] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [145] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@3 - [147] return + [146] return to:@return diff --git a/src/test/ref/line-anim.log b/src/test/ref/line-anim.log index eaf43f06f..ce52b3333 100644 --- a/src/test/ref/line-anim.log +++ b/src/test/ref/line-anim.log @@ -1693,6 +1693,8 @@ Constant inlined bitmap_init::bitmap#0 = (const byte*) BITMAP Successful SSA optimization Pass2ConstantInlining Identical Phi Values (word) divr16s::dividendu#3 (word) 0 Successful SSA optimization Pass2IdenticalPhiElimination +Identified duplicate assignment right side [66] (byte~) point_init::$13 ← (byte) point_init::point_idx#0 << (byte) 1 +Successful SSA optimization Pass2DuplicateRValueIdentification Constant (const word) divr16u::dividend#1 = 0 Successful SSA optimization Pass2ConstantIdentification Eliminating unused constant (const byte) SIZEOF_WORD @@ -1700,6 +1702,8 @@ Successful SSA optimization PassNEliminateUnusedVars Inlining constant with var siblings (const word) divr16u::dividend#1 Constant inlined divr16u::dividend#1 = (word) 0 Successful SSA optimization Pass2ConstantInlining +Alias point_init::$13 = point_init::$11 +Successful SSA optimization Pass2AliasElimination Added new block during phi lifting divr16u::@7(between divr16u::@3 and divr16u::@1) Added new block during phi lifting divr16u::@8(between divr16u::@1 and divr16u::@2) Added new block during phi lifting divr16u::@9(between divr16u::@2 and divr16u::@3) @@ -1730,8 +1734,8 @@ Adding NOP phi() at start of divr16s Adding NOP phi() at start of divr16u::@6 CALL GRAPH Calls in [main] to bitmap_init:12 bitmap_clear:14 screen_fill:16 point_init:20 bitmap_plot:24 -Calls in [point_init] to divr16s:117 -Calls in [divr16s] to divr16u:144 +Calls in [point_init] to divr16s:116 +Calls in [divr16s] to divr16u:143 Created 29 initial phi equivalence classes Coalesced [30] main::i#5 ← main::i#1 @@ -1752,20 +1756,20 @@ Coalesced [88] screen_fill::screen#6 ← screen_fill::screen#1 Coalesced [89] screen_fill::y#5 ← screen_fill::y#1 Coalesced (already) [90] screen_fill::screen#8 ← screen_fill::screen#1 Coalesced [91] screen_fill::x#3 ← screen_fill::x#1 -Coalesced [140] divr16s::neg#10 ← divr16s::neg#3 -Coalesced [149] divr16s::return#7 ← divr16s::return#1 -Coalesced [156] divr16s::neg#9 ← divr16s::neg#2 -Coalesced [159] divr16u::rem#10 ← divr16u::rem#3 -Coalesced [166] divr16u::rem#13 ← divr16u::rem#1 -Coalesced [173] divr16u::rem#15 ← divr16u::rem#2 -Coalesced [174] divr16u::return#6 ← divr16u::quotient#2 -Coalesced [180] divr16u::rem#11 ← divr16u::rem#9 -Coalesced [181] divr16u::dividend#8 ← divr16u::dividend#0 -Coalesced [182] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [183] divr16u::i#7 ← divr16u::i#1 -Coalesced [184] divr16u::rem#14 ← divr16u::rem#5 -Coalesced [185] divr16u::return#5 ← divr16u::quotient#1 -Coalesced [186] divr16u::rem#12 ← divr16u::rem#0 +Coalesced [139] divr16s::neg#10 ← divr16s::neg#3 +Coalesced [148] divr16s::return#7 ← divr16s::return#1 +Coalesced [155] divr16s::neg#9 ← divr16s::neg#2 +Coalesced [158] divr16u::rem#10 ← divr16u::rem#3 +Coalesced [165] divr16u::rem#13 ← divr16u::rem#1 +Coalesced [172] divr16u::rem#15 ← divr16u::rem#2 +Coalesced [173] divr16u::return#6 ← divr16u::quotient#2 +Coalesced [179] divr16u::rem#11 ← divr16u::rem#9 +Coalesced [180] divr16u::dividend#8 ← divr16u::dividend#0 +Coalesced [181] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [182] divr16u::i#7 ← divr16u::i#1 +Coalesced [183] divr16u::rem#14 ← divr16u::rem#5 +Coalesced [184] divr16u::return#5 ← divr16u::quotient#1 +Coalesced [185] divr16u::rem#12 ← divr16u::rem#0 Coalesced down to 21 phi equivalence classes Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return Culled Empty Block (label) main::@5 @@ -1958,8 +1962,8 @@ screen_fill::@return: scope:[screen_fill] from screen_fill::@3 (void()) point_init((byte) point_init::point_idx) point_init: scope:[point_init] from main::@1 - [68] (byte~) point_init::$11 ← (byte) point_init::point_idx#0 << (byte) 1 - [69] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$11) - (signed word)*((const word*) x_start + (byte~) point_init::$11) + [68] (byte~) point_init::$13 ← (byte) point_init::point_idx#0 << (byte) 1 + [69] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$13) - (signed word)*((const word*) x_start + (byte~) point_init::$13) [70] (signed word~) point_init::$17 ← (signed word)*((const byte*) y_end + (byte) point_init::point_idx#0) [71] (signed word~) point_init::$18 ← (signed word)*((const byte*) y_start + (byte) point_init::point_idx#0) [72] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$17 - (signed word~) point_init::$18 @@ -1986,144 +1990,143 @@ point_init::@6: scope:[point_init] from point_init::abs16s2_@return [79] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 to:point_init::@2 point_init::@2: scope:[point_init] from point_init::@6 point_init::@7 - [80] (byte~) point_init::$13 ← (byte) point_init::point_idx#0 << (byte) 1 - [81] (word~) point_init::$5 ← *((const word*) x_start + (byte~) point_init::$13) << (byte) 4 - [82] *((const word*) x_cur + (byte~) point_init::$13) ← (word~) point_init::$5 - [83] (word~) point_init::$19 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) - [84] (word~) point_init::$6 ← (word~) point_init::$19 << (byte) 4 - [85] *((const word*) y_cur + (byte~) point_init::$13) ← (word~) point_init::$6 - [86] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const nomodify byte) DELAY + [80] (word~) point_init::$5 ← *((const word*) x_start + (byte~) point_init::$13) << (byte) 4 + [81] *((const word*) x_cur + (byte~) point_init::$13) ← (word~) point_init::$5 + [82] (word~) point_init::$19 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) + [83] (word~) point_init::$6 ← (word~) point_init::$19 << (byte) 4 + [84] *((const word*) y_cur + (byte~) point_init::$13) ← (word~) point_init::$6 + [85] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const nomodify byte) DELAY to:point_init::@return point_init::@return: scope:[point_init] from point_init::@2 - [87] return + [86] return to:@return point_init::@1: scope:[point_init] from point_init::@6 - [88] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 + [87] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 to:point_init::@3 point_init::@3: scope:[point_init] from point_init::@1 - [89] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 + [88] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 to:point_init::@5 point_init::@5: scope:[point_init] from point_init::@3 point_init::@4 - [90] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 - [91] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 - [92] call divr16s - [93] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + [89] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 + [90] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 + [91] call divr16s + [92] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 to:point_init::@7 point_init::@7: scope:[point_init] from point_init::@5 - [94] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 - [95] (byte~) point_init::$9 ← > (signed word) point_init::x_stepf#0 - [96] (byte~) point_init::$10 ← (byte~) point_init::$9 >> (byte) 4 - [97] *((const signed byte*) y_add + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$10 + [93] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 + [94] (byte~) point_init::$9 ← > (signed word) point_init::x_stepf#0 + [95] (byte~) point_init::$10 ← (byte~) point_init::$9 >> (byte) 4 + [96] *((const signed byte*) y_add + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$10 to:point_init::@2 point_init::@4: scope:[point_init] from point_init::@1 - [98] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 + [97] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 to:point_init::@5 point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2 - [99] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 - [100] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 + [98] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 + [99] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 to:point_init::abs16s2_@return point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1 - [101] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 - [102] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 + [100] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 + [101] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 to:point_init::abs16s1_@return (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) bitmap_plot: scope:[bitmap_plot] from main::@7 - [103] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) - [104] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 - [105] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 - [106] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#0 - [107] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) + [102] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) + [103] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 + [104] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 + [105] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#0 + [106] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot - [108] return + [107] return to:@return (signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem) divr16s: scope:[divr16s] from point_init::@5 - [109] phi() + [108] phi() to:divr16s::@10 divr16s::@10: scope:[divr16s] from divr16s - [110] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 + [109] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 to:divr16s::@6 divr16s::@6: scope:[divr16s] from divr16s::@10 - [111] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 + [110] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 to:divr16s::@2 divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@6 - [112] (word) divr16s::remu#3 ← phi( divr16s::@1/(word) divr16s::remu#7 divr16s::@6/(word) divr16s::remu#8 ) - [112] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte) 1 divr16s::@6/(byte) 0 ) - [113] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 + [111] (word) divr16s::remu#3 ← phi( divr16s::@1/(word) divr16s::remu#7 divr16s::@6/(word) divr16s::remu#8 ) + [111] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte) 1 divr16s::@6/(byte) 0 ) + [112] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 to:divr16s::@7 divr16s::@7: scope:[divr16s] from divr16s::@2 - [114] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + [113] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 to:divr16s::@4 divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@7 - [115] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@7/(byte) divr16s::neg#3 ) - [115] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word) divr16s::divisoru#4 divr16s::@7/(word) divr16s::divisoru#5 ) - [116] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 - [117] (word) divr16u::rem#3 ← (word) divr16s::remu#3 - [118] call divr16u - [119] (word) divr16u::return#2 ← (word) divr16u::return#0 + [114] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@7/(byte) divr16s::neg#3 ) + [114] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word) divr16s::divisoru#4 divr16s::@7/(word) divr16s::divisoru#5 ) + [115] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 + [116] (word) divr16u::rem#3 ← (word) divr16s::remu#3 + [117] call divr16u + [118] (word) divr16u::return#2 ← (word) divr16u::return#0 to:divr16s::@9 divr16s::@9: scope:[divr16s] from divr16s::@4 - [120] (word) divr16s::resultu#0 ← (word) divr16u::return#2 - [121] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 + [119] (word) divr16s::resultu#0 ← (word) divr16u::return#2 + [120] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 to:divr16s::@8 divr16s::@8: scope:[divr16s] from divr16s::@9 - [122] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 + [121] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 to:divr16s::@return divr16s::@return: scope:[divr16s] from divr16s::@5 divr16s::@8 - [123] (signed word) divr16s::return#2 ← phi( divr16s::@5/(signed word) divr16s::return#6 divr16s::@8/(signed word) divr16s::return#1 ) - [124] return + [122] (signed word) divr16s::return#2 ← phi( divr16s::@5/(signed word) divr16s::return#6 divr16s::@8/(signed word) divr16s::return#1 ) + [123] return to:@return divr16s::@5: scope:[divr16s] from divr16s::@9 - [125] (signed word) divr16s::return#6 ← (signed word)(word) divr16s::resultu#0 + [124] (signed word) divr16s::return#6 ← (signed word)(word) divr16s::resultu#0 to:divr16s::@return divr16s::@3: scope:[divr16s] from divr16s::@2 - [126] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 - [127] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 - [128] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 + [125] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 + [126] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 + [127] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 to:divr16s::@4 divr16s::@1: scope:[divr16s] from divr16s::@10 - [129] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 - [130] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 + [128] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 + [129] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 to:divr16s::@2 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) divr16u: scope:[divr16u] from divr16s::@4 - [131] phi() + [130] phi() to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [132] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) - [132] (word) divr16u::quotient#3 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::return#0 ) - [132] (word) divr16u::dividend#2 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::dividend#0 ) - [132] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#9 ) - [133] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 - [134] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 - [135] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 - [136] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 + [131] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) + [131] (word) divr16u::quotient#3 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::return#0 ) + [131] (word) divr16u::dividend#2 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::dividend#0 ) + [131] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#9 ) + [132] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 + [133] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 + [134] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 + [135] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [137] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 + [136] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [138] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [139] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 - [140] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 - [141] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 + [137] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [138] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 + [139] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 + [140] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [142] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [143] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 + [141] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [142] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [144] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [144] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) - [145] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [146] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 + [143] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [143] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + [144] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [145] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@3 - [147] return + [146] return to:@return @@ -2322,8 +2325,7 @@ VARIABLE REGISTER WEIGHTS (byte) main::vicSelectGfxBank1_toDd001_return (void()) point_init((byte) point_init::point_idx) (byte~) point_init::$10 101.0 -(byte~) point_init::$11 101.0 -(byte~) point_init::$13 80.8 +(byte~) point_init::$13 13.03225806451613 (signed word~) point_init::$17 101.0 (signed word~) point_init::$18 202.0 (word~) point_init::$19 202.0 @@ -2343,7 +2345,7 @@ VARIABLE REGISTER WEIGHTS (word) point_init::abs16s2_return#6 202.0 (signed word) point_init::abs16s2_w (byte) point_init::point_idx -(byte) point_init::point_idx#0 18.147058823529413 +(byte) point_init::point_idx#0 15.636363636363637 (signed word) point_init::x_diff (signed word) point_init::x_diff#1 28.055555555555554 (signed word) point_init::x_stepf @@ -2394,12 +2396,11 @@ Added variable bitmap_init::$4 to live range equivalence class [ bitmap_init::$4 Added variable bitmap_init::$5 to live range equivalence class [ bitmap_init::$5 ] Added variable bitmap_init::$6 to live range equivalence class [ bitmap_init::$6 ] Added variable bitmap_clear::bitmap#0 to live range equivalence class [ bitmap_clear::bitmap#0 ] -Added variable point_init::$11 to live range equivalence class [ point_init::$11 ] +Added variable point_init::$13 to live range equivalence class [ point_init::$13 ] Added variable point_init::x_diff#1 to live range equivalence class [ point_init::x_diff#1 ] Added variable point_init::$17 to live range equivalence class [ point_init::$17 ] Added variable point_init::$18 to live range equivalence class [ point_init::$18 ] Added variable point_init::y_diff#0 to live range equivalence class [ point_init::y_diff#0 ] -Added variable point_init::$13 to live range equivalence class [ point_init::$13 ] Added variable point_init::$5 to live range equivalence class [ point_init::$5 ] Added variable point_init::$19 to live range equivalence class [ point_init::$19 ] Added variable point_init::$6 to live range equivalence class [ point_init::$6 ] @@ -2453,12 +2454,11 @@ Complete equivalence classes [ bitmap_init::$5 ] [ bitmap_init::$6 ] [ bitmap_clear::bitmap#0 ] -[ point_init::$11 ] +[ point_init::$13 ] [ point_init::x_diff#1 ] [ point_init::$17 ] [ point_init::$18 ] [ point_init::y_diff#0 ] -[ point_init::$13 ] [ point_init::$5 ] [ point_init::$19 ] [ point_init::$6 ] @@ -2511,34 +2511,33 @@ Allocated zp[1]:40 [ bitmap_init::$4 ] Allocated zp[1]:41 [ bitmap_init::$5 ] Allocated zp[1]:42 [ bitmap_init::$6 ] Allocated zp[2]:43 [ bitmap_clear::bitmap#0 ] -Allocated zp[1]:45 [ point_init::$11 ] +Allocated zp[1]:45 [ point_init::$13 ] Allocated zp[2]:46 [ point_init::x_diff#1 ] Allocated zp[2]:48 [ point_init::$17 ] Allocated zp[2]:50 [ point_init::$18 ] Allocated zp[2]:52 [ point_init::y_diff#0 ] -Allocated zp[1]:54 [ point_init::$13 ] -Allocated zp[2]:55 [ point_init::$5 ] -Allocated zp[2]:57 [ point_init::$19 ] -Allocated zp[2]:59 [ point_init::$6 ] -Allocated zp[2]:61 [ divr16s::divisor#0 ] -Allocated zp[2]:63 [ divr16s::rem#0 ] -Allocated zp[2]:65 [ divr16s::return#3 ] -Allocated zp[2]:67 [ point_init::x_stepf#0 ] -Allocated zp[1]:69 [ point_init::$9 ] -Allocated zp[1]:70 [ point_init::$10 ] -Allocated zp[2]:71 [ point_init::abs16s2_return#0 ] -Allocated zp[2]:73 [ point_init::abs16s1_return#0 ] -Allocated zp[2]:75 [ bitmap_plot::plotter#0 ] -Allocated zp[2]:77 [ bitmap_plot::$0 ] -Allocated zp[2]:79 [ bitmap_plot::plotter#1 ] -Allocated zp[1]:81 [ bitmap_plot::$1 ] -Allocated zp[2]:82 [ divr16u::divisor#0 ] -Allocated zp[2]:84 [ divr16u::return#2 ] -Allocated zp[2]:86 [ divr16s::resultu#0 ] -Allocated zp[2]:88 [ divr16s::divisoru#1 ] -Allocated zp[2]:90 [ divr16s::remu#1 ] -Allocated zp[1]:92 [ divr16u::$1 ] -Allocated zp[1]:93 [ divr16u::$2 ] +Allocated zp[2]:54 [ point_init::$5 ] +Allocated zp[2]:56 [ point_init::$19 ] +Allocated zp[2]:58 [ point_init::$6 ] +Allocated zp[2]:60 [ divr16s::divisor#0 ] +Allocated zp[2]:62 [ divr16s::rem#0 ] +Allocated zp[2]:64 [ divr16s::return#3 ] +Allocated zp[2]:66 [ point_init::x_stepf#0 ] +Allocated zp[1]:68 [ point_init::$9 ] +Allocated zp[1]:69 [ point_init::$10 ] +Allocated zp[2]:70 [ point_init::abs16s2_return#0 ] +Allocated zp[2]:72 [ point_init::abs16s1_return#0 ] +Allocated zp[2]:74 [ bitmap_plot::plotter#0 ] +Allocated zp[2]:76 [ bitmap_plot::$0 ] +Allocated zp[2]:78 [ bitmap_plot::plotter#1 ] +Allocated zp[1]:80 [ bitmap_plot::$1 ] +Allocated zp[2]:81 [ divr16u::divisor#0 ] +Allocated zp[2]:83 [ divr16u::return#2 ] +Allocated zp[2]:85 [ divr16s::resultu#0 ] +Allocated zp[2]:87 [ divr16s::divisoru#1 ] +Allocated zp[2]:89 [ divr16s::remu#1 ] +Allocated zp[1]:91 [ divr16u::$1 ] +Allocated zp[1]:92 [ divr16u::$2 ] INITIAL ASM Target platform is c64basic / MOS6502X @@ -2984,29 +2983,28 @@ screen_fill: { // Initialize the points to be animated // point_init(byte zp($22) point_idx) point_init: { - .label __5 = $37 - .label __6 = $3b - .label __9 = $45 - .label __10 = $46 - .label __11 = $2d - .label __13 = $36 + .label __5 = $36 + .label __6 = $3a + .label __9 = $44 + .label __10 = $45 + .label __13 = $2d .label __17 = $30 .label __18 = $32 - .label __19 = $39 + .label __19 = $38 .label point_idx = $22 .label y_diff = $34 - .label abs16s1_return = $49 + .label abs16s1_return = $48 .label abs16s1_return_1 = $10 - .label abs16s2_return = $47 + .label abs16s2_return = $46 .label abs16s2_return_1 = $12 - .label x_stepf = $43 + .label x_stepf = $42 .label x_diff = $2e - // [68] (byte~) point_init::$11 ← (byte) point_init::point_idx#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [68] (byte~) point_init::$13 ← (byte) point_init::point_idx#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z point_idx asl - sta.z __11 - // [69] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$11) - (signed word)*((const word*) x_start + (byte~) point_init::$11) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 - ldy.z __11 + sta.z __13 + // [69] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$13) - (signed word)*((const word*) x_start + (byte~) point_init::$13) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 + ldy.z __13 sec lda x_end,y sbc x_start,y @@ -3091,11 +3089,7 @@ point_init: { jmp __b2 // point_init::@2 __b2: - // [80] (byte~) point_init::$13 ← (byte) point_init::point_idx#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 - lda.z point_idx - asl - sta.z __13 - // [81] (word~) point_init::$5 ← *((const word*) x_start + (byte~) point_init::$13) << (byte) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 + // [80] (word~) point_init::$5 ← *((const word*) x_start + (byte~) point_init::$13) << (byte) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 ldy.z __13 lda x_start,y asl @@ -3109,19 +3103,19 @@ point_init: { rol.z __5+1 asl.z __5 rol.z __5+1 - // [82] *((const word*) x_cur + (byte~) point_init::$13) ← (word~) point_init::$5 -- pwuc1_derefidx_vbuz1=vwuz2 + // [81] *((const word*) x_cur + (byte~) point_init::$13) ← (word~) point_init::$5 -- pwuc1_derefidx_vbuz1=vwuz2 ldy.z __13 lda.z __5 sta x_cur,y lda.z __5+1 sta x_cur+1,y - // [83] (word~) point_init::$19 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 + // [82] (word~) point_init::$19 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy.z point_idx lda y_start,y sta.z __19 lda #0 sta.z __19+1 - // [84] (word~) point_init::$6 ← (word~) point_init::$19 << (byte) 4 -- vwuz1=vwuz2_rol_4 + // [83] (word~) point_init::$6 ← (word~) point_init::$19 << (byte) 4 -- vwuz1=vwuz2_rol_4 lda.z __19 asl sta.z __6 @@ -3134,31 +3128,31 @@ point_init: { rol.z __6+1 asl.z __6 rol.z __6+1 - // [85] *((const word*) y_cur + (byte~) point_init::$13) ← (word~) point_init::$6 -- pwuc1_derefidx_vbuz1=vwuz2 + // [84] *((const word*) y_cur + (byte~) point_init::$13) ← (word~) point_init::$6 -- pwuc1_derefidx_vbuz1=vwuz2 ldy.z __13 lda.z __6 sta y_cur,y lda.z __6+1 sta y_cur+1,y - // [86] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const nomodify byte) DELAY -- pbuc1_derefidx_vbuz1=vbuc2 + // [85] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const nomodify byte) DELAY -- pbuc1_derefidx_vbuz1=vbuc2 lda #DELAY ldy.z point_idx sta delay,y jmp __breturn // point_init::@return __breturn: - // [87] return + // [86] return rts // point_init::@1 __b1: - // [88] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 -- vwsz1_lt_0_then_la1 + // [87] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 -- vwsz1_lt_0_then_la1 // X is driver - abs(y/x) is < 1 lda.z x_diff+1 bmi __b4 jmp __b3 // point_init::@3 __b3: - // [89] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 -- pbsc1_derefidx_vbuz1=vbsc2 + // [88] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 -- pbsc1_derefidx_vbuz1=vbsc2 // x add = 1.0 lda #$10 ldy.z point_idx @@ -3166,21 +3160,21 @@ point_init: { jmp __b5 // point_init::@5 __b5: - // [90] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 -- vwsz1=vwsz2 + // [89] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 -- vwsz1=vwsz2 lda.z x_diff sta.z divr16s.divisor lda.z x_diff+1 sta.z divr16s.divisor+1 - // [91] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 -- vwsz1=vwsz2 + // [90] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 -- vwsz1=vwsz2 lda.z y_diff sta.z divr16s.rem lda.z y_diff+1 sta.z divr16s.rem+1 - // [92] call divr16s - // [109] phi from point_init::@5 to divr16s [phi:point_init::@5->divr16s] + // [91] call divr16s + // [108] phi from point_init::@5 to divr16s [phi:point_init::@5->divr16s] divr16s_from___b5: jsr divr16s - // [93] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 -- vwsz1=vwsz2 + // [92] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 -- vwsz1=vwsz2 lda.z divr16s.return sta.z divr16s.return_1 lda.z divr16s.return+1 @@ -3188,29 +3182,29 @@ point_init: { jmp __b7 // point_init::@7 __b7: - // [94] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2 + // [93] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2 lda.z divr16s.return_1 sta.z x_stepf lda.z divr16s.return_1+1 sta.z x_stepf+1 - // [95] (byte~) point_init::$9 ← > (signed word) point_init::x_stepf#0 -- vbuz1=_hi_vwsz2 + // [94] (byte~) point_init::$9 ← > (signed word) point_init::x_stepf#0 -- vbuz1=_hi_vwsz2 lda.z x_stepf+1 sta.z __9 - // [96] (byte~) point_init::$10 ← (byte~) point_init::$9 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + // [95] (byte~) point_init::$10 ← (byte~) point_init::$9 >> (byte) 4 -- vbuz1=vbuz2_ror_4 lda.z __9 lsr lsr lsr lsr sta.z __10 - // [97] *((const signed byte*) y_add + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$10 -- pbsc1_derefidx_vbuz1=vbsz2 + // [96] *((const signed byte*) y_add + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$10 -- pbsc1_derefidx_vbuz1=vbsz2 lda.z __10 ldy.z point_idx sta y_add,y jmp __b2 // point_init::@4 __b4: - // [98] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 -- pbsc1_derefidx_vbuz1=vbsc2 + // [97] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 -- pbsc1_derefidx_vbuz1=vbsc2 // x add = -1.0 lda #-$10 ldy.z point_idx @@ -3218,7 +3212,7 @@ point_init: { jmp __b5 // point_init::abs16s2_@1 abs16s2___b1: - // [99] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 + // [98] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 sec lda #0 sbc.z y_diff @@ -3226,7 +3220,7 @@ point_init: { lda #0 sbc.z y_diff+1 sta.z abs16s2_return+1 - // [100] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 -- vwuz1=vwuz2 + // [99] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 -- vwuz1=vwuz2 lda.z abs16s2_return sta.z abs16s2_return_1 lda.z abs16s2_return+1 @@ -3234,7 +3228,7 @@ point_init: { jmp abs16s2___breturn_from_abs16s2___b1 // point_init::abs16s1_@1 abs16s1___b1: - // [101] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 + // [100] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 sec lda #0 sbc.z x_diff @@ -3242,7 +3236,7 @@ point_init: { lda #0 sbc.z x_diff+1 sta.z abs16s1_return+1 - // [102] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 -- vwuz1=vwuz2 + // [101] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 -- vwuz1=vwuz2 lda.z abs16s1_return sta.z abs16s1_return_1 lda.z abs16s1_return+1 @@ -3253,26 +3247,26 @@ point_init: { // Plot a single dot in the bitmap // bitmap_plot(word zp($24) x, byte zp($26) y) bitmap_plot: { - .label __0 = $4d - .label __1 = $51 + .label __0 = $4c + .label __1 = $50 .label x = $24 .label y = $26 - .label plotter = $4b - .label plotter_1 = $4f - // [103] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 + .label plotter = $4a + .label plotter_1 = $4e + // [102] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 ldy.z y lda bitmap_plot_yhi,y sta.z plotter+1 lda bitmap_plot_ylo,y sta.z plotter - // [104] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + // [103] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda.z x and #<$fff8 sta.z __0 lda.z x+1 and #>$fff8 sta.z __0+1 - // [105] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz2_plus_vwuz3 + // [104] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz2_plus_vwuz3 lda.z plotter clc adc.z __0 @@ -3280,10 +3274,10 @@ bitmap_plot: { lda.z plotter+1 adc.z __0+1 sta.z plotter_1+1 - // [106] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#0 -- vbuz1=_lo_vwuz2 + // [105] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#0 -- vbuz1=_lo_vwuz2 lda.z x sta.z __1 - // [107] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 + // [106] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 ldy #0 lda (plotter_1),y ldy.z __1 @@ -3293,7 +3287,7 @@ bitmap_plot: { jmp __breturn // bitmap_plot::@return __breturn: - // [108] return + // [107] return rts } // divr16s @@ -3302,75 +3296,75 @@ bitmap_plot: { // Implemented using simple binary division // Follows the C99 standard by truncating toward zero on negative results. // See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5 -// divr16s(signed word zp($3d) divisor, signed word zp($3f) rem) +// divr16s(signed word zp($3c) divisor, signed word zp($3e) rem) divr16s: { - .label remu = $5a - .label divisoru = $58 + .label remu = $59 + .label divisoru = $57 .label neg = $18 - .label resultu = $56 + .label resultu = $55 .label return = $19 - .label divisor = $3d - .label rem = $3f - .label return_1 = $41 + .label divisor = $3c + .label rem = $3e + .label return_1 = $40 .label divisoru_1 = $16 .label remu_1 = $14 jmp __b10 // divr16s::@10 __b10: - // [110] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + // [109] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda.z rem+1 bmi __b1 jmp __b6 // divr16s::@6 __b6: - // [111] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 -- vwuz1=vwuz2 + // [110] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 -- vwuz1=vwuz2 lda.z rem sta.z remu_1 lda.z rem+1 sta.z remu_1+1 - // [112] phi from divr16s::@6 to divr16s::@2 [phi:divr16s::@6->divr16s::@2] + // [111] phi from divr16s::@6 to divr16s::@2 [phi:divr16s::@6->divr16s::@2] __b2_from___b6: - // [112] phi (word) divr16s::remu#3 = (word) divr16s::remu#8 [phi:divr16s::@6->divr16s::@2#0] -- register_copy - // [112] phi (byte) divr16s::neg#3 = (byte) 0 [phi:divr16s::@6->divr16s::@2#1] -- vbuz1=vbuc1 + // [111] phi (word) divr16s::remu#3 = (word) divr16s::remu#8 [phi:divr16s::@6->divr16s::@2#0] -- register_copy + // [111] phi (byte) divr16s::neg#3 = (byte) 0 [phi:divr16s::@6->divr16s::@2#1] -- vbuz1=vbuc1 lda #0 sta.z neg jmp __b2 // divr16s::@2 __b2: - // [113] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + // [112] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 lda.z divisor+1 bmi __b3 jmp __b7 // divr16s::@7 __b7: - // [114] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2 + // [113] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2 lda.z divisor sta.z divisoru_1 lda.z divisor+1 sta.z divisoru_1+1 - // [115] phi from divr16s::@3 divr16s::@7 to divr16s::@4 [phi:divr16s::@3/divr16s::@7->divr16s::@4] + // [114] phi from divr16s::@3 divr16s::@7 to divr16s::@4 [phi:divr16s::@3/divr16s::@7->divr16s::@4] __b4_from___b3: __b4_from___b7: - // [115] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@7->divr16s::@4#0] -- register_copy - // [115] phi (word) divr16s::divisoru#3 = (word) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@7->divr16s::@4#1] -- register_copy + // [114] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@7->divr16s::@4#0] -- register_copy + // [114] phi (word) divr16s::divisoru#3 = (word) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@7->divr16s::@4#1] -- register_copy jmp __b4 // divr16s::@4 __b4: - // [116] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2 + // [115] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2 lda.z divisoru_1 sta.z divr16u.divisor lda.z divisoru_1+1 sta.z divr16u.divisor+1 - // [117] (word) divr16u::rem#3 ← (word) divr16s::remu#3 -- vwuz1=vwuz2 + // [116] (word) divr16u::rem#3 ← (word) divr16s::remu#3 -- vwuz1=vwuz2 lda.z remu_1 sta.z divr16u.rem lda.z remu_1+1 sta.z divr16u.rem+1 - // [118] call divr16u - // [131] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + // [117] call divr16u + // [130] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] divr16u_from___b4: jsr divr16u - // [119] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + // [118] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda.z divr16u.return sta.z divr16u.return_1 lda.z divr16u.return+1 @@ -3378,19 +3372,19 @@ divr16s: { jmp __b9 // divr16s::@9 __b9: - // [120] (word) divr16s::resultu#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + // [119] (word) divr16s::resultu#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda.z divr16u.return_1 sta.z resultu lda.z divr16u.return_1+1 sta.z resultu+1 - // [121] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 -- vbuz1_eq_0_then_la1 + // [120] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 -- vbuz1_eq_0_then_la1 lda.z neg cmp #0 beq __b5 jmp __b8 // divr16s::@8 __b8: - // [122] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2 + // [121] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2 sec lda #0 sbc.z resultu @@ -3398,18 +3392,18 @@ divr16s: { lda #0 sbc.z resultu+1 sta.z return+1 - // [123] phi from divr16s::@5 divr16s::@8 to divr16s::@return [phi:divr16s::@5/divr16s::@8->divr16s::@return] + // [122] phi from divr16s::@5 divr16s::@8 to divr16s::@return [phi:divr16s::@5/divr16s::@8->divr16s::@return] __breturn_from___b5: __breturn_from___b8: - // [123] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#6 [phi:divr16s::@5/divr16s::@8->divr16s::@return#0] -- register_copy + // [122] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#6 [phi:divr16s::@5/divr16s::@8->divr16s::@return#0] -- register_copy jmp __breturn // divr16s::@return __breturn: - // [124] return + // [123] return rts // divr16s::@5 __b5: - // [125] (signed word) divr16s::return#6 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2 + // [124] (signed word) divr16s::return#6 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2 lda.z resultu sta.z return lda.z resultu+1 @@ -3417,7 +3411,7 @@ divr16s: { jmp __breturn_from___b5 // divr16s::@3 __b3: - // [126] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2 + // [125] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2 sec lda #0 sbc.z divisor @@ -3425,11 +3419,11 @@ divr16s: { lda #0 sbc.z divisor+1 sta.z divisoru+1 - // [127] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 -- vbuz1=vbuz1_bxor_vbuc1 + // [126] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda #1 eor.z neg sta.z neg - // [128] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 -- vwuz1=vwuz2 + // [127] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 -- vwuz1=vwuz2 lda.z divisoru sta.z divisoru_1 lda.z divisoru+1 @@ -3437,7 +3431,7 @@ divr16s: { jmp __b4_from___b3 // divr16s::@1 __b1: - // [129] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz2 + // [128] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz2 sec lda #0 sbc.z rem @@ -3445,15 +3439,15 @@ divr16s: { lda #0 sbc.z rem+1 sta.z remu+1 - // [130] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 -- vwuz1=vwuz2 + // [129] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 -- vwuz1=vwuz2 lda.z remu sta.z remu_1 lda.z remu+1 sta.z remu_1+1 - // [112] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + // [111] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] __b2_from___b1: - // [112] phi (word) divr16s::remu#3 = (word) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy - // [112] phi (byte) divr16s::neg#3 = (byte) 1 [phi:divr16s::@1->divr16s::@2#1] -- vbuz1=vbuc1 + // [111] phi (word) divr16s::remu#3 = (word) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy + // [111] phi (byte) divr16s::neg#3 = (byte) 1 [phi:divr16s::@1->divr16s::@2#1] -- vbuz1=vbuc1 lda #1 sta.z neg jmp __b2 @@ -3463,78 +3457,78 @@ divr16s: { // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division -// divr16u(word zp($1d) dividend, word zp($52) divisor, word zp($1b) rem) +// divr16u(word zp($1d) dividend, word zp($51) divisor, word zp($1b) rem) divr16u: { - .label __1 = $5c - .label __2 = $5d + .label __1 = $5b + .label __2 = $5c .label rem = $1b .label dividend = $1d .label quotient = $1f .label i = $21 .label return = $1f - .label divisor = $52 - .label return_1 = $54 - // [132] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + .label divisor = $51 + .label return_1 = $53 + // [131] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] __b1_from_divr16u: - // [132] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + // [131] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 lda #0 sta.z i - // [132] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 + // [131] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 lda #<0 sta.z quotient lda #>0 sta.z quotient+1 - // [132] phi (word) divr16u::dividend#2 = (word) 0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + // [131] phi (word) divr16u::dividend#2 = (word) 0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #<0 sta.z dividend lda #>0 sta.z dividend+1 - // [132] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy + // [131] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy jmp __b1 - // [132] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + // [131] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] __b1_from___b3: - // [132] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - // [132] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - // [132] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - // [132] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + // [131] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + // [131] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + // [131] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + // [131] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp __b1 // divr16u::@1 __b1: - // [133] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [132] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z rem rol.z rem+1 - // [134] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 + // [133] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 lda.z dividend+1 sta.z __1 - // [135] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 + // [134] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and.z __1 sta.z __2 - // [136] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + // [135] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 lda.z __2 cmp #0 beq __b2_from___b1 jmp __b4 // divr16u::@4 __b4: - // [137] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + // [136] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora.z rem sta.z rem - // [138] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + // [137] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] __b2_from___b1: __b2_from___b4: - // [138] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + // [137] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp __b2 // divr16u::@2 __b2: - // [139] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [138] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z dividend rol.z dividend+1 - // [140] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [139] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z quotient rol.z quotient+1 - // [141] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + // [140] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda.z rem+1 cmp.z divisor+1 bcc __b3_from___b2 @@ -3546,12 +3540,12 @@ divr16u: { jmp __b5 // divr16u::@5 __b5: - // [142] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + // [141] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc.z quotient bne !+ inc.z quotient+1 !: - // [143] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 + // [142] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 lda.z rem sec sbc.z divisor @@ -3559,24 +3553,24 @@ divr16u: { lda.z rem+1 sbc.z divisor+1 sta.z rem+1 - // [144] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + // [143] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] __b3_from___b2: __b3_from___b5: - // [144] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - // [144] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + // [143] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + // [143] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp __b3 // divr16u::@3 __b3: - // [145] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + // [144] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [146] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + // [145] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp.z i bne __b1_from___b3 jmp __breturn // divr16u::@return __breturn: - // [147] return + // [146] return rts } // File Data @@ -3626,62 +3620,61 @@ Removing always clobbered register reg byte a as potential for zp[1]:12 [ screen Removing always clobbered register reg byte y as potential for zp[1]:12 [ screen_fill::y#4 screen_fill::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:15 [ screen_fill::x#2 screen_fill::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:15 [ screen_fill::x#2 screen_fill::x#1 ] -Statement [68] (byte~) point_init::$11 ← (byte) point_init::point_idx#0 << (byte) 1 [ point_init::point_idx#0 point_init::$11 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$11 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [68] (byte~) point_init::$13 ← (byte) point_init::point_idx#0 << (byte) 1 [ point_init::point_idx#0 point_init::$13 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:34 [ point_init::point_idx#0 ] -Statement [69] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$11) - (signed word)*((const word*) x_start + (byte~) point_init::$11) [ point_init::point_idx#0 point_init::x_diff#1 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [70] (signed word~) point_init::$17 ← (signed word)*((const byte*) y_end + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::x_diff#1 point_init::$17 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::$17 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [71] (signed word~) point_init::$18 ← (signed word)*((const byte*) y_start + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::x_diff#1 point_init::$17 point_init::$18 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::$17 point_init::$18 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [72] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$17 - (signed word~) point_init::$18 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [73] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [74] (word) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [76] if((signed word) point_init::y_diff#0<(signed byte) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [77] (word) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [79] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [80] (byte~) point_init::$13 ← (byte) point_init::point_idx#0 << (byte) 1 [ point_init::point_idx#0 point_init::$13 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [81] (word~) point_init::$5 ← *((const word*) x_start + (byte~) point_init::$13) << (byte) 4 [ point_init::point_idx#0 point_init::$13 point_init::$5 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::$5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:54 [ point_init::$13 ] -Statement [82] *((const word*) x_cur + (byte~) point_init::$13) ← (word~) point_init::$5 [ point_init::point_idx#0 point_init::$13 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [83] (word~) point_init::$19 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::$13 point_init::$19 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::$19 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [84] (word~) point_init::$6 ← (word~) point_init::$19 << (byte) 4 [ point_init::point_idx#0 point_init::$13 point_init::$6 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::$6 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [85] *((const word*) y_cur + (byte~) point_init::$13) ← (word~) point_init::$6 [ point_init::point_idx#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [86] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const nomodify byte) DELAY [ ] ( point_init:16 [ main::i#2 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [88] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [89] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [90] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::y_diff#0 divr16s::divisor#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::y_diff#0 divr16s::divisor#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [91] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [93] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 divr16s::return#3 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 divr16s::return#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [94] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::x_stepf#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_stepf#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [96] (byte~) point_init::$10 ← (byte~) point_init::$9 >> (byte) 4 [ point_init::point_idx#0 point_init::$10 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$10 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [98] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [99] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [100] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [101] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [102] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [103] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] { } ) always clobbers reg byte a -Statement [104] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$0 ] { } ) always clobbers reg byte a -Statement [105] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] { } ) always clobbers reg byte a -Statement [107] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) [ ] ( bitmap_plot:20 [ main::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [69] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$13) - (signed word)*((const word*) x_start + (byte~) point_init::$13) [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:45 [ point_init::$13 ] +Statement [70] (signed word~) point_init::$17 ← (signed word)*((const byte*) y_end + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::$17 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::$17 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [71] (signed word~) point_init::$18 ← (signed word)*((const byte*) y_start + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::$17 point_init::$18 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::$17 point_init::$18 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [72] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$17 - (signed word~) point_init::$18 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [73] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [74] (word) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [76] if((signed word) point_init::y_diff#0<(signed byte) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [77] (word) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [79] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [80] (word~) point_init::$5 ← *((const word*) x_start + (byte~) point_init::$13) << (byte) 4 [ point_init::point_idx#0 point_init::$13 point_init::$5 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::$5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [81] *((const word*) x_cur + (byte~) point_init::$13) ← (word~) point_init::$5 [ point_init::point_idx#0 point_init::$13 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [82] (word~) point_init::$19 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::$13 point_init::$19 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::$19 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [83] (word~) point_init::$6 ← (word~) point_init::$19 << (byte) 4 [ point_init::point_idx#0 point_init::$13 point_init::$6 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::$6 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [84] *((const word*) y_cur + (byte~) point_init::$13) ← (word~) point_init::$6 [ point_init::point_idx#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [85] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const nomodify byte) DELAY [ ] ( point_init:16 [ main::i#2 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [87] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [88] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [89] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::$13 point_init::y_diff#0 divr16s::divisor#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::y_diff#0 divr16s::divisor#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [90] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::rem#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::rem#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [92] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 point_init::$13 divr16s::return#3 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::return#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [93] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::$13 point_init::x_stepf#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_stepf#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [95] (byte~) point_init::$10 ← (byte~) point_init::$9 >> (byte) 4 [ point_init::point_idx#0 point_init::$13 point_init::$10 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::$10 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [97] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [98] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [99] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [100] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [101] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [102] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] { } ) always clobbers reg byte a +Statement [103] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$0 ] { } ) always clobbers reg byte a +Statement [104] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] { } ) always clobbers reg byte a +Statement [106] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) [ ] ( bitmap_plot:20 [ main::i#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [110] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [111] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#8 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [113] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [109] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::rem#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [110] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::remu#8 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [112] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:24 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] -Statement [114] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#5 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#5 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [116] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::divisor#0 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::neg#4 divr16u::divisor#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [117] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::divisor#0 divr16u::rem#3 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::rem#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [119] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::return#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [120] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16s::resultu#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [122] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::return#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [125] (signed word) divr16s::return#6 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#6 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::return#6 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [126] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#1 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [127] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::remu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::neg#2 divr16s::divisoru#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [128] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [129] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#1 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [130] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 [ divr16s::divisor#0 divr16s::remu#7 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#7 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [137] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( point_init:16::divr16s:92::divr16u:118 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [113] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#5 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#5 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [115] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::divisor#0 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::remu#3 divr16s::neg#4 divr16u::divisor#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [116] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::divisor#0 divr16u::rem#3 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::neg#4 divr16u::divisor#0 divr16u::rem#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [118] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::neg#4 divr16u::return#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [119] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::neg#4 divr16s::resultu#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [121] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::return#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [124] (signed word) divr16s::return#6 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#6 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::return#6 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [125] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#1 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [126] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::remu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::remu#3 divr16s::neg#2 divr16s::divisoru#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [127] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [128] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#1 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::remu#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [129] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 [ divr16s::divisor#0 divr16s::remu#7 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::remu#7 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [136] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( point_init:16::divr16s:91::divr16u:117 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:33 [ divr16u::i#2 divr16u::i#1 ] -Statement [141] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( point_init:16::divr16s:92::divr16u:118 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [143] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( point_init:16::divr16s:92::divr16u:118 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [140] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( point_init:16::divr16s:91::divr16u:117 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [142] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( point_init:16::divr16s:91::divr16u:117 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a Statement [1] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK [ ] ( [ ] { } ) always clobbers reg byte a Statement [2] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO [ ] ( [ ] { } ) always clobbers reg byte a Statement [3] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 [ ] ( [ ] { } ) always clobbers reg byte a @@ -3697,57 +3690,56 @@ Statement [47] (word) bitmap_clear::bitmap#0 ← *((const to_nomodify byte*) bit Statement [48] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( bitmap_clear:11 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a Statement [51] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( bitmap_clear:11 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] { } ) always clobbers reg byte a reg byte y Statement [61] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( screen_fill:13 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] { } ) always clobbers reg byte a reg byte y -Statement [68] (byte~) point_init::$11 ← (byte) point_init::point_idx#0 << (byte) 1 [ point_init::point_idx#0 point_init::$11 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$11 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [69] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$11) - (signed word)*((const word*) x_start + (byte~) point_init::$11) [ point_init::point_idx#0 point_init::x_diff#1 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [70] (signed word~) point_init::$17 ← (signed word)*((const byte*) y_end + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::x_diff#1 point_init::$17 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::$17 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [71] (signed word~) point_init::$18 ← (signed word)*((const byte*) y_start + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::x_diff#1 point_init::$17 point_init::$18 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::$17 point_init::$18 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [72] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$17 - (signed word~) point_init::$18 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [73] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [74] (word) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [76] if((signed word) point_init::y_diff#0<(signed byte) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [77] (word) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [79] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [80] (byte~) point_init::$13 ← (byte) point_init::point_idx#0 << (byte) 1 [ point_init::point_idx#0 point_init::$13 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [81] (word~) point_init::$5 ← *((const word*) x_start + (byte~) point_init::$13) << (byte) 4 [ point_init::point_idx#0 point_init::$13 point_init::$5 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::$5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [82] *((const word*) x_cur + (byte~) point_init::$13) ← (word~) point_init::$5 [ point_init::point_idx#0 point_init::$13 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [83] (word~) point_init::$19 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::$13 point_init::$19 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::$19 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [84] (word~) point_init::$6 ← (word~) point_init::$19 << (byte) 4 [ point_init::point_idx#0 point_init::$13 point_init::$6 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::$6 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [85] *((const word*) y_cur + (byte~) point_init::$13) ← (word~) point_init::$6 [ point_init::point_idx#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [86] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const nomodify byte) DELAY [ ] ( point_init:16 [ main::i#2 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [88] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [89] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [90] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::y_diff#0 divr16s::divisor#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::y_diff#0 divr16s::divisor#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [91] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [93] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 divr16s::return#3 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 divr16s::return#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [94] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::x_stepf#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_stepf#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [96] (byte~) point_init::$10 ← (byte~) point_init::$9 >> (byte) 4 [ point_init::point_idx#0 point_init::$10 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$10 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [98] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [99] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [100] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [101] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [102] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a -Statement [103] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] { } ) always clobbers reg byte a -Statement [104] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$0 ] { } ) always clobbers reg byte a -Statement [105] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] { } ) always clobbers reg byte a -Statement [107] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) [ ] ( bitmap_plot:20 [ main::i#2 ] { } ) always clobbers reg byte a reg byte y -Statement [110] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::rem#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [111] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#8 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [113] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [114] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#5 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#5 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [116] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::divisor#0 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::neg#4 divr16u::divisor#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [117] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::divisor#0 divr16u::rem#3 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::rem#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [119] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::return#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [120] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16s::resultu#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [122] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::return#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [125] (signed word) divr16s::return#6 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#6 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::return#6 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [126] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#1 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [127] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::remu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::neg#2 divr16s::divisoru#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [128] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [129] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#1 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [130] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 [ divr16s::divisor#0 divr16s::remu#7 ] ( point_init:16::divr16s:92 [ main::i#2 point_init::point_idx#0 divr16s::divisor#0 divr16s::remu#7 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a -Statement [137] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( point_init:16::divr16s:92::divr16u:118 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [141] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( point_init:16::divr16s:92::divr16u:118 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [143] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( point_init:16::divr16s:92::divr16u:118 [ main::i#2 point_init::point_idx#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [68] (byte~) point_init::$13 ← (byte) point_init::point_idx#0 << (byte) 1 [ point_init::point_idx#0 point_init::$13 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [69] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$13) - (signed word)*((const word*) x_start + (byte~) point_init::$13) [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [70] (signed word~) point_init::$17 ← (signed word)*((const byte*) y_end + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::$17 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::$17 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [71] (signed word~) point_init::$18 ← (signed word)*((const byte*) y_start + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::$17 point_init::$18 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::$17 point_init::$18 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [72] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$17 - (signed word~) point_init::$18 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [73] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [74] (word) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [76] if((signed word) point_init::y_diff#0<(signed byte) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [77] (word) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [79] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [80] (word~) point_init::$5 ← *((const word*) x_start + (byte~) point_init::$13) << (byte) 4 [ point_init::point_idx#0 point_init::$13 point_init::$5 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::$5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [81] *((const word*) x_cur + (byte~) point_init::$13) ← (word~) point_init::$5 [ point_init::point_idx#0 point_init::$13 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [82] (word~) point_init::$19 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::$13 point_init::$19 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::$19 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [83] (word~) point_init::$6 ← (word~) point_init::$19 << (byte) 4 [ point_init::point_idx#0 point_init::$13 point_init::$6 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::$6 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [84] *((const word*) y_cur + (byte~) point_init::$13) ← (word~) point_init::$6 [ point_init::point_idx#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [85] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const nomodify byte) DELAY [ ] ( point_init:16 [ main::i#2 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [87] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [88] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [89] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::$13 point_init::y_diff#0 divr16s::divisor#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::y_diff#0 divr16s::divisor#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [90] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::rem#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::rem#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [92] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 point_init::$13 divr16s::return#3 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::return#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [93] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::$13 point_init::x_stepf#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_stepf#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [95] (byte~) point_init::$10 ← (byte~) point_init::$9 >> (byte) 4 [ point_init::point_idx#0 point_init::$13 point_init::$10 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::$10 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [97] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [98] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [99] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [100] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#0 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [101] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 [ point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( point_init:16 [ main::i#2 point_init::point_idx#0 point_init::$13 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] { { point_init::point_idx#0 = main::i#2 } } ) always clobbers reg byte a +Statement [102] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] { } ) always clobbers reg byte a +Statement [103] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$0 ] { } ) always clobbers reg byte a +Statement [104] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( bitmap_plot:20 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] { } ) always clobbers reg byte a +Statement [106] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) [ ] ( bitmap_plot:20 [ main::i#2 ] { } ) always clobbers reg byte a reg byte y +Statement [109] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::rem#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [110] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::remu#8 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [112] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::neg#3 divr16s::remu#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [113] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#5 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#5 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [115] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::divisor#0 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::remu#3 divr16s::neg#4 divr16u::divisor#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [116] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::divisor#0 divr16u::rem#3 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::neg#4 divr16u::divisor#0 divr16u::rem#3 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [118] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::neg#4 divr16u::return#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [119] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::neg#4 divr16s::resultu#0 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [121] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::return#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [124] (signed word) divr16s::return#6 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#6 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::return#6 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [125] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#1 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::neg#3 divr16s::remu#3 divr16s::divisoru#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [126] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::remu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::remu#3 divr16s::neg#2 divr16s::divisoru#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [127] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [128] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#1 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::remu#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [129] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 [ divr16s::divisor#0 divr16s::remu#7 ] ( point_init:16::divr16s:91 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::divisor#0 divr16s::remu#7 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } } ) always clobbers reg byte a +Statement [136] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( point_init:16::divr16s:91::divr16u:117 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [140] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( point_init:16::divr16s:91::divr16u:117 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [142] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( point_init:16::divr16s:91::divr16u:117 [ main::i#2 point_init::point_idx#0 point_init::$13 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { point_init::point_idx#0 = main::i#2 } { divr16s::divisor#0 = point_init::x_diff#1 } { divr16s::rem#0 = point_init::y_diff#0 } { divr16s::return#2 = divr16s::return#3 } { divr16u::divisor#0 = divr16s::divisoru#3 } { divr16u::rem#3 = divr16s::remu#3 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:4 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y , @@ -3778,115 +3770,117 @@ Potential registers zp[1]:40 [ bitmap_init::$4 ] : zp[1]:40 , reg byte a , reg b Potential registers zp[1]:41 [ bitmap_init::$5 ] : zp[1]:41 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:42 [ bitmap_init::$6 ] : zp[1]:42 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:43 [ bitmap_clear::bitmap#0 ] : zp[2]:43 , -Potential registers zp[1]:45 [ point_init::$11 ] : zp[1]:45 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:45 [ point_init::$13 ] : zp[1]:45 , reg byte x , reg byte y , Potential registers zp[2]:46 [ point_init::x_diff#1 ] : zp[2]:46 , Potential registers zp[2]:48 [ point_init::$17 ] : zp[2]:48 , Potential registers zp[2]:50 [ point_init::$18 ] : zp[2]:50 , Potential registers zp[2]:52 [ point_init::y_diff#0 ] : zp[2]:52 , -Potential registers zp[1]:54 [ point_init::$13 ] : zp[1]:54 , reg byte x , reg byte y , -Potential registers zp[2]:55 [ point_init::$5 ] : zp[2]:55 , -Potential registers zp[2]:57 [ point_init::$19 ] : zp[2]:57 , -Potential registers zp[2]:59 [ point_init::$6 ] : zp[2]:59 , -Potential registers zp[2]:61 [ divr16s::divisor#0 ] : zp[2]:61 , -Potential registers zp[2]:63 [ divr16s::rem#0 ] : zp[2]:63 , -Potential registers zp[2]:65 [ divr16s::return#3 ] : zp[2]:65 , -Potential registers zp[2]:67 [ point_init::x_stepf#0 ] : zp[2]:67 , -Potential registers zp[1]:69 [ point_init::$9 ] : zp[1]:69 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:70 [ point_init::$10 ] : zp[1]:70 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:71 [ point_init::abs16s2_return#0 ] : zp[2]:71 , -Potential registers zp[2]:73 [ point_init::abs16s1_return#0 ] : zp[2]:73 , -Potential registers zp[2]:75 [ bitmap_plot::plotter#0 ] : zp[2]:75 , -Potential registers zp[2]:77 [ bitmap_plot::$0 ] : zp[2]:77 , -Potential registers zp[2]:79 [ bitmap_plot::plotter#1 ] : zp[2]:79 , -Potential registers zp[1]:81 [ bitmap_plot::$1 ] : zp[1]:81 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:82 [ divr16u::divisor#0 ] : zp[2]:82 , -Potential registers zp[2]:84 [ divr16u::return#2 ] : zp[2]:84 , -Potential registers zp[2]:86 [ divr16s::resultu#0 ] : zp[2]:86 , -Potential registers zp[2]:88 [ divr16s::divisoru#1 ] : zp[2]:88 , -Potential registers zp[2]:90 [ divr16s::remu#1 ] : zp[2]:90 , -Potential registers zp[1]:92 [ divr16u::$1 ] : zp[1]:92 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:93 [ divr16u::$2 ] : zp[1]:93 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:54 [ point_init::$5 ] : zp[2]:54 , +Potential registers zp[2]:56 [ point_init::$19 ] : zp[2]:56 , +Potential registers zp[2]:58 [ point_init::$6 ] : zp[2]:58 , +Potential registers zp[2]:60 [ divr16s::divisor#0 ] : zp[2]:60 , +Potential registers zp[2]:62 [ divr16s::rem#0 ] : zp[2]:62 , +Potential registers zp[2]:64 [ divr16s::return#3 ] : zp[2]:64 , +Potential registers zp[2]:66 [ point_init::x_stepf#0 ] : zp[2]:66 , +Potential registers zp[1]:68 [ point_init::$9 ] : zp[1]:68 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:69 [ point_init::$10 ] : zp[1]:69 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:70 [ point_init::abs16s2_return#0 ] : zp[2]:70 , +Potential registers zp[2]:72 [ point_init::abs16s1_return#0 ] : zp[2]:72 , +Potential registers zp[2]:74 [ bitmap_plot::plotter#0 ] : zp[2]:74 , +Potential registers zp[2]:76 [ bitmap_plot::$0 ] : zp[2]:76 , +Potential registers zp[2]:78 [ bitmap_plot::plotter#1 ] : zp[2]:78 , +Potential registers zp[1]:80 [ bitmap_plot::$1 ] : zp[1]:80 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:81 [ divr16u::divisor#0 ] : zp[2]:81 , +Potential registers zp[2]:83 [ divr16u::return#2 ] : zp[2]:83 , +Potential registers zp[2]:85 [ divr16s::resultu#0 ] : zp[2]:85 , +Potential registers zp[2]:87 [ divr16s::divisoru#1 ] : zp[2]:87 , +Potential registers zp[2]:89 [ divr16s::remu#1 ] : zp[2]:89 , +Potential registers zp[1]:91 [ divr16u::$1 ] : zp[1]:91 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:92 [ divr16u::$2 ] : zp[1]:92 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [divr16u] 8,765,510.75: zp[2]:27 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 3,350,203.55: zp[2]:31 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 2,000,002: zp[1]:92 [ divr16u::$1 ] 2,000,002: zp[1]:93 [ divr16u::$2 ] 1,653,847.81: zp[1]:33 [ divr16u::i#2 divr16u::i#1 ] 678,572.11: zp[2]:29 [ divr16u::dividend#2 divr16u::dividend#0 ] 111,166.83: zp[2]:82 [ divr16u::divisor#0 ] 2,002: zp[2]:84 [ divr16u::return#2 ] -Uplift Scope [divr16s] 7,007: zp[2]:22 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] 4,705: zp[2]:25 [ divr16s::return#2 divr16s::return#6 divr16s::return#1 ] 4,379.38: zp[2]:20 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] 2,002: zp[1]:24 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] 1,001: zp[2]:90 [ divr16s::remu#1 ] 701: zp[2]:63 [ divr16s::rem#0 ] 500.5: zp[2]:86 [ divr16s::resultu#0 ] 500.5: zp[2]:88 [ divr16s::divisoru#1 ] 233.67: zp[2]:61 [ divr16s::divisor#0 ] 202: zp[2]:65 [ divr16s::return#3 ] +Uplift Scope [divr16u] 8,765,510.75: zp[2]:27 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 3,350,203.55: zp[2]:31 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 2,000,002: zp[1]:91 [ divr16u::$1 ] 2,000,002: zp[1]:92 [ divr16u::$2 ] 1,653,847.81: zp[1]:33 [ divr16u::i#2 divr16u::i#1 ] 678,572.11: zp[2]:29 [ divr16u::dividend#2 divr16u::dividend#0 ] 111,166.83: zp[2]:81 [ divr16u::divisor#0 ] 2,002: zp[2]:83 [ divr16u::return#2 ] +Uplift Scope [divr16s] 7,007: zp[2]:22 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] 4,705: zp[2]:25 [ divr16s::return#2 divr16s::return#6 divr16s::return#1 ] 4,379.38: zp[2]:20 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] 2,002: zp[1]:24 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] 1,001: zp[2]:89 [ divr16s::remu#1 ] 701: zp[2]:62 [ divr16s::rem#0 ] 500.5: zp[2]:85 [ divr16s::resultu#0 ] 500.5: zp[2]:87 [ divr16s::divisoru#1 ] 233.67: zp[2]:60 [ divr16s::divisor#0 ] 202: zp[2]:64 [ divr16s::return#3 ] Uplift Scope [bitmap_clear] 2,207.6: zp[2]:9 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 2,168.83: zp[1]:11 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 185.17: zp[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 11: zp[2]:43 [ bitmap_clear::bitmap#0 ] Uplift Scope [screen_fill] 2,174.6: zp[2]:13 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] 2,168.83: zp[1]:15 [ screen_fill::x#2 screen_fill::x#1 ] 185.17: zp[1]:12 [ screen_fill::y#4 screen_fill::y#1 ] -Uplift Scope [point_init] 707: zp[2]:18 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] 454.5: zp[2]:16 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] 202: zp[2]:50 [ point_init::$18 ] 202: zp[2]:55 [ point_init::$5 ] 202: zp[2]:57 [ point_init::$19 ] 202: zp[2]:59 [ point_init::$6 ] 202: zp[2]:67 [ point_init::x_stepf#0 ] 202: zp[1]:69 [ point_init::$9 ] 101: zp[1]:45 [ point_init::$11 ] 101: zp[2]:48 [ point_init::$17 ] 101: zp[1]:70 [ point_init::$10 ] 101: zp[2]:71 [ point_init::abs16s2_return#0 ] 101: zp[2]:73 [ point_init::abs16s1_return#0 ] 80.8: zp[1]:54 [ point_init::$13 ] 28.06: zp[2]:46 [ point_init::x_diff#1 ] 25.25: zp[2]:52 [ point_init::y_diff#0 ] 18.15: zp[1]:34 [ point_init::point_idx#0 ] +Uplift Scope [point_init] 707: zp[2]:18 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] 454.5: zp[2]:16 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] 202: zp[2]:50 [ point_init::$18 ] 202: zp[2]:54 [ point_init::$5 ] 202: zp[2]:56 [ point_init::$19 ] 202: zp[2]:58 [ point_init::$6 ] 202: zp[2]:66 [ point_init::x_stepf#0 ] 202: zp[1]:68 [ point_init::$9 ] 101: zp[2]:48 [ point_init::$17 ] 101: zp[1]:69 [ point_init::$10 ] 101: zp[2]:70 [ point_init::abs16s2_return#0 ] 101: zp[2]:72 [ point_init::abs16s1_return#0 ] 28.06: zp[2]:46 [ point_init::x_diff#1 ] 25.25: zp[2]:52 [ point_init::y_diff#0 ] 15.64: zp[1]:34 [ point_init::point_idx#0 ] 13.03: zp[1]:45 [ point_init::$13 ] Uplift Scope [bitmap_init] 366.12: zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 319.83: zp[1]:3 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 202: zp[1]:4 [ bitmap_init::x#2 bitmap_init::x#1 ] 202: zp[1]:5 [ bitmap_init::y#2 bitmap_init::y#1 ] 202: zp[1]:40 [ bitmap_init::$4 ] 202: zp[1]:41 [ bitmap_init::$5 ] 202: zp[1]:42 [ bitmap_init::$6 ] 50.5: zp[1]:39 [ bitmap_init::$7 ] -Uplift Scope [bitmap_plot] 213: zp[1]:38 [ bitmap_plot::y#0 ] 202: zp[2]:77 [ bitmap_plot::$0 ] 202: zp[1]:81 [ bitmap_plot::$1 ] 151.5: zp[2]:79 [ bitmap_plot::plotter#1 ] 50.5: zp[2]:75 [ bitmap_plot::plotter#0 ] 42.6: zp[2]:36 [ bitmap_plot::x#0 ] +Uplift Scope [bitmap_plot] 213: zp[1]:38 [ bitmap_plot::y#0 ] 202: zp[2]:76 [ bitmap_plot::$0 ] 202: zp[1]:80 [ bitmap_plot::$1 ] 151.5: zp[2]:78 [ bitmap_plot::plotter#1 ] 50.5: zp[2]:74 [ bitmap_plot::plotter#0 ] 42.6: zp[2]:36 [ bitmap_plot::x#0 ] Uplift Scope [main] 24.36: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:35 [ main::$10 ] Uplift Scope [MOS6526_CIA] Uplift Scope [MOS6569_VICII] Uplift Scope [MOS6581_SID] Uplift Scope [] -Uplifting [divr16u] best 30419 combination zp[2]:27 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:31 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[2]:29 [ divr16u::dividend#2 divr16u::dividend#0 ] zp[2]:82 [ divr16u::divisor#0 ] zp[2]:84 [ divr16u::return#2 ] -Uplifting [divr16s] best 30408 combination zp[2]:22 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp[2]:25 [ divr16s::return#2 divr16s::return#6 divr16s::return#1 ] zp[2]:20 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp[2]:90 [ divr16s::remu#1 ] zp[2]:63 [ divr16s::rem#0 ] zp[2]:86 [ divr16s::resultu#0 ] zp[2]:88 [ divr16s::divisoru#1 ] zp[2]:61 [ divr16s::divisor#0 ] zp[2]:65 [ divr16s::return#3 ] -Uplifting [bitmap_clear] best 29508 combination zp[2]:9 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:43 [ bitmap_clear::bitmap#0 ] -Uplifting [screen_fill] best 28608 combination zp[2]:13 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] reg byte x [ screen_fill::x#2 screen_fill::x#1 ] zp[1]:12 [ screen_fill::y#4 screen_fill::y#1 ] -Uplifting [point_init] best 28582 combination zp[2]:18 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] zp[2]:16 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] zp[2]:50 [ point_init::$18 ] zp[2]:55 [ point_init::$5 ] zp[2]:57 [ point_init::$19 ] zp[2]:59 [ point_init::$6 ] zp[2]:67 [ point_init::x_stepf#0 ] reg byte a [ point_init::$9 ] reg byte a [ point_init::$11 ] zp[2]:48 [ point_init::$17 ] reg byte a [ point_init::$10 ] zp[2]:71 [ point_init::abs16s2_return#0 ] zp[2]:73 [ point_init::abs16s1_return#0 ] reg byte x [ point_init::$13 ] zp[2]:46 [ point_init::x_diff#1 ] zp[2]:52 [ point_init::y_diff#0 ] zp[1]:34 [ point_init::point_idx#0 ] -Limited combination testing to 100 combinations of 576 possible. -Uplifting [bitmap_init] best 28072 combination zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:41 [ bitmap_init::$5 ] zp[1]:42 [ bitmap_init::$6 ] zp[1]:39 [ bitmap_init::$7 ] +Uplifting [divr16u] best 30411 combination zp[2]:27 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:31 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[2]:29 [ divr16u::dividend#2 divr16u::dividend#0 ] zp[2]:81 [ divr16u::divisor#0 ] zp[2]:83 [ divr16u::return#2 ] +Uplifting [divr16s] best 30400 combination zp[2]:22 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp[2]:25 [ divr16s::return#2 divr16s::return#6 divr16s::return#1 ] zp[2]:20 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp[2]:89 [ divr16s::remu#1 ] zp[2]:62 [ divr16s::rem#0 ] zp[2]:85 [ divr16s::resultu#0 ] zp[2]:87 [ divr16s::divisoru#1 ] zp[2]:60 [ divr16s::divisor#0 ] zp[2]:64 [ divr16s::return#3 ] +Uplifting [bitmap_clear] best 29500 combination zp[2]:9 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:43 [ bitmap_clear::bitmap#0 ] +Uplifting [screen_fill] best 28600 combination zp[2]:13 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] reg byte x [ screen_fill::x#2 screen_fill::x#1 ] zp[1]:12 [ screen_fill::y#4 screen_fill::y#1 ] +Uplifting [point_init] best 28588 combination zp[2]:18 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] zp[2]:16 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] zp[2]:50 [ point_init::$18 ] zp[2]:54 [ point_init::$5 ] zp[2]:56 [ point_init::$19 ] zp[2]:58 [ point_init::$6 ] zp[2]:66 [ point_init::x_stepf#0 ] reg byte a [ point_init::$9 ] zp[2]:48 [ point_init::$17 ] reg byte a [ point_init::$10 ] zp[2]:70 [ point_init::abs16s2_return#0 ] zp[2]:72 [ point_init::abs16s1_return#0 ] zp[2]:46 [ point_init::x_diff#1 ] zp[2]:52 [ point_init::y_diff#0 ] zp[1]:34 [ point_init::point_idx#0 ] zp[1]:45 [ point_init::$13 ] +Limited combination testing to 100 combinations of 144 possible. +Uplifting [bitmap_init] best 28078 combination zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:41 [ bitmap_init::$5 ] zp[1]:42 [ bitmap_init::$6 ] zp[1]:39 [ bitmap_init::$7 ] Limited combination testing to 100 combinations of 15360 possible. -Uplifting [bitmap_plot] best 28033 combination reg byte x [ bitmap_plot::y#0 ] zp[2]:77 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:79 [ bitmap_plot::plotter#1 ] zp[2]:75 [ bitmap_plot::plotter#0 ] zp[2]:36 [ bitmap_plot::x#0 ] -Uplifting [main] best 27993 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$10 ] -Uplifting [MOS6526_CIA] best 27993 combination -Uplifting [MOS6569_VICII] best 27993 combination -Uplifting [MOS6581_SID] best 27993 combination -Uplifting [] best 27993 combination +Uplifting [bitmap_plot] best 28039 combination reg byte x [ bitmap_plot::y#0 ] zp[2]:76 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:78 [ bitmap_plot::plotter#1 ] zp[2]:74 [ bitmap_plot::plotter#0 ] zp[2]:36 [ bitmap_plot::x#0 ] +Uplifting [main] best 27999 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$10 ] +Uplifting [MOS6526_CIA] best 27999 combination +Uplifting [MOS6569_VICII] best 27999 combination +Uplifting [MOS6581_SID] best 27999 combination +Uplifting [] best 27999 combination Attempting to uplift remaining variables inzp[1]:41 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 27933 combination reg byte a [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 27939 combination reg byte a [ bitmap_init::$5 ] Attempting to uplift remaining variables inzp[1]:42 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 27873 combination reg byte a [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 27879 combination reg byte a [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Uplifting [bitmap_clear] best 27873 combination zp[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Uplifting [bitmap_clear] best 27879 combination zp[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Attempting to uplift remaining variables inzp[1]:12 [ screen_fill::y#4 screen_fill::y#1 ] -Uplifting [screen_fill] best 27873 combination zp[1]:12 [ screen_fill::y#4 screen_fill::y#1 ] +Uplifting [screen_fill] best 27879 combination zp[1]:12 [ screen_fill::y#4 screen_fill::y#1 ] Attempting to uplift remaining variables inzp[1]:39 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 27873 combination zp[1]:39 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 27879 combination zp[1]:39 [ bitmap_init::$7 ] Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ] -Uplifting [main] best 27873 combination zp[1]:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 27879 combination zp[1]:2 [ main::i#2 main::i#1 ] Attempting to uplift remaining variables inzp[1]:34 [ point_init::point_idx#0 ] -Uplifting [point_init] best 27873 combination zp[1]:34 [ point_init::point_idx#0 ] -Coalescing zero page register [ zp[2]:25 [ divr16s::return#2 divr16s::return#6 divr16s::return#1 ] ] with [ zp[2]:86 [ divr16s::resultu#0 ] ] - score: 2 +Uplifting [point_init] best 27879 combination zp[1]:34 [ point_init::point_idx#0 ] +Attempting to uplift remaining variables inzp[1]:45 [ point_init::$13 ] +Uplifting [point_init] best 27879 combination zp[1]:45 [ point_init::$13 ] +Coalescing zero page register [ zp[2]:25 [ divr16s::return#2 divr16s::return#6 divr16s::return#1 ] ] with [ zp[2]:85 [ divr16s::resultu#0 ] ] - score: 2 Coalescing zero page register [ zp[1]:2 [ main::i#2 main::i#1 ] ] with [ zp[1]:34 [ point_init::point_idx#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:9 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp[2]:43 [ bitmap_clear::bitmap#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:16 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] ] with [ zp[2]:73 [ point_init::abs16s1_return#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:18 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] ] with [ zp[2]:71 [ point_init::abs16s2_return#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:16 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] ] with [ zp[2]:72 [ point_init::abs16s1_return#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:18 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] ] with [ zp[2]:70 [ point_init::abs16s2_return#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:20 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] ] with [ zp[2]:27 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] - score: 1 -Coalescing zero page register [ zp[2]:20 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp[2]:63 [ divr16s::rem#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:20 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 ] ] with [ zp[2]:90 [ divr16s::remu#1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:22 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] ] with [ zp[2]:61 [ divr16s::divisor#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:22 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 ] ] with [ zp[2]:82 [ divr16u::divisor#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:22 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 ] ] with [ zp[2]:88 [ divr16s::divisoru#1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:25 [ divr16s::return#2 divr16s::return#6 divr16s::return#1 divr16s::resultu#0 ] ] with [ zp[2]:65 [ divr16s::return#3 ] ] - score: 1 -Coalescing zero page register [ zp[2]:31 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp[2]:84 [ divr16u::return#2 ] ] - score: 1 +Coalescing zero page register [ zp[2]:20 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp[2]:62 [ divr16s::rem#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:20 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 ] ] with [ zp[2]:89 [ divr16s::remu#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:22 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] ] with [ zp[2]:60 [ divr16s::divisor#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:22 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 ] ] with [ zp[2]:81 [ divr16u::divisor#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:22 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 ] ] with [ zp[2]:87 [ divr16s::divisoru#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:25 [ divr16s::return#2 divr16s::return#6 divr16s::return#1 divr16s::resultu#0 ] ] with [ zp[2]:64 [ divr16s::return#3 ] ] - score: 1 +Coalescing zero page register [ zp[2]:31 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp[2]:83 [ divr16u::return#2 ] ] - score: 1 Coalescing zero page register [ zp[2]:48 [ point_init::$17 ] ] with [ zp[2]:52 [ point_init::y_diff#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:57 [ point_init::$19 ] ] with [ zp[2]:59 [ point_init::$6 ] ] - score: 1 -Coalescing zero page register [ zp[2]:75 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:79 [ bitmap_plot::plotter#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:56 [ point_init::$19 ] ] with [ zp[2]:58 [ point_init::$6 ] ] - score: 1 +Coalescing zero page register [ zp[2]:74 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:78 [ bitmap_plot::plotter#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:20 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::remu#1 ] ] with [ zp[2]:48 [ point_init::$17 point_init::y_diff#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:22 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::divisoru#1 ] ] with [ zp[2]:46 [ point_init::x_diff#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:25 [ divr16s::return#2 divr16s::return#6 divr16s::return#1 divr16s::resultu#0 divr16s::return#3 ] ] with [ zp[2]:31 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] - score: 1 -Coalescing zero page register [ zp[2]:25 [ divr16s::return#2 divr16s::return#6 divr16s::return#1 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp[2]:67 [ point_init::x_stepf#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:25 [ divr16s::return#2 divr16s::return#6 divr16s::return#1 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp[2]:66 [ point_init::x_stepf#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:9 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 ] ] with [ zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] Coalescing zero page register [ zp[1]:12 [ screen_fill::y#4 screen_fill::y#1 ] ] with [ zp[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 ] ] Coalescing zero page register [ zp[2]:16 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_return#0 ] ] with [ zp[2]:13 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] ] Coalescing zero page register [ zp[2]:36 [ bitmap_plot::x#0 ] ] with [ zp[2]:18 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_return#0 ] ] +Coalescing zero page register [ zp[1]:45 [ point_init::$13 ] ] with [ zp[1]:39 [ bitmap_init::$7 ] ] Coalescing zero page register [ zp[2]:50 [ point_init::$18 ] ] with [ zp[2]:29 [ divr16u::dividend#2 divr16u::dividend#0 ] ] -Coalescing zero page register [ zp[2]:75 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:20 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::remu#1 point_init::$17 point_init::y_diff#0 ] ] -Coalescing zero page register [ zp[2]:77 [ bitmap_plot::$0 ] ] with [ zp[2]:22 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::divisoru#1 point_init::x_diff#1 ] ] +Coalescing zero page register [ zp[2]:74 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:20 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::remu#1 point_init::$17 point_init::y_diff#0 ] ] +Coalescing zero page register [ zp[2]:76 [ bitmap_plot::$0 ] ] with [ zp[2]:22 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::divisoru#1 point_init::x_diff#1 ] ] Coalescing zero page register [ zp[2]:16 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_return#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] ] with [ zp[2]:9 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] -Coalescing zero page register [ zp[1]:39 [ bitmap_init::$7 ] ] with [ zp[1]:12 [ screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] ] +Coalescing zero page register [ zp[1]:45 [ point_init::$13 bitmap_init::$7 ] ] with [ zp[1]:12 [ screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] ] Allocated (was zp[2]:16) zp[2]:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_return#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] Allocated (was zp[2]:25) zp[2]:5 [ divr16s::return#2 divr16s::return#6 divr16s::return#1 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 ] Allocated (was zp[2]:36) zp[2]:7 [ bitmap_plot::x#0 point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_return#0 ] -Allocated (was zp[1]:39) zp[1]:9 [ bitmap_init::$7 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] +Allocated (was zp[1]:45) zp[1]:9 [ point_init::$13 bitmap_init::$7 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] Allocated (was zp[2]:50) zp[2]:10 [ point_init::$18 divr16u::dividend#2 divr16u::dividend#0 ] -Allocated (was zp[2]:55) zp[2]:12 [ point_init::$5 ] -Allocated (was zp[2]:57) zp[2]:14 [ point_init::$19 point_init::$6 ] -Allocated (was zp[2]:75) zp[2]:16 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::remu#1 point_init::$17 point_init::y_diff#0 ] -Allocated (was zp[2]:77) zp[2]:18 [ bitmap_plot::$0 divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::divisoru#1 point_init::x_diff#1 ] +Allocated (was zp[2]:54) zp[2]:12 [ point_init::$5 ] +Allocated (was zp[2]:56) zp[2]:14 [ point_init::$19 point_init::$6 ] +Allocated (was zp[2]:74) zp[2]:16 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::remu#1 point_init::$17 point_init::y_diff#0 ] +Allocated (was zp[2]:76) zp[2]:18 [ bitmap_plot::$0 divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::divisoru#1 point_init::x_diff#1 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -4293,6 +4287,7 @@ screen_fill: { point_init: { .label __5 = $c .label __6 = $e + .label __13 = 9 .label __17 = $10 .label __18 = $a .label __19 = $e @@ -4302,11 +4297,12 @@ point_init: { .label abs16s2_return = 7 .label x_stepf = 5 .label x_diff = $12 - // [68] (byte~) point_init::$11 ← (byte) point_init::point_idx#0 << (byte) 1 -- vbuaa=vbuz1_rol_1 + // [68] (byte~) point_init::$13 ← (byte) point_init::point_idx#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z point_idx asl - // [69] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$11) - (signed word)*((const word*) x_start + (byte~) point_init::$11) -- vwsz1=pwsc1_derefidx_vbuaa_minus_pwsc2_derefidx_vbuaa - tay + sta.z __13 + // [69] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$13) - (signed word)*((const word*) x_start + (byte~) point_init::$13) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 + ldy.z __13 sec lda x_end,y sbc x_start,y @@ -4391,15 +4387,12 @@ point_init: { jmp __b2 // point_init::@2 __b2: - // [80] (byte~) point_init::$13 ← (byte) point_init::point_idx#0 << (byte) 1 -- vbuxx=vbuz1_rol_1 - lda.z point_idx - asl - tax - // [81] (word~) point_init::$5 ← *((const word*) x_start + (byte~) point_init::$13) << (byte) 4 -- vwuz1=pwuc1_derefidx_vbuxx_rol_4 - lda x_start,x + // [80] (word~) point_init::$5 ← *((const word*) x_start + (byte~) point_init::$13) << (byte) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 + ldy.z __13 + lda x_start,y asl sta.z __5 - lda x_start+1,x + lda x_start+1,y rol sta.z __5+1 asl.z __5 @@ -4408,18 +4401,19 @@ point_init: { rol.z __5+1 asl.z __5 rol.z __5+1 - // [82] *((const word*) x_cur + (byte~) point_init::$13) ← (word~) point_init::$5 -- pwuc1_derefidx_vbuxx=vwuz1 + // [81] *((const word*) x_cur + (byte~) point_init::$13) ← (word~) point_init::$5 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy.z __13 lda.z __5 - sta x_cur,x + sta x_cur,y lda.z __5+1 - sta x_cur+1,x - // [83] (word~) point_init::$19 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 + sta x_cur+1,y + // [82] (word~) point_init::$19 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy.z point_idx lda y_start,y sta.z __19 lda #0 sta.z __19+1 - // [84] (word~) point_init::$6 ← (word~) point_init::$19 << (byte) 4 -- vwuz1=vwuz1_rol_4 + // [83] (word~) point_init::$6 ← (word~) point_init::$19 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl.z __6 rol.z __6+1 asl.z __6 @@ -4428,30 +4422,31 @@ point_init: { rol.z __6+1 asl.z __6 rol.z __6+1 - // [85] *((const word*) y_cur + (byte~) point_init::$13) ← (word~) point_init::$6 -- pwuc1_derefidx_vbuxx=vwuz1 + // [84] *((const word*) y_cur + (byte~) point_init::$13) ← (word~) point_init::$6 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy.z __13 lda.z __6 - sta y_cur,x + sta y_cur,y lda.z __6+1 - sta y_cur+1,x - // [86] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const nomodify byte) DELAY -- pbuc1_derefidx_vbuz1=vbuc2 + sta y_cur+1,y + // [85] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const nomodify byte) DELAY -- pbuc1_derefidx_vbuz1=vbuc2 lda #DELAY ldy.z point_idx sta delay,y jmp __breturn // point_init::@return __breturn: - // [87] return + // [86] return rts // point_init::@1 __b1: - // [88] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 -- vwsz1_lt_0_then_la1 + // [87] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 -- vwsz1_lt_0_then_la1 // X is driver - abs(y/x) is < 1 lda.z x_diff+1 bmi __b4 jmp __b3 // point_init::@3 __b3: - // [89] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 -- pbsc1_derefidx_vbuz1=vbsc2 + // [88] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 -- pbsc1_derefidx_vbuz1=vbsc2 // x add = 1.0 lda #$10 ldy.z point_idx @@ -4459,31 +4454,31 @@ point_init: { jmp __b5 // point_init::@5 __b5: - // [90] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 - // [91] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 - // [92] call divr16s - // [109] phi from point_init::@5 to divr16s [phi:point_init::@5->divr16s] + // [89] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 + // [90] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 + // [91] call divr16s + // [108] phi from point_init::@5 to divr16s [phi:point_init::@5->divr16s] divr16s_from___b5: jsr divr16s - // [93] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + // [92] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 jmp __b7 // point_init::@7 __b7: - // [94] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 - // [95] (byte~) point_init::$9 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 + // [93] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 + // [94] (byte~) point_init::$9 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 lda.z x_stepf+1 - // [96] (byte~) point_init::$10 ← (byte~) point_init::$9 >> (byte) 4 -- vbuaa=vbuaa_ror_4 + // [95] (byte~) point_init::$10 ← (byte~) point_init::$9 >> (byte) 4 -- vbuaa=vbuaa_ror_4 lsr lsr lsr lsr - // [97] *((const signed byte*) y_add + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$10 -- pbsc1_derefidx_vbuz1=vbsaa + // [96] *((const signed byte*) y_add + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$10 -- pbsc1_derefidx_vbuz1=vbsaa ldy.z point_idx sta y_add,y jmp __b2 // point_init::@4 __b4: - // [98] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 -- pbsc1_derefidx_vbuz1=vbsc2 + // [97] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 -- pbsc1_derefidx_vbuz1=vbsc2 // x add = -1.0 lda #-$10 ldy.z point_idx @@ -4491,7 +4486,7 @@ point_init: { jmp __b5 // point_init::abs16s2_@1 abs16s2___b1: - // [99] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 + // [98] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 sec lda #0 sbc.z y_diff @@ -4499,11 +4494,11 @@ point_init: { lda #0 sbc.z y_diff+1 sta.z abs16s2_return+1 - // [100] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 + // [99] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 jmp abs16s2___breturn_from_abs16s2___b1 // point_init::abs16s1_@1 abs16s1___b1: - // [101] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 + // [100] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 sec lda #0 sbc.z x_diff @@ -4511,7 +4506,7 @@ point_init: { lda #0 sbc.z x_diff+1 sta.z abs16s1_return+1 - // [102] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 + // [101] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 jmp abs16s1___breturn_from_abs16s1___b1 } // bitmap_plot @@ -4521,19 +4516,19 @@ bitmap_plot: { .label __0 = $12 .label x = 7 .label plotter = $10 - // [103] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + // [102] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_yhi,x sta.z plotter+1 lda bitmap_plot_ylo,x sta.z plotter - // [104] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + // [103] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda.z x and #<$fff8 sta.z __0 lda.z x+1 and #>$fff8 sta.z __0+1 - // [105] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2 + // [104] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2 lda.z plotter clc adc.z __0 @@ -4541,9 +4536,9 @@ bitmap_plot: { lda.z plotter+1 adc.z __0+1 sta.z plotter+1 - // [106] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#0 -- vbuxx=_lo_vwuz1 + // [105] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#0 -- vbuxx=_lo_vwuz1 ldx.z x - // [107] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx + // [106] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx lda bitmap_plot_bit,x ldy #0 ora (plotter),y @@ -4552,7 +4547,7 @@ bitmap_plot: { jmp __breturn // bitmap_plot::@return __breturn: - // [108] return + // [107] return rts } // divr16s @@ -4572,54 +4567,54 @@ divr16s: { jmp __b10 // divr16s::@10 __b10: - // [110] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + // [109] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda.z rem+1 bmi __b1 jmp __b6 // divr16s::@6 __b6: - // [111] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 - // [112] phi from divr16s::@6 to divr16s::@2 [phi:divr16s::@6->divr16s::@2] + // [110] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 + // [111] phi from divr16s::@6 to divr16s::@2 [phi:divr16s::@6->divr16s::@2] __b2_from___b6: - // [112] phi (word) divr16s::remu#3 = (word) divr16s::remu#8 [phi:divr16s::@6->divr16s::@2#0] -- register_copy - // [112] phi (byte) divr16s::neg#3 = (byte) 0 [phi:divr16s::@6->divr16s::@2#1] -- vbuyy=vbuc1 + // [111] phi (word) divr16s::remu#3 = (word) divr16s::remu#8 [phi:divr16s::@6->divr16s::@2#0] -- register_copy + // [111] phi (byte) divr16s::neg#3 = (byte) 0 [phi:divr16s::@6->divr16s::@2#1] -- vbuyy=vbuc1 ldy #0 jmp __b2 // divr16s::@2 __b2: - // [113] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + // [112] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 lda.z divisor+1 bmi __b3 jmp __b7 // divr16s::@7 __b7: - // [114] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 - // [115] phi from divr16s::@3 divr16s::@7 to divr16s::@4 [phi:divr16s::@3/divr16s::@7->divr16s::@4] + // [113] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + // [114] phi from divr16s::@3 divr16s::@7 to divr16s::@4 [phi:divr16s::@3/divr16s::@7->divr16s::@4] __b4_from___b3: __b4_from___b7: - // [115] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@7->divr16s::@4#0] -- register_copy - // [115] phi (word) divr16s::divisoru#3 = (word) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@7->divr16s::@4#1] -- register_copy + // [114] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@7->divr16s::@4#0] -- register_copy + // [114] phi (word) divr16s::divisoru#3 = (word) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@7->divr16s::@4#1] -- register_copy jmp __b4 // divr16s::@4 __b4: - // [116] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 - // [117] (word) divr16u::rem#3 ← (word) divr16s::remu#3 - // [118] call divr16u - // [131] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + // [115] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 + // [116] (word) divr16u::rem#3 ← (word) divr16s::remu#3 + // [117] call divr16u + // [130] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] divr16u_from___b4: jsr divr16u - // [119] (word) divr16u::return#2 ← (word) divr16u::return#0 + // [118] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp __b9 // divr16s::@9 __b9: - // [120] (word) divr16s::resultu#0 ← (word) divr16u::return#2 - // [121] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 -- vbuyy_eq_0_then_la1 + // [119] (word) divr16s::resultu#0 ← (word) divr16u::return#2 + // [120] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 -- vbuyy_eq_0_then_la1 cpy #0 beq __b5 jmp __b8 // divr16s::@8 __b8: - // [122] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 + // [121] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 sec lda #0 sbc.z return @@ -4627,22 +4622,22 @@ divr16s: { lda #0 sbc.z return+1 sta.z return+1 - // [123] phi from divr16s::@5 divr16s::@8 to divr16s::@return [phi:divr16s::@5/divr16s::@8->divr16s::@return] + // [122] phi from divr16s::@5 divr16s::@8 to divr16s::@return [phi:divr16s::@5/divr16s::@8->divr16s::@return] __breturn_from___b5: __breturn_from___b8: - // [123] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#6 [phi:divr16s::@5/divr16s::@8->divr16s::@return#0] -- register_copy + // [122] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#6 [phi:divr16s::@5/divr16s::@8->divr16s::@return#0] -- register_copy jmp __breturn // divr16s::@return __breturn: - // [124] return + // [123] return rts // divr16s::@5 __b5: - // [125] (signed word) divr16s::return#6 ← (signed word)(word) divr16s::resultu#0 + // [124] (signed word) divr16s::return#6 ← (signed word)(word) divr16s::resultu#0 jmp __breturn_from___b5 // divr16s::@3 __b3: - // [126] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 + // [125] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 sec lda #0 sbc.z divisoru @@ -4650,15 +4645,15 @@ divr16s: { lda #0 sbc.z divisoru+1 sta.z divisoru+1 - // [127] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 -- vbuyy=vbuyy_bxor_vbuc1 + // [126] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 -- vbuyy=vbuyy_bxor_vbuc1 tya eor #1 tay - // [128] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 + // [127] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 jmp __b4_from___b3 // divr16s::@1 __b1: - // [129] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 + // [128] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 sec lda #0 sbc.z remu @@ -4666,11 +4661,11 @@ divr16s: { lda #0 sbc.z remu+1 sta.z remu+1 - // [130] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 - // [112] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + // [129] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 + // [111] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] __b2_from___b1: - // [112] phi (word) divr16s::remu#3 = (word) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy - // [112] phi (byte) divr16s::neg#3 = (byte) 1 [phi:divr16s::@1->divr16s::@2#1] -- vbuyy=vbuc1 + // [111] phi (word) divr16s::remu#3 = (word) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy + // [111] phi (byte) divr16s::neg#3 = (byte) 1 [phi:divr16s::@1->divr16s::@2#1] -- vbuyy=vbuc1 ldy #1 jmp __b2 } @@ -4686,62 +4681,62 @@ divr16u: { .label quotient = 5 .label return = 5 .label divisor = $12 - // [132] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + // [131] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] __b1_from_divr16u: - // [132] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + // [131] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - // [132] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 + // [131] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 lda #<0 sta.z quotient lda #>0 sta.z quotient+1 - // [132] phi (word) divr16u::dividend#2 = (word) 0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + // [131] phi (word) divr16u::dividend#2 = (word) 0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #<0 sta.z dividend lda #>0 sta.z dividend+1 - // [132] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy + // [131] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy jmp __b1 - // [132] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + // [131] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] __b1_from___b3: - // [132] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - // [132] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - // [132] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - // [132] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + // [131] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + // [131] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + // [131] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + // [131] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp __b1 // divr16u::@1 __b1: - // [133] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [132] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z rem rol.z rem+1 - // [134] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + // [133] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda.z dividend+1 - // [135] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + // [134] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - // [136] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + // [135] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq __b2_from___b1 jmp __b4 // divr16u::@4 __b4: - // [137] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + // [136] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora.z rem sta.z rem - // [138] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + // [137] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] __b2_from___b1: __b2_from___b4: - // [138] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + // [137] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp __b2 // divr16u::@2 __b2: - // [139] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [138] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z dividend rol.z dividend+1 - // [140] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [139] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z quotient rol.z quotient+1 - // [141] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + // [140] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda.z rem+1 cmp.z divisor+1 bcc __b3_from___b2 @@ -4753,12 +4748,12 @@ divr16u: { jmp __b5 // divr16u::@5 __b5: - // [142] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + // [141] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc.z quotient bne !+ inc.z quotient+1 !: - // [143] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 + // [142] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 lda.z rem sec sbc.z divisor @@ -4766,23 +4761,23 @@ divr16u: { lda.z rem+1 sbc.z divisor+1 sta.z rem+1 - // [144] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + // [143] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] __b3_from___b2: __b3_from___b5: - // [144] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - // [144] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + // [143] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + // [143] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp __b3 // divr16u::@3 __b3: - // [145] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + // [144] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - // [146] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + // [145] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne __b1_from___b3 jmp __breturn // divr16u::@return __breturn: - // [147] return + // [146] return rts } // File Data @@ -4863,8 +4858,9 @@ Removing instruction jmp __b3 Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination Replacing instruction ldy #0 with TAY +Replacing instruction ldy.z __13 with TAY Removing instruction ldy.z point_idx -Removing instruction ldy.z point_idx +Removing instruction ldy.z __13 Removing instruction ldy #0 Replacing instruction lda #<0 with TXA Removing instruction lda #>0 @@ -4984,8 +4980,8 @@ Removing instruction __b5: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction rts Succesful ASM optimization Pass5UnreachableCodeElimination -Fixing long branch [223] bmi abs16s1___b1 to bpl -Fixing long branch [232] bmi abs16s2___b1 to bpl +Fixing long branch [225] bmi abs16s1___b1 to bpl +Fixing long branch [234] bmi abs16s2___b1 to bpl FINAL SYMBOL TABLE (const byte*) BITMAP = (byte*) 40960 @@ -5246,8 +5242,7 @@ FINAL SYMBOL TABLE (const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte) 3^>(word)(const byte*) SCREEN/(byte) $40 (void()) point_init((byte) point_init::point_idx) (byte~) point_init::$10 reg byte a 101.0 -(byte~) point_init::$11 reg byte a 101.0 -(byte~) point_init::$13 reg byte x 80.8 +(byte~) point_init::$13 zp[1]:9 13.03225806451613 (signed word~) point_init::$17 zp[2]:16 101.0 (signed word~) point_init::$18 zp[2]:10 202.0 (word~) point_init::$19 zp[2]:14 202.0 @@ -5283,7 +5278,7 @@ FINAL SYMBOL TABLE (word) point_init::abs16s2_return#6 abs16s2_return zp[2]:7 202.0 (signed word) point_init::abs16s2_w (byte) point_init::point_idx -(byte) point_init::point_idx#0 point_idx zp[1]:2 18.147058823529413 +(byte) point_init::point_idx#0 point_idx zp[1]:2 15.636363636363637 (signed word) point_init::x_diff (signed word) point_init::x_diff#1 x_diff zp[2]:18 28.055555555555554 (signed word) point_init::x_stepf @@ -5329,13 +5324,11 @@ reg byte x [ divr16u::i#2 divr16u::i#1 ] reg byte a [ main::$10 ] zp[2]:7 [ bitmap_plot::x#0 point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_return#0 ] reg byte x [ bitmap_plot::y#0 ] -zp[1]:9 [ bitmap_init::$7 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] reg byte a [ bitmap_init::$4 ] reg byte a [ bitmap_init::$5 ] reg byte a [ bitmap_init::$6 ] -reg byte a [ point_init::$11 ] +zp[1]:9 [ point_init::$13 bitmap_init::$7 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:10 [ point_init::$18 divr16u::dividend#2 divr16u::dividend#0 ] -reg byte x [ point_init::$13 ] zp[2]:12 [ point_init::$5 ] zp[2]:14 [ point_init::$19 point_init::$6 ] reg byte a [ point_init::$9 ] @@ -5348,7 +5341,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 21961 +Score: 21966 // File Comments // Animated lines drawn on a single color bitmap @@ -5717,6 +5710,7 @@ screen_fill: { point_init: { .label __5 = $c .label __6 = $e + .label __13 = 9 .label __17 = $10 .label __18 = $a .label __19 = $e @@ -5727,10 +5721,11 @@ point_init: { .label x_stepf = 5 .label x_diff = $12 // ((signed word)x_end[point_idx])-((signed word)x_start[point_idx]) - // [68] (byte~) point_init::$11 ← (byte) point_init::point_idx#0 << (byte) 1 -- vbuaa=vbuz1_rol_1 + // [68] (byte~) point_init::$13 ← (byte) point_init::point_idx#0 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z point_idx asl - // [69] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$11) - (signed word)*((const word*) x_start + (byte~) point_init::$11) -- vwsz1=pwsc1_derefidx_vbuaa_minus_pwsc2_derefidx_vbuaa + sta.z __13 + // [69] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$13) - (signed word)*((const word*) x_start + (byte~) point_init::$13) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 tay sec lda x_end,y @@ -5808,15 +5803,12 @@ point_init: { // point_init::@2 __b2: // x_start[point_idx]*$10 - // [80] (byte~) point_init::$13 ← (byte) point_init::point_idx#0 << (byte) 1 -- vbuxx=vbuz1_rol_1 - lda.z point_idx - asl - tax - // [81] (word~) point_init::$5 ← *((const word*) x_start + (byte~) point_init::$13) << (byte) 4 -- vwuz1=pwuc1_derefidx_vbuxx_rol_4 - lda x_start,x + // [80] (word~) point_init::$5 ← *((const word*) x_start + (byte~) point_init::$13) << (byte) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 + ldy.z __13 + lda x_start,y asl sta.z __5 - lda x_start+1,x + lda x_start+1,y rol sta.z __5+1 asl.z __5 @@ -5826,19 +5818,19 @@ point_init: { asl.z __5 rol.z __5+1 // x_cur[point_idx] = x_start[point_idx]*$10 - // [82] *((const word*) x_cur + (byte~) point_init::$13) ← (word~) point_init::$5 -- pwuc1_derefidx_vbuxx=vwuz1 + // [81] *((const word*) x_cur + (byte~) point_init::$13) ← (word~) point_init::$5 -- pwuc1_derefidx_vbuz1=vwuz2 lda.z __5 - sta x_cur,x + sta x_cur,y lda.z __5+1 - sta x_cur+1,x + sta x_cur+1,y // ((word)y_start[point_idx])*$10 - // [83] (word~) point_init::$19 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 + // [82] (word~) point_init::$19 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy.z point_idx lda y_start,y sta.z __19 lda #0 sta.z __19+1 - // [84] (word~) point_init::$6 ← (word~) point_init::$19 << (byte) 4 -- vwuz1=vwuz1_rol_4 + // [83] (word~) point_init::$6 ← (word~) point_init::$19 << (byte) 4 -- vwuz1=vwuz1_rol_4 asl.z __6 rol.z __6+1 asl.z __6 @@ -5848,29 +5840,31 @@ point_init: { asl.z __6 rol.z __6+1 // y_cur[point_idx] = ((word)y_start[point_idx])*$10 - // [85] *((const word*) y_cur + (byte~) point_init::$13) ← (word~) point_init::$6 -- pwuc1_derefidx_vbuxx=vwuz1 + // [84] *((const word*) y_cur + (byte~) point_init::$13) ← (word~) point_init::$6 -- pwuc1_derefidx_vbuz1=vwuz2 + ldy.z __13 lda.z __6 - sta y_cur,x + sta y_cur,y lda.z __6+1 - sta y_cur+1,x + sta y_cur+1,y // delay[point_idx] = DELAY - // [86] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const nomodify byte) DELAY -- pbuc1_derefidx_vbuz1=vbuc2 + // [85] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const nomodify byte) DELAY -- pbuc1_derefidx_vbuz1=vbuc2 lda #DELAY + ldy.z point_idx sta delay,y // point_init::@return // } - // [87] return + // [86] return rts // point_init::@1 __b1: // if(x_diff<0) - // [88] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 -- vwsz1_lt_0_then_la1 + // [87] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4 -- vwsz1_lt_0_then_la1 // X is driver - abs(y/x) is < 1 lda.z x_diff+1 bmi __b4 // point_init::@3 // x_add[point_idx] = $10 - // [89] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 -- pbsc1_derefidx_vbuz1=vbsc2 + // [88] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10 -- pbsc1_derefidx_vbuz1=vbsc2 // x add = 1.0 lda #$10 ldy.z point_idx @@ -5878,34 +5872,34 @@ point_init: { // point_init::@5 __b5: // divr16s(0, x_diff, y_diff) - // [90] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 - // [91] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 - // [92] call divr16s - // [109] phi from point_init::@5 to divr16s [phi:point_init::@5->divr16s] + // [89] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 + // [90] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 + // [91] call divr16s + // [108] phi from point_init::@5 to divr16s [phi:point_init::@5->divr16s] jsr divr16s // divr16s(0, x_diff, y_diff) - // [93] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + // [92] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 // point_init::@7 // x_stepf = divr16s(0, x_diff, y_diff) - // [94] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 + // [93] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 // >x_stepf - // [95] (byte~) point_init::$9 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 + // [94] (byte~) point_init::$9 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 lda.z x_stepf+1 // (>x_stepf)/$10 - // [96] (byte~) point_init::$10 ← (byte~) point_init::$9 >> (byte) 4 -- vbuaa=vbuaa_ror_4 + // [95] (byte~) point_init::$10 ← (byte~) point_init::$9 >> (byte) 4 -- vbuaa=vbuaa_ror_4 lsr lsr lsr lsr // y_add[point_idx] = (signed byte)((>x_stepf)/$10) - // [97] *((const signed byte*) y_add + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$10 -- pbsc1_derefidx_vbuz1=vbsaa + // [96] *((const signed byte*) y_add + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$10 -- pbsc1_derefidx_vbuz1=vbsaa ldy.z point_idx sta y_add,y jmp __b2 // point_init::@4 __b4: // x_add[point_idx] = -$10 - // [98] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 -- pbsc1_derefidx_vbuz1=vbsc2 + // [97] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10 -- pbsc1_derefidx_vbuz1=vbsc2 // x add = -1.0 lda #-$10 ldy.z point_idx @@ -5914,7 +5908,7 @@ point_init: { // point_init::abs16s2_@1 abs16s2___b1: // -w - // [99] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 + // [98] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 sec lda #0 sbc.z y_diff @@ -5922,12 +5916,12 @@ point_init: { lda #0 sbc.z y_diff+1 sta.z abs16s2_return+1 - // [100] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 + // [99] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0 jmp __b6 // point_init::abs16s1_@1 abs16s1___b1: // -w - // [101] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 + // [100] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 sec lda #0 sbc.z x_diff @@ -5935,7 +5929,7 @@ point_init: { lda #0 sbc.z x_diff+1 sta.z abs16s1_return+1 - // [102] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 + // [101] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0 jmp abs16s2 } // bitmap_plot @@ -5946,13 +5940,13 @@ bitmap_plot: { .label x = 7 .label plotter = $10 // plotter = (byte*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] } - // [103] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + // [102] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_yhi,x sta.z plotter+1 lda bitmap_plot_ylo,x sta.z plotter // x & $fff8 - // [104] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + // [103] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda.z x and #<$fff8 sta.z __0 @@ -5960,7 +5954,7 @@ bitmap_plot: { and #>$fff8 sta.z __0+1 // plotter += ( x & $fff8 ) - // [105] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2 + // [104] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2 lda.z plotter clc adc.z __0 @@ -5969,17 +5963,17 @@ bitmap_plot: { adc.z __0+1 sta.z plotter+1 // divr16s::@2] - // [112] phi (word) divr16s::remu#3 = (word) divr16s::remu#8 [phi:divr16s::@6->divr16s::@2#0] -- register_copy - // [112] phi (byte) divr16s::neg#3 = (byte) 0 [phi:divr16s::@6->divr16s::@2#1] -- vbuyy=vbuc1 + // [110] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 + // [111] phi from divr16s::@6 to divr16s::@2 [phi:divr16s::@6->divr16s::@2] + // [111] phi (word) divr16s::remu#3 = (word) divr16s::remu#8 [phi:divr16s::@6->divr16s::@2#0] -- register_copy + // [111] phi (byte) divr16s::neg#3 = (byte) 0 [phi:divr16s::@6->divr16s::@2#1] -- vbuyy=vbuc1 ldy #0 // divr16s::@2 __b2: // if(divisor<0) - // [113] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + // [112] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 lda.z divisor+1 bmi __b3 // divr16s::@7 - // [114] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 - // [115] phi from divr16s::@3 divr16s::@7 to divr16s::@4 [phi:divr16s::@3/divr16s::@7->divr16s::@4] - // [115] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@7->divr16s::@4#0] -- register_copy - // [115] phi (word) divr16s::divisoru#3 = (word) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@7->divr16s::@4#1] -- register_copy + // [113] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + // [114] phi from divr16s::@3 divr16s::@7 to divr16s::@4 [phi:divr16s::@3/divr16s::@7->divr16s::@4] + // [114] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@7->divr16s::@4#0] -- register_copy + // [114] phi (word) divr16s::divisoru#3 = (word) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@7->divr16s::@4#1] -- register_copy // divr16s::@4 __b4: // divr16u(dividendu, divisoru, remu) - // [116] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 - // [117] (word) divr16u::rem#3 ← (word) divr16s::remu#3 - // [118] call divr16u - // [131] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + // [115] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 + // [116] (word) divr16u::rem#3 ← (word) divr16s::remu#3 + // [117] call divr16u + // [130] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] jsr divr16u // divr16u(dividendu, divisoru, remu) - // [119] (word) divr16u::return#2 ← (word) divr16u::return#0 + // [118] (word) divr16u::return#2 ← (word) divr16u::return#0 // divr16s::@9 // resultu = divr16u(dividendu, divisoru, remu) - // [120] (word) divr16s::resultu#0 ← (word) divr16u::return#2 + // [119] (word) divr16s::resultu#0 ← (word) divr16u::return#2 // if(neg==0) - // [121] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 -- vbuyy_eq_0_then_la1 + // [120] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 -- vbuyy_eq_0_then_la1 cpy #0 beq __breturn // divr16s::@8 // return -(signed int)resultu; - // [122] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 + // [121] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 sec lda #0 sbc.z return @@ -6045,19 +6039,19 @@ divr16s: { lda #0 sbc.z return+1 sta.z return+1 - // [123] phi from divr16s::@5 divr16s::@8 to divr16s::@return [phi:divr16s::@5/divr16s::@8->divr16s::@return] - // [123] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#6 [phi:divr16s::@5/divr16s::@8->divr16s::@return#0] -- register_copy + // [122] phi from divr16s::@5 divr16s::@8 to divr16s::@return [phi:divr16s::@5/divr16s::@8->divr16s::@return] + // [122] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#6 [phi:divr16s::@5/divr16s::@8->divr16s::@return#0] -- register_copy // divr16s::@return __breturn: // } - // [124] return + // [123] return rts // divr16s::@5 - // [125] (signed word) divr16s::return#6 ← (signed word)(word) divr16s::resultu#0 + // [124] (signed word) divr16s::return#6 ← (signed word)(word) divr16s::resultu#0 // divr16s::@3 __b3: // -divisor - // [126] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 + // [125] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 sec lda #0 sbc.z divisoru @@ -6066,16 +6060,16 @@ divr16s: { sbc.z divisoru+1 sta.z divisoru+1 // neg = neg ^ 1 - // [127] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 -- vbuyy=vbuyy_bxor_vbuc1 + // [126] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 -- vbuyy=vbuyy_bxor_vbuc1 tya eor #1 tay - // [128] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 + // [127] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 jmp __b4 // divr16s::@1 __b1: // -rem - // [129] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 + // [128] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 sec lda #0 sbc.z remu @@ -6083,10 +6077,10 @@ divr16s: { lda #0 sbc.z remu+1 sta.z remu+1 - // [130] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 - // [112] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] - // [112] phi (word) divr16s::remu#3 = (word) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy - // [112] phi (byte) divr16s::neg#3 = (byte) 1 [phi:divr16s::@1->divr16s::@2#1] -- vbuyy=vbuc1 + // [129] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1 + // [111] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + // [111] phi (word) divr16s::remu#3 = (word) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy + // [111] phi (byte) divr16s::neg#3 = (byte) 1 [phi:divr16s::@1->divr16s::@2#1] -- vbuyy=vbuc1 ldy #1 jmp __b2 } @@ -6102,58 +6096,58 @@ divr16u: { .label quotient = 5 .label return = 5 .label divisor = $12 - // [132] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - // [132] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + // [131] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + // [131] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - // [132] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 + // [131] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 txa sta.z quotient sta.z quotient+1 - // [132] phi (word) divr16u::dividend#2 = (word) 0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + // [131] phi (word) divr16u::dividend#2 = (word) 0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 sta.z dividend sta.z dividend+1 - // [132] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy - // [132] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - // [132] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - // [132] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - // [132] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - // [132] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + // [131] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy + // [131] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + // [131] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + // [131] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + // [131] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + // [131] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy // divr16u::@1 __b1: // rem = rem << 1 - // [133] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [132] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z rem rol.z rem+1 // >dividend - // [134] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + // [133] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda.z dividend+1 // >dividend & $80 - // [135] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + // [134] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 // if( (>dividend & $80) != 0 ) - // [136] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + // [135] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq __b2 // divr16u::@4 // rem = rem | 1 - // [137] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + // [136] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora.z rem sta.z rem - // [138] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - // [138] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + // [137] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + // [137] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy // divr16u::@2 __b2: // dividend = dividend << 1 - // [139] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [138] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z dividend rol.z dividend+1 // quotient = quotient << 1 - // [140] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [139] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z quotient rol.z quotient+1 // if(rem>=divisor) - // [141] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + // [140] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda.z rem+1 cmp.z divisor+1 bcc __b3 @@ -6164,13 +6158,13 @@ divr16u: { !: // divr16u::@5 // quotient++; - // [142] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + // [141] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc.z quotient bne !+ inc.z quotient+1 !: // rem = rem - divisor - // [143] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 + // [142] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 lda.z rem sec sbc.z divisor @@ -6178,20 +6172,20 @@ divr16u: { lda.z rem+1 sbc.z divisor+1 sta.z rem+1 - // [144] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - // [144] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - // [144] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + // [143] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + // [143] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + // [143] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy // divr16u::@3 __b3: // for( char i : 0..15) - // [145] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + // [144] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - // [146] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + // [145] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne __b1 // divr16u::@return // } - // [147] return + // [146] return rts } // File Data diff --git a/src/test/ref/line-anim.sym b/src/test/ref/line-anim.sym index e8dc33638..c3a23c231 100644 --- a/src/test/ref/line-anim.sym +++ b/src/test/ref/line-anim.sym @@ -256,8 +256,7 @@ (const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte) 3^>(word)(const byte*) SCREEN/(byte) $40 (void()) point_init((byte) point_init::point_idx) (byte~) point_init::$10 reg byte a 101.0 -(byte~) point_init::$11 reg byte a 101.0 -(byte~) point_init::$13 reg byte x 80.8 +(byte~) point_init::$13 zp[1]:9 13.03225806451613 (signed word~) point_init::$17 zp[2]:16 101.0 (signed word~) point_init::$18 zp[2]:10 202.0 (word~) point_init::$19 zp[2]:14 202.0 @@ -293,7 +292,7 @@ (word) point_init::abs16s2_return#6 abs16s2_return zp[2]:7 202.0 (signed word) point_init::abs16s2_w (byte) point_init::point_idx -(byte) point_init::point_idx#0 point_idx zp[1]:2 18.147058823529413 +(byte) point_init::point_idx#0 point_idx zp[1]:2 15.636363636363637 (signed word) point_init::x_diff (signed word) point_init::x_diff#1 x_diff zp[2]:18 28.055555555555554 (signed word) point_init::x_stepf @@ -339,13 +338,11 @@ reg byte x [ divr16u::i#2 divr16u::i#1 ] reg byte a [ main::$10 ] zp[2]:7 [ bitmap_plot::x#0 point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_return#0 ] reg byte x [ bitmap_plot::y#0 ] -zp[1]:9 [ bitmap_init::$7 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] reg byte a [ bitmap_init::$4 ] reg byte a [ bitmap_init::$5 ] reg byte a [ bitmap_init::$6 ] -reg byte a [ point_init::$11 ] +zp[1]:9 [ point_init::$13 bitmap_init::$7 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:10 [ point_init::$18 divr16u::dividend#2 divr16u::dividend#0 ] -reg byte x [ point_init::$13 ] zp[2]:12 [ point_init::$5 ] zp[2]:14 [ point_init::$19 point_init::$6 ] reg byte a [ point_init::$9 ] diff --git a/src/test/ref/linegen.asm b/src/test/ref/linegen.asm index 2ca60ce21..6985b6595 100644 --- a/src/test/ref/linegen.asm +++ b/src/test/ref/linegen.asm @@ -9,10 +9,11 @@ .const SIZEOF_WORD = 2 .label print_screen = $400 // Remainder after unsigned 16-bit division - .label rem16u = $17 + .label rem16u = $18 .label print_char_cursor = $f .label print_line_cursor = $b main: { + .label __28 = $11 .label i = 2 // lin16u_gen(557, 29793, lintab1, 20) lda # (dword) lin16u_gen::val#2 - [76] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 - [77] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 - [78] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD - [79] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 + [73] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 + [74] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 + [75] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 + [76] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD + [77] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 to:lin16u_gen::@1 (void()) print_cls() print_cls: scope:[print_cls] from main::@6 - [80] phi() - [81] call memset + [78] phi() + [79] call memset to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls - [82] return + [80] return to:@return (void()) print_str((byte*) print_str::str) print_str: scope:[print_str] from main::@11 main::@14 main::@16 main::@18 main::@23 main::@25 main::@3 main::@7 main::@9 - [83] (byte*) print_char_cursor#89 ← phi( main::@11/(byte*) print_char_cursor#10 main::@14/(byte*) print_char_cursor#10 main::@16/(byte*) print_char_cursor#10 main::@18/(byte*) print_char_cursor#10 main::@23/(byte*) print_char_cursor#10 main::@25/(byte*) print_char_cursor#10 main::@3/(byte*) print_char_cursor#100 main::@7/(const byte*) print_screen#0 main::@9/(byte*) print_char_cursor#10 ) - [83] (byte*) print_str::str#13 ← phi( main::@11/(const byte*) main::str1 main::@14/(const byte*) main::str1 main::@16/(const byte*) main::str1 main::@18/(const byte*) main::str1 main::@23/(const byte*) main::str1 main::@25/(const byte*) main::str1 main::@3/(const byte*) main::str main::@7/(const byte*) main::str main::@9/(const byte*) main::str1 ) + [81] (byte*) print_char_cursor#89 ← phi( main::@11/(byte*) print_char_cursor#10 main::@14/(byte*) print_char_cursor#10 main::@16/(byte*) print_char_cursor#10 main::@18/(byte*) print_char_cursor#10 main::@23/(byte*) print_char_cursor#10 main::@25/(byte*) print_char_cursor#10 main::@3/(byte*) print_char_cursor#100 main::@7/(const byte*) print_screen#0 main::@9/(byte*) print_char_cursor#10 ) + [81] (byte*) print_str::str#13 ← phi( main::@11/(const byte*) main::str1 main::@14/(const byte*) main::str1 main::@16/(const byte*) main::str1 main::@18/(const byte*) main::str1 main::@23/(const byte*) main::str1 main::@25/(const byte*) main::str1 main::@3/(const byte*) main::str main::@7/(const byte*) main::str main::@9/(const byte*) main::str1 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@3 - [84] (byte*) print_char_cursor#1 ← phi( print_str/(byte*) print_char_cursor#89 print_str::@3/(byte*) print_char_cursor#10 ) - [84] (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#13 print_str::@3/(byte*) print_str::str#0 ) - [85] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 + [82] (byte*) print_char_cursor#1 ← phi( print_str/(byte*) print_char_cursor#89 print_str::@3/(byte*) print_char_cursor#10 ) + [82] (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#13 print_str::@3/(byte*) print_str::str#0 ) + [83] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [86] return + [84] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [87] (byte) print_char::ch#0 ← *((byte*) print_str::str#10) - [88] call print_char + [85] (byte) print_char::ch#0 ← *((byte*) print_str::str#10) + [86] call print_char to:print_str::@3 print_str::@3: scope:[print_str] from print_str::@2 - [89] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + [87] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 to:print_str::@1 (void()) print_uint((word) print_uint::w) print_uint: scope:[print_uint] from main::@10 main::@12 main::@15 main::@17 main::@19 main::@22 main::@24 main::@26 main::@8 - [90] (word) print_uint::w#10 ← phi( main::@10/(word) $79cb main::@12/(byte) 0 main::@15/(word) print_uint::w#3 main::@17/(word) print_uint::w#4 main::@19/(word) print_uint::w#5 main::@22/(word) $7461 main::@24/(word) $f781 main::@26/(word) $6488 main::@8/(word) $22d ) - [91] (byte) print_uchar::b#0 ← > (word) print_uint::w#10 - [92] call print_uchar + [88] (word) print_uint::w#10 ← phi( main::@10/(word) $79cb main::@12/(byte) 0 main::@15/(word) print_uint::w#3 main::@17/(word) print_uint::w#4 main::@19/(word) print_uint::w#5 main::@22/(word) $7461 main::@24/(word) $f781 main::@26/(word) $6488 main::@8/(word) $22d ) + [89] (byte) print_uchar::b#0 ← > (word) print_uint::w#10 + [90] call print_uchar to:print_uint::@1 print_uint::@1: scope:[print_uint] from print_uint - [93] (byte) print_uchar::b#1 ← < (word) print_uint::w#10 - [94] call print_uchar + [91] (byte) print_uchar::b#1 ← < (word) print_uint::w#10 + [92] call print_uchar to:print_uint::@return print_uint::@return: scope:[print_uint] from print_uint::@1 - [95] return + [93] return to:@return (void()) print_ln() print_ln: scope:[print_ln] from main::@13 main::@20 main::@27 - [96] (byte*) print_line_cursor#23 ← phi( main::@13/(const byte*) print_screen#0 main::@20/(byte*) print_line_cursor#0 main::@27/(byte*) print_line_cursor#0 ) + [94] (byte*) print_line_cursor#23 ← phi( main::@13/(const byte*) print_screen#0 main::@20/(byte*) print_line_cursor#0 main::@27/(byte*) print_line_cursor#0 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - [97] (byte*) print_line_cursor#12 ← phi( print_ln/(byte*) print_line_cursor#23 print_ln::@1/(byte*) print_line_cursor#0 ) - [98] (byte*) print_line_cursor#0 ← (byte*) print_line_cursor#12 + (byte) $28 - [99] if((byte*) print_line_cursor#0<(byte*) print_char_cursor#10) goto print_ln::@1 + [95] (byte*) print_line_cursor#12 ← phi( print_ln/(byte*) print_line_cursor#23 print_ln::@1/(byte*) print_line_cursor#0 ) + [96] (byte*) print_line_cursor#0 ← (byte*) print_line_cursor#12 + (byte) $28 + [97] if((byte*) print_line_cursor#0<(byte*) print_char_cursor#10) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 - [100] return + [98] return to:@return (void()) print_uchar((byte) print_uchar::b) print_uchar: scope:[print_uchar] from main::@2 print_uint print_uint::@1 - [101] (byte*) print_char_cursor#84 ← phi( main::@2/(byte*) print_char_cursor#104 print_uint/(byte*) print_char_cursor#1 print_uint::@1/(byte*) print_char_cursor#10 ) - [101] (byte) print_uchar::b#3 ← phi( main::@2/(byte) print_uchar::b#2 print_uint/(byte) print_uchar::b#0 print_uint::@1/(byte) print_uchar::b#1 ) - [102] (byte~) print_uchar::$0 ← (byte) print_uchar::b#3 >> (byte) 4 - [103] (byte) print_char::ch#1 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$0) - [104] call print_char + [99] (byte*) print_char_cursor#84 ← phi( main::@2/(byte*) print_char_cursor#104 print_uint/(byte*) print_char_cursor#1 print_uint::@1/(byte*) print_char_cursor#10 ) + [99] (byte) print_uchar::b#3 ← phi( main::@2/(byte) print_uchar::b#2 print_uint/(byte) print_uchar::b#0 print_uint::@1/(byte) print_uchar::b#1 ) + [100] (byte~) print_uchar::$0 ← (byte) print_uchar::b#3 >> (byte) 4 + [101] (byte) print_char::ch#1 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$0) + [102] call print_char to:print_uchar::@1 print_uchar::@1: scope:[print_uchar] from print_uchar - [105] (byte~) print_uchar::$2 ← (byte) print_uchar::b#3 & (byte) $f - [106] (byte) print_char::ch#2 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$2) - [107] call print_char + [103] (byte~) print_uchar::$2 ← (byte) print_uchar::b#3 & (byte) $f + [104] (byte) print_char::ch#2 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$2) + [105] call print_char to:print_uchar::@return print_uchar::@return: scope:[print_uchar] from print_uchar::@1 - [108] return + [106] return to:@return (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) divr16u: scope:[divr16u] from lin16u_gen lin16u_gen::@3 - [109] (word) divr16u::dividend#5 ← phi( lin16u_gen/(word) divr16u::dividend#1 lin16u_gen::@3/(byte) 0 ) - [109] (word) divr16u::rem#10 ← phi( lin16u_gen/(byte) 0 lin16u_gen::@3/(word) divr16u::rem#4 ) + [107] (word) divr16u::dividend#5 ← phi( lin16u_gen/(word) divr16u::dividend#1 lin16u_gen::@3/(byte) 0 ) + [107] (word) divr16u::rem#10 ← phi( lin16u_gen/(byte) 0 lin16u_gen::@3/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [110] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) - [110] (word) divr16u::quotient#3 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::return#0 ) - [110] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [110] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [111] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 - [112] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [113] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 - [114] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 + [108] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) + [108] (word) divr16u::quotient#3 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::return#0 ) + [108] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [108] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [109] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 + [110] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [111] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 + [112] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [115] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 + [113] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [116] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [117] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 - [118] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 - [119] if((word) divr16u::rem#6<(byte) $14-(byte) 1) goto divr16u::@3 + [114] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [115] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 + [116] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 + [117] if((word) divr16u::rem#6<(byte) $14-(byte) 1) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [120] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [121] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (byte) $14-(byte) 1 + [118] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [119] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (byte) $14-(byte) 1 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [122] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [122] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [123] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [124] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 + [120] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [120] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [121] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [122] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [125] (word) rem16u#0 ← (word) divr16u::rem#11 + [123] (word) rem16u#0 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [126] return + [124] return to:@return (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) memset: scope:[memset] from print_cls - [127] phi() + [125] phi() to:memset::@1 memset::@1: scope:[memset] from memset memset::@2 - [128] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 ) - [129] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 + [126] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 ) + [127] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 to:memset::@return memset::@return: scope:[memset] from memset::@1 - [130] return + [128] return to:@return memset::@2: scope:[memset] from memset::@1 - [131] *((byte*) memset::dst#2) ← (const byte) memset::c#0 - [132] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + [129] *((byte*) memset::dst#2) ← (const byte) memset::c#0 + [130] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 to:memset::@1 (void()) print_char((byte) print_char::ch) print_char: scope:[print_char] from print_str::@2 print_uchar print_uchar::@1 - [133] (byte*) print_char_cursor#51 ← phi( print_str::@2/(byte*) print_char_cursor#1 print_uchar/(byte*) print_char_cursor#84 print_uchar::@1/(byte*) print_char_cursor#10 ) - [133] (byte) print_char::ch#3 ← phi( print_str::@2/(byte) print_char::ch#0 print_uchar/(byte) print_char::ch#1 print_uchar::@1/(byte) print_char::ch#2 ) - [134] *((byte*) print_char_cursor#51) ← (byte) print_char::ch#3 - [135] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#51 + [131] (byte*) print_char_cursor#51 ← phi( print_str::@2/(byte*) print_char_cursor#1 print_uchar/(byte*) print_char_cursor#84 print_uchar::@1/(byte*) print_char_cursor#10 ) + [131] (byte) print_char::ch#3 ← phi( print_str::@2/(byte) print_char::ch#0 print_uchar/(byte) print_char::ch#1 print_uchar::@1/(byte) print_char::ch#2 ) + [132] *((byte*) print_char_cursor#51) ← (byte) print_char::ch#3 + [133] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#51 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [136] return + [134] return to:@return diff --git a/src/test/ref/linegen.log b/src/test/ref/linegen.log index 113e796bd..d50dd6e45 100644 --- a/src/test/ref/linegen.log +++ b/src/test/ref/linegen.log @@ -1666,6 +1666,9 @@ Constant inlined print_uint::w#1 = (word) $79cb Successful SSA optimization Pass2ConstantInlining Identical Phi Values (word) lin16u_gen::length#3 (byte) $14 Successful SSA optimization Pass2IdenticalPhiElimination +Identified duplicate assignment right side [75] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 +Identified duplicate assignment right side [79] (byte~) main::$29 ← (byte) main::i#10 << (byte) 1 +Successful SSA optimization Pass2DuplicateRValueIdentification Constant right-side identified [94] (word) divr16u::divisor#0 ← (byte) $14 - (byte) 1 Constant right-side identified [99] (word) divr16u::divisor#1 ← (byte) $14 - (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation @@ -1677,6 +1680,8 @@ Inlining constant with var siblings (const word) divr16u::divisor#1 Constant inlined divr16u::divisor#1 = (byte) $14-(byte) 1 Constant inlined divr16u::divisor#0 = (byte) $14-(byte) 1 Successful SSA optimization Pass2ConstantInlining +Alias main::$28 = main::$27 main::$29 +Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) divr16u::divisor#6 (byte) $14-(byte) 1 Successful SSA optimization Pass2IdenticalPhiElimination Added new block during phi lifting divr16u::@7(between divr16u::@3 and divr16u::@1) @@ -1706,12 +1711,12 @@ Adding NOP phi() at start of memset Adding NOP phi() at start of memset::@2 Adding NOP phi() at start of memset::@1 CALL GRAPH -Calls in [main] to lin16u_gen:1 lin16u_gen:3 lin16u_gen:5 print_cls:7 print_str:9 print_uint:11 print_str:13 print_uint:15 print_str:17 print_uint:19 print_ln:21 print_str:26 print_uint:28 print_str:30 print_uint:32 print_str:34 print_uint:36 print_ln:38 print_uchar:44 print_str:46 print_uint:50 print_str:52 print_uint:56 print_str:58 print_uint:62 print_ln:64 -Calls in [lin16u_gen] to divr16u:71 divr16u:76 -Calls in [print_cls] to memset:95 -Calls in [print_str] to print_char:107 -Calls in [print_uint] to print_uchar:115 print_uchar:119 -Calls in [print_uchar] to print_char:135 print_char:140 +Calls in [main] to lin16u_gen:1 lin16u_gen:3 lin16u_gen:5 print_cls:7 print_str:9 print_uint:11 print_str:13 print_uint:15 print_str:17 print_uint:19 print_ln:21 print_str:26 print_uint:28 print_str:30 print_uint:32 print_str:34 print_uint:36 print_ln:38 print_uchar:44 print_str:46 print_uint:50 print_str:52 print_uint:55 print_str:57 print_uint:60 print_ln:62 +Calls in [lin16u_gen] to divr16u:69 divr16u:74 +Calls in [print_cls] to memset:93 +Calls in [print_str] to print_char:105 +Calls in [print_uint] to print_uchar:113 print_uchar:117 +Calls in [print_uchar] to print_char:133 print_char:138 Created 28 initial phi equivalence classes Coalesced [12] print_char_cursor#101 ← print_char_cursor#10 @@ -1725,47 +1730,47 @@ Not coalescing [43] print_char_cursor#104 ← print_line_cursor#0 Coalesced (already) [45] print_char_cursor#95 ← print_char_cursor#10 Coalesced [49] print_uint::w#11 ← print_uint::w#3 Coalesced (already) [51] print_char_cursor#96 ← print_char_cursor#10 -Coalesced [55] print_uint::w#12 ← print_uint::w#4 -Coalesced (already) [57] print_char_cursor#97 ← print_char_cursor#10 -Coalesced [61] print_uint::w#13 ← print_uint::w#5 -Coalesced (already) [63] print_line_cursor#51 ← print_line_cursor#0 -Coalesced [66] main::i#12 ← main::i#1 -Coalesced [70] divr16u::dividend#9 ← divr16u::dividend#1 -Coalesced [75] divr16u::rem#12 ← divr16u::rem#4 -Coalesced [81] lin16u_gen::val#5 ← lin16u_gen::val#0 -Coalesced [82] lin16u_gen::lintab#10 ← lin16u_gen::lintab#6 -Coalesced [91] lin16u_gen::i#4 ← lin16u_gen::i#1 -Coalesced [92] lin16u_gen::val#4 ← lin16u_gen::val#1 -Coalesced [93] lin16u_gen::lintab#9 ← lin16u_gen::lintab#3 -Coalesced [99] print_str::str#14 ← print_str::str#13 -Coalesced [100] print_char_cursor#102 ← print_char_cursor#89 -Coalesced [105] print_char::ch#4 ← print_char::ch#0 -Coalesced [106] print_char_cursor#107 ← print_char_cursor#1 -Coalesced [109] print_str::str#15 ← print_str::str#0 -Coalesced (already) [110] print_char_cursor#103 ← print_char_cursor#10 -Coalesced [113] print_uchar::b#6 ← print_uchar::b#0 -Coalesced [114] print_char_cursor#105 ← print_char_cursor#1 -Coalesced [117] print_uchar::b#7 ← print_uchar::b#1 -Coalesced (already) [118] print_char_cursor#106 ← print_char_cursor#10 -Coalesced [123] print_line_cursor#53 ← print_line_cursor#23 -Coalesced (already) [129] print_line_cursor#54 ← print_line_cursor#0 -Coalesced [133] print_char::ch#5 ← print_char::ch#1 -Coalesced (already) [134] print_char_cursor#108 ← print_char_cursor#84 -Coalesced [138] print_char::ch#6 ← print_char::ch#2 -Coalesced (already) [139] print_char_cursor#109 ← print_char_cursor#10 -Coalesced [144] divr16u::rem#13 ← divr16u::rem#10 -Coalesced [145] divr16u::dividend#10 ← divr16u::dividend#5 -Coalesced [152] divr16u::rem#16 ← divr16u::rem#1 -Coalesced [159] divr16u::rem#18 ← divr16u::rem#2 -Coalesced [160] divr16u::return#8 ← divr16u::quotient#2 -Coalesced [166] divr16u::rem#14 ← divr16u::rem#11 -Coalesced [167] divr16u::dividend#11 ← divr16u::dividend#0 -Coalesced [168] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [169] divr16u::i#7 ← divr16u::i#1 -Coalesced [170] divr16u::rem#17 ← divr16u::rem#6 -Coalesced [171] divr16u::return#7 ← divr16u::quotient#1 -Coalesced [172] divr16u::rem#15 ← divr16u::rem#0 -Coalesced [181] memset::dst#4 ← memset::dst#1 +Coalesced [54] print_uint::w#12 ← print_uint::w#4 +Coalesced (already) [56] print_char_cursor#97 ← print_char_cursor#10 +Coalesced [59] print_uint::w#13 ← print_uint::w#5 +Coalesced (already) [61] print_line_cursor#51 ← print_line_cursor#0 +Coalesced [64] main::i#12 ← main::i#1 +Coalesced [68] divr16u::dividend#9 ← divr16u::dividend#1 +Coalesced [73] divr16u::rem#12 ← divr16u::rem#4 +Coalesced [79] lin16u_gen::val#5 ← lin16u_gen::val#0 +Coalesced [80] lin16u_gen::lintab#10 ← lin16u_gen::lintab#6 +Coalesced [89] lin16u_gen::i#4 ← lin16u_gen::i#1 +Coalesced [90] lin16u_gen::val#4 ← lin16u_gen::val#1 +Coalesced [91] lin16u_gen::lintab#9 ← lin16u_gen::lintab#3 +Coalesced [97] print_str::str#14 ← print_str::str#13 +Coalesced [98] print_char_cursor#102 ← print_char_cursor#89 +Coalesced [103] print_char::ch#4 ← print_char::ch#0 +Coalesced [104] print_char_cursor#107 ← print_char_cursor#1 +Coalesced [107] print_str::str#15 ← print_str::str#0 +Coalesced (already) [108] print_char_cursor#103 ← print_char_cursor#10 +Coalesced [111] print_uchar::b#6 ← print_uchar::b#0 +Coalesced [112] print_char_cursor#105 ← print_char_cursor#1 +Coalesced [115] print_uchar::b#7 ← print_uchar::b#1 +Coalesced (already) [116] print_char_cursor#106 ← print_char_cursor#10 +Coalesced [121] print_line_cursor#53 ← print_line_cursor#23 +Coalesced (already) [127] print_line_cursor#54 ← print_line_cursor#0 +Coalesced [131] print_char::ch#5 ← print_char::ch#1 +Coalesced (already) [132] print_char_cursor#108 ← print_char_cursor#84 +Coalesced [136] print_char::ch#6 ← print_char::ch#2 +Coalesced (already) [137] print_char_cursor#109 ← print_char_cursor#10 +Coalesced [142] divr16u::rem#13 ← divr16u::rem#10 +Coalesced [143] divr16u::dividend#10 ← divr16u::dividend#5 +Coalesced [150] divr16u::rem#16 ← divr16u::rem#1 +Coalesced [157] divr16u::rem#18 ← divr16u::rem#2 +Coalesced [158] divr16u::return#8 ← divr16u::quotient#2 +Coalesced [164] divr16u::rem#14 ← divr16u::rem#11 +Coalesced [165] divr16u::dividend#11 ← divr16u::dividend#0 +Coalesced [166] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [167] divr16u::i#7 ← divr16u::i#1 +Coalesced [168] divr16u::rem#17 ← divr16u::rem#6 +Coalesced [169] divr16u::return#7 ← divr16u::quotient#1 +Coalesced [170] divr16u::rem#15 ← divr16u::rem#0 +Coalesced [179] memset::dst#4 ← memset::dst#1 Coalesced down to 17 phi equivalence classes Culled Empty Block (label) main::@14 Culled Empty Block (label) main::@29 @@ -1911,8 +1916,8 @@ main::@14: scope:[main] from main::@2 [43] call print_str to:main::@15 main::@15: scope:[main] from main::@14 - [44] (byte~) main::$27 ← (byte) main::i#10 << (byte) 1 - [45] (word) print_uint::w#3 ← *((const word*) main::lintab1 + (byte~) main::$27) + [44] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 + [45] (word) print_uint::w#3 ← *((const word*) main::lintab1 + (byte~) main::$28) [46] call print_uint to:main::@16 main::@16: scope:[main] from main::@15 @@ -1920,205 +1925,203 @@ main::@16: scope:[main] from main::@15 [48] call print_str to:main::@17 main::@17: scope:[main] from main::@16 - [49] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 - [50] (word) print_uint::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) - [51] call print_uint + [49] (word) print_uint::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) + [50] call print_uint to:main::@18 main::@18: scope:[main] from main::@17 - [52] phi() - [53] call print_str + [51] phi() + [52] call print_str to:main::@19 main::@19: scope:[main] from main::@18 - [54] (byte~) main::$29 ← (byte) main::i#10 << (byte) 1 - [55] (word) print_uint::w#5 ← *((const word*) main::lintab3 + (byte~) main::$29) - [56] call print_uint + [53] (word) print_uint::w#5 ← *((const word*) main::lintab3 + (byte~) main::$28) + [54] call print_uint to:main::@20 main::@20: scope:[main] from main::@19 - [57] phi() - [58] call print_ln + [55] phi() + [56] call print_ln to:main::@21 main::@21: scope:[main] from main::@20 - [59] (byte) main::i#1 ← ++ (byte) main::i#10 + [57] (byte) main::i#1 ← ++ (byte) main::i#10 to:main::@1 (void()) lin16u_gen((word) lin16u_gen::min , (word) lin16u_gen::max , (word*) lin16u_gen::lintab , (word) lin16u_gen::length) lin16u_gen: scope:[lin16u_gen] from main main::@4 main::@5 - [60] (word*) lin16u_gen::lintab#6 ← phi( main/(const word*) main::lintab1 main::@4/(const word*) main::lintab2 main::@5/(const word*) main::lintab3 ) - [60] (word) lin16u_gen::min#3 ← phi( main/(word) $22d main::@4/(word) $79cb main::@5/(byte) 0 ) - [60] (word) lin16u_gen::max#3 ← phi( main/(word) $7461 main::@4/(word) $f781 main::@5/(word) $6488 ) - [61] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 - [62] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 - [63] call divr16u - [64] (word) divr16u::return#2 ← (word) divr16u::return#0 + [58] (word*) lin16u_gen::lintab#6 ← phi( main/(const word*) main::lintab1 main::@4/(const word*) main::lintab2 main::@5/(const word*) main::lintab3 ) + [58] (word) lin16u_gen::min#3 ← phi( main/(word) $22d main::@4/(word) $79cb main::@5/(byte) 0 ) + [58] (word) lin16u_gen::max#3 ← phi( main/(word) $7461 main::@4/(word) $f781 main::@5/(word) $6488 ) + [59] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 + [60] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 + [61] call divr16u + [62] (word) divr16u::return#2 ← (word) divr16u::return#0 to:lin16u_gen::@3 lin16u_gen::@3: scope:[lin16u_gen] from lin16u_gen - [65] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 - [66] (word) divr16u::rem#4 ← (word) rem16u#0 - [67] call divr16u - [68] (word) divr16u::return#3 ← (word) divr16u::return#0 + [63] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 + [64] (word) divr16u::rem#4 ← (word) rem16u#0 + [65] call divr16u + [66] (word) divr16u::return#3 ← (word) divr16u::return#0 to:lin16u_gen::@4 lin16u_gen::@4: scope:[lin16u_gen] from lin16u_gen::@3 - [69] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 - [70] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 - [71] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (word) 0 + [67] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 + [68] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 + [69] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (word) 0 to:lin16u_gen::@1 lin16u_gen::@1: scope:[lin16u_gen] from lin16u_gen::@2 lin16u_gen::@4 - [72] (word*) lin16u_gen::lintab#4 ← phi( lin16u_gen::@2/(word*) lin16u_gen::lintab#3 lin16u_gen::@4/(word*) lin16u_gen::lintab#6 ) - [72] (dword) lin16u_gen::val#2 ← phi( lin16u_gen::@2/(dword) lin16u_gen::val#1 lin16u_gen::@4/(dword) lin16u_gen::val#0 ) - [72] (word) lin16u_gen::i#2 ← phi( lin16u_gen::@2/(word) lin16u_gen::i#1 lin16u_gen::@4/(word) 0 ) - [73] if((word) lin16u_gen::i#2<(byte) $14) goto lin16u_gen::@2 + [70] (word*) lin16u_gen::lintab#4 ← phi( lin16u_gen::@2/(word*) lin16u_gen::lintab#3 lin16u_gen::@4/(word*) lin16u_gen::lintab#6 ) + [70] (dword) lin16u_gen::val#2 ← phi( lin16u_gen::@2/(dword) lin16u_gen::val#1 lin16u_gen::@4/(dword) lin16u_gen::val#0 ) + [70] (word) lin16u_gen::i#2 ← phi( lin16u_gen::@2/(word) lin16u_gen::i#1 lin16u_gen::@4/(word) 0 ) + [71] if((word) lin16u_gen::i#2<(byte) $14) goto lin16u_gen::@2 to:lin16u_gen::@return lin16u_gen::@return: scope:[lin16u_gen] from lin16u_gen::@1 - [74] return + [72] return to:@return lin16u_gen::@2: scope:[lin16u_gen] from lin16u_gen::@1 - [75] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 - [76] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 - [77] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 - [78] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD - [79] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 + [73] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 + [74] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 + [75] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 + [76] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD + [77] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 to:lin16u_gen::@1 (void()) print_cls() print_cls: scope:[print_cls] from main::@6 - [80] phi() - [81] call memset + [78] phi() + [79] call memset to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls - [82] return + [80] return to:@return (void()) print_str((byte*) print_str::str) print_str: scope:[print_str] from main::@11 main::@14 main::@16 main::@18 main::@23 main::@25 main::@3 main::@7 main::@9 - [83] (byte*) print_char_cursor#89 ← phi( main::@11/(byte*) print_char_cursor#10 main::@14/(byte*) print_char_cursor#10 main::@16/(byte*) print_char_cursor#10 main::@18/(byte*) print_char_cursor#10 main::@23/(byte*) print_char_cursor#10 main::@25/(byte*) print_char_cursor#10 main::@3/(byte*) print_char_cursor#100 main::@7/(const byte*) print_screen#0 main::@9/(byte*) print_char_cursor#10 ) - [83] (byte*) print_str::str#13 ← phi( main::@11/(const byte*) main::str1 main::@14/(const byte*) main::str1 main::@16/(const byte*) main::str1 main::@18/(const byte*) main::str1 main::@23/(const byte*) main::str1 main::@25/(const byte*) main::str1 main::@3/(const byte*) main::str main::@7/(const byte*) main::str main::@9/(const byte*) main::str1 ) + [81] (byte*) print_char_cursor#89 ← phi( main::@11/(byte*) print_char_cursor#10 main::@14/(byte*) print_char_cursor#10 main::@16/(byte*) print_char_cursor#10 main::@18/(byte*) print_char_cursor#10 main::@23/(byte*) print_char_cursor#10 main::@25/(byte*) print_char_cursor#10 main::@3/(byte*) print_char_cursor#100 main::@7/(const byte*) print_screen#0 main::@9/(byte*) print_char_cursor#10 ) + [81] (byte*) print_str::str#13 ← phi( main::@11/(const byte*) main::str1 main::@14/(const byte*) main::str1 main::@16/(const byte*) main::str1 main::@18/(const byte*) main::str1 main::@23/(const byte*) main::str1 main::@25/(const byte*) main::str1 main::@3/(const byte*) main::str main::@7/(const byte*) main::str main::@9/(const byte*) main::str1 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@3 - [84] (byte*) print_char_cursor#1 ← phi( print_str/(byte*) print_char_cursor#89 print_str::@3/(byte*) print_char_cursor#10 ) - [84] (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#13 print_str::@3/(byte*) print_str::str#0 ) - [85] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 + [82] (byte*) print_char_cursor#1 ← phi( print_str/(byte*) print_char_cursor#89 print_str::@3/(byte*) print_char_cursor#10 ) + [82] (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#13 print_str::@3/(byte*) print_str::str#0 ) + [83] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [86] return + [84] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [87] (byte) print_char::ch#0 ← *((byte*) print_str::str#10) - [88] call print_char + [85] (byte) print_char::ch#0 ← *((byte*) print_str::str#10) + [86] call print_char to:print_str::@3 print_str::@3: scope:[print_str] from print_str::@2 - [89] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + [87] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 to:print_str::@1 (void()) print_uint((word) print_uint::w) print_uint: scope:[print_uint] from main::@10 main::@12 main::@15 main::@17 main::@19 main::@22 main::@24 main::@26 main::@8 - [90] (word) print_uint::w#10 ← phi( main::@10/(word) $79cb main::@12/(byte) 0 main::@15/(word) print_uint::w#3 main::@17/(word) print_uint::w#4 main::@19/(word) print_uint::w#5 main::@22/(word) $7461 main::@24/(word) $f781 main::@26/(word) $6488 main::@8/(word) $22d ) - [91] (byte) print_uchar::b#0 ← > (word) print_uint::w#10 - [92] call print_uchar + [88] (word) print_uint::w#10 ← phi( main::@10/(word) $79cb main::@12/(byte) 0 main::@15/(word) print_uint::w#3 main::@17/(word) print_uint::w#4 main::@19/(word) print_uint::w#5 main::@22/(word) $7461 main::@24/(word) $f781 main::@26/(word) $6488 main::@8/(word) $22d ) + [89] (byte) print_uchar::b#0 ← > (word) print_uint::w#10 + [90] call print_uchar to:print_uint::@1 print_uint::@1: scope:[print_uint] from print_uint - [93] (byte) print_uchar::b#1 ← < (word) print_uint::w#10 - [94] call print_uchar + [91] (byte) print_uchar::b#1 ← < (word) print_uint::w#10 + [92] call print_uchar to:print_uint::@return print_uint::@return: scope:[print_uint] from print_uint::@1 - [95] return + [93] return to:@return (void()) print_ln() print_ln: scope:[print_ln] from main::@13 main::@20 main::@27 - [96] (byte*) print_line_cursor#23 ← phi( main::@13/(const byte*) print_screen#0 main::@20/(byte*) print_line_cursor#0 main::@27/(byte*) print_line_cursor#0 ) + [94] (byte*) print_line_cursor#23 ← phi( main::@13/(const byte*) print_screen#0 main::@20/(byte*) print_line_cursor#0 main::@27/(byte*) print_line_cursor#0 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - [97] (byte*) print_line_cursor#12 ← phi( print_ln/(byte*) print_line_cursor#23 print_ln::@1/(byte*) print_line_cursor#0 ) - [98] (byte*) print_line_cursor#0 ← (byte*) print_line_cursor#12 + (byte) $28 - [99] if((byte*) print_line_cursor#0<(byte*) print_char_cursor#10) goto print_ln::@1 + [95] (byte*) print_line_cursor#12 ← phi( print_ln/(byte*) print_line_cursor#23 print_ln::@1/(byte*) print_line_cursor#0 ) + [96] (byte*) print_line_cursor#0 ← (byte*) print_line_cursor#12 + (byte) $28 + [97] if((byte*) print_line_cursor#0<(byte*) print_char_cursor#10) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 - [100] return + [98] return to:@return (void()) print_uchar((byte) print_uchar::b) print_uchar: scope:[print_uchar] from main::@2 print_uint print_uint::@1 - [101] (byte*) print_char_cursor#84 ← phi( main::@2/(byte*) print_char_cursor#104 print_uint/(byte*) print_char_cursor#1 print_uint::@1/(byte*) print_char_cursor#10 ) - [101] (byte) print_uchar::b#3 ← phi( main::@2/(byte) print_uchar::b#2 print_uint/(byte) print_uchar::b#0 print_uint::@1/(byte) print_uchar::b#1 ) - [102] (byte~) print_uchar::$0 ← (byte) print_uchar::b#3 >> (byte) 4 - [103] (byte) print_char::ch#1 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$0) - [104] call print_char + [99] (byte*) print_char_cursor#84 ← phi( main::@2/(byte*) print_char_cursor#104 print_uint/(byte*) print_char_cursor#1 print_uint::@1/(byte*) print_char_cursor#10 ) + [99] (byte) print_uchar::b#3 ← phi( main::@2/(byte) print_uchar::b#2 print_uint/(byte) print_uchar::b#0 print_uint::@1/(byte) print_uchar::b#1 ) + [100] (byte~) print_uchar::$0 ← (byte) print_uchar::b#3 >> (byte) 4 + [101] (byte) print_char::ch#1 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$0) + [102] call print_char to:print_uchar::@1 print_uchar::@1: scope:[print_uchar] from print_uchar - [105] (byte~) print_uchar::$2 ← (byte) print_uchar::b#3 & (byte) $f - [106] (byte) print_char::ch#2 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$2) - [107] call print_char + [103] (byte~) print_uchar::$2 ← (byte) print_uchar::b#3 & (byte) $f + [104] (byte) print_char::ch#2 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$2) + [105] call print_char to:print_uchar::@return print_uchar::@return: scope:[print_uchar] from print_uchar::@1 - [108] return + [106] return to:@return (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) divr16u: scope:[divr16u] from lin16u_gen lin16u_gen::@3 - [109] (word) divr16u::dividend#5 ← phi( lin16u_gen/(word) divr16u::dividend#1 lin16u_gen::@3/(byte) 0 ) - [109] (word) divr16u::rem#10 ← phi( lin16u_gen/(byte) 0 lin16u_gen::@3/(word) divr16u::rem#4 ) + [107] (word) divr16u::dividend#5 ← phi( lin16u_gen/(word) divr16u::dividend#1 lin16u_gen::@3/(byte) 0 ) + [107] (word) divr16u::rem#10 ← phi( lin16u_gen/(byte) 0 lin16u_gen::@3/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [110] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) - [110] (word) divr16u::quotient#3 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::return#0 ) - [110] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [110] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [111] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 - [112] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [113] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 - [114] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 + [108] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) + [108] (word) divr16u::quotient#3 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::return#0 ) + [108] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [108] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [109] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 + [110] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [111] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 + [112] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [115] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 + [113] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [116] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [117] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 - [118] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 - [119] if((word) divr16u::rem#6<(byte) $14-(byte) 1) goto divr16u::@3 + [114] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [115] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 + [116] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 + [117] if((word) divr16u::rem#6<(byte) $14-(byte) 1) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [120] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [121] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (byte) $14-(byte) 1 + [118] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [119] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (byte) $14-(byte) 1 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [122] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [122] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [123] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [124] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 + [120] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [120] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [121] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [122] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [125] (word) rem16u#0 ← (word) divr16u::rem#11 + [123] (word) rem16u#0 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [126] return + [124] return to:@return (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) memset: scope:[memset] from print_cls - [127] phi() + [125] phi() to:memset::@1 memset::@1: scope:[memset] from memset memset::@2 - [128] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 ) - [129] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 + [126] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 ) + [127] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 to:memset::@return memset::@return: scope:[memset] from memset::@1 - [130] return + [128] return to:@return memset::@2: scope:[memset] from memset::@1 - [131] *((byte*) memset::dst#2) ← (const byte) memset::c#0 - [132] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + [129] *((byte*) memset::dst#2) ← (const byte) memset::c#0 + [130] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 to:memset::@1 (void()) print_char((byte) print_char::ch) print_char: scope:[print_char] from print_str::@2 print_uchar print_uchar::@1 - [133] (byte*) print_char_cursor#51 ← phi( print_str::@2/(byte*) print_char_cursor#1 print_uchar/(byte*) print_char_cursor#84 print_uchar::@1/(byte*) print_char_cursor#10 ) - [133] (byte) print_char::ch#3 ← phi( print_str::@2/(byte) print_char::ch#0 print_uchar/(byte) print_char::ch#1 print_uchar::@1/(byte) print_char::ch#2 ) - [134] *((byte*) print_char_cursor#51) ← (byte) print_char::ch#3 - [135] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#51 + [131] (byte*) print_char_cursor#51 ← phi( print_str::@2/(byte*) print_char_cursor#1 print_uchar/(byte*) print_char_cursor#84 print_uchar::@1/(byte*) print_char_cursor#10 ) + [131] (byte) print_char::ch#3 ← phi( print_str::@2/(byte) print_char::ch#0 print_uchar/(byte) print_char::ch#1 print_uchar::@1/(byte) print_char::ch#2 ) + [132] *((byte*) print_char_cursor#51) ← (byte) print_char::ch#3 + [133] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#51 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [136] return + [134] return to:@return @@ -2179,12 +2182,10 @@ VARIABLE REGISTER WEIGHTS (dword) lin16u_gen::val#1 67.33333333333333 (dword) lin16u_gen::val#2 78.5 (void()) main() -(byte~) main::$27 22.0 -(byte~) main::$28 22.0 -(byte~) main::$29 22.0 +(byte~) main::$28 4.888888888888889 (byte) main::i (byte) main::i#1 22.0 -(byte) main::i#10 3.5 +(byte) main::i#10 2.75 (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c (byte*) memset::dst @@ -2201,7 +2202,7 @@ VARIABLE REGISTER WEIGHTS (byte) print_char::ch#2 2002.0 (byte) print_char::ch#3 112004.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 748.2962962962963 +(byte*) print_char_cursor#1 808.1600000000001 (byte*) print_char_cursor#10 3274.216216216216 (byte*) print_char_cursor#100 4.0 (byte*) print_char_cursor#104 22.0 @@ -2210,7 +2211,7 @@ VARIABLE REGISTER WEIGHTS (byte*) print_char_cursor#89 144.0 (void()) print_cls() (byte*) print_line_cursor -(byte*) print_line_cursor#0 750.725 +(byte*) print_line_cursor#0 790.2368421052631 (byte*) print_line_cursor#12 20103.0 (byte*) print_line_cursor#23 114.0 (void()) print_ln() @@ -2255,9 +2256,7 @@ Initial phi equivalence classes [ memset::dst#2 memset::dst#1 ] [ print_char::ch#3 print_char::ch#0 print_char::ch#1 print_char::ch#2 ] [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 ] -Added variable main::$27 to live range equivalence class [ main::$27 ] Added variable main::$28 to live range equivalence class [ main::$28 ] -Added variable main::$29 to live range equivalence class [ main::$29 ] Added variable lin16u_gen::ampl#0 to live range equivalence class [ lin16u_gen::ampl#0 ] Added variable divr16u::return#2 to live range equivalence class [ divr16u::return#2 ] Added variable lin16u_gen::stepi#0 to live range equivalence class [ lin16u_gen::stepi#0 ] @@ -2288,9 +2287,7 @@ Complete equivalence classes [ memset::dst#2 memset::dst#1 ] [ print_char::ch#3 print_char::ch#0 print_char::ch#1 print_char::ch#2 ] [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 ] -[ main::$27 ] [ main::$28 ] -[ main::$29 ] [ lin16u_gen::ampl#0 ] [ divr16u::return#2 ] [ lin16u_gen::stepi#0 ] @@ -2320,21 +2317,19 @@ Allocated zp[1]:28 [ divr16u::i#2 divr16u::i#1 ] Allocated zp[2]:29 [ memset::dst#2 memset::dst#1 ] Allocated zp[1]:31 [ print_char::ch#3 print_char::ch#0 print_char::ch#1 print_char::ch#2 ] Allocated zp[2]:32 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 ] -Allocated zp[1]:34 [ main::$27 ] -Allocated zp[1]:35 [ main::$28 ] -Allocated zp[1]:36 [ main::$29 ] -Allocated zp[2]:37 [ lin16u_gen::ampl#0 ] -Allocated zp[2]:39 [ divr16u::return#2 ] -Allocated zp[2]:41 [ lin16u_gen::stepi#0 ] -Allocated zp[2]:43 [ divr16u::return#3 ] -Allocated zp[2]:45 [ lin16u_gen::stepf#0 ] -Allocated zp[4]:47 [ lin16u_gen::step#0 ] -Allocated zp[2]:51 [ lin16u_gen::$6 ] -Allocated zp[1]:53 [ print_uchar::$0 ] -Allocated zp[1]:54 [ print_uchar::$2 ] -Allocated zp[1]:55 [ divr16u::$1 ] -Allocated zp[1]:56 [ divr16u::$2 ] -Allocated zp[2]:57 [ rem16u#0 ] +Allocated zp[1]:34 [ main::$28 ] +Allocated zp[2]:35 [ lin16u_gen::ampl#0 ] +Allocated zp[2]:37 [ divr16u::return#2 ] +Allocated zp[2]:39 [ lin16u_gen::stepi#0 ] +Allocated zp[2]:41 [ divr16u::return#3 ] +Allocated zp[2]:43 [ lin16u_gen::stepf#0 ] +Allocated zp[4]:45 [ lin16u_gen::step#0 ] +Allocated zp[2]:49 [ lin16u_gen::$6 ] +Allocated zp[1]:51 [ print_uchar::$0 ] +Allocated zp[1]:52 [ print_uchar::$2 ] +Allocated zp[1]:53 [ divr16u::$1 ] +Allocated zp[1]:54 [ divr16u::$2 ] +Allocated zp[2]:55 [ rem16u#0 ] INITIAL ASM Target platform is c64basic / MOS6502X @@ -2352,29 +2347,27 @@ Target platform is c64basic / MOS6502X .const SIZEOF_WORD = 2 .label print_screen = $400 // Remainder after unsigned 16-bit division - .label rem16u = $39 + .label rem16u = $37 .label print_char_cursor = $20 .label print_line_cursor = $13 // main main: { - .label __27 = $22 - .label __28 = $23 - .label __29 = $24 + .label __28 = $22 .label i = 2 // [1] call lin16u_gen - // [60] phi from main to lin16u_gen [phi:main->lin16u_gen] + // [58] phi from main to lin16u_gen [phi:main->lin16u_gen] lin16u_gen_from_main: - // [60] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab1 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1 + // [58] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab1 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab1 sta.z lin16u_gen.lintab+1 - // [60] phi (word) lin16u_gen::min#3 = (word) $22d [phi:main->lin16u_gen#1] -- vwuz1=vwuc1 + // [58] phi (word) lin16u_gen::min#3 = (word) $22d [phi:main->lin16u_gen#1] -- vwuz1=vwuc1 lda #<$22d sta.z lin16u_gen.min lda #>$22d sta.z lin16u_gen.min+1 - // [60] phi (word) lin16u_gen::max#3 = (word) $7461 [phi:main->lin16u_gen#2] -- vwuz1=vwuc1 + // [58] phi (word) lin16u_gen::max#3 = (word) $7461 [phi:main->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$7461 sta.z lin16u_gen.max lda #>$7461 @@ -2386,19 +2379,19 @@ main: { // main::@4 __b4: // [3] call lin16u_gen - // [60] phi from main::@4 to lin16u_gen [phi:main::@4->lin16u_gen] + // [58] phi from main::@4 to lin16u_gen [phi:main::@4->lin16u_gen] lin16u_gen_from___b4: - // [60] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab2 [phi:main::@4->lin16u_gen#0] -- pwuz1=pwuc1 + // [58] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab2 [phi:main::@4->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab2 sta.z lin16u_gen.lintab+1 - // [60] phi (word) lin16u_gen::min#3 = (word) $79cb [phi:main::@4->lin16u_gen#1] -- vwuz1=vwuc1 + // [58] phi (word) lin16u_gen::min#3 = (word) $79cb [phi:main::@4->lin16u_gen#1] -- vwuz1=vwuc1 lda #<$79cb sta.z lin16u_gen.min lda #>$79cb sta.z lin16u_gen.min+1 - // [60] phi (word) lin16u_gen::max#3 = (word) $f781 [phi:main::@4->lin16u_gen#2] -- vwuz1=vwuc1 + // [58] phi (word) lin16u_gen::max#3 = (word) $f781 [phi:main::@4->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$f781 sta.z lin16u_gen.max lda #>$f781 @@ -2410,19 +2403,19 @@ main: { // main::@5 __b5: // [5] call lin16u_gen - // [60] phi from main::@5 to lin16u_gen [phi:main::@5->lin16u_gen] + // [58] phi from main::@5 to lin16u_gen [phi:main::@5->lin16u_gen] lin16u_gen_from___b5: - // [60] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab3 [phi:main::@5->lin16u_gen#0] -- pwuz1=pwuc1 + // [58] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab3 [phi:main::@5->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab3 sta.z lin16u_gen.lintab+1 - // [60] phi (word) lin16u_gen::min#3 = (byte) 0 [phi:main::@5->lin16u_gen#1] -- vwuz1=vbuc1 + // [58] phi (word) lin16u_gen::min#3 = (byte) 0 [phi:main::@5->lin16u_gen#1] -- vwuz1=vbuc1 lda #<0 sta.z lin16u_gen.min lda #>0 sta.z lin16u_gen.min+1 - // [60] phi (word) lin16u_gen::max#3 = (word) $6488 [phi:main::@5->lin16u_gen#2] -- vwuz1=vwuc1 + // [58] phi (word) lin16u_gen::max#3 = (word) $6488 [phi:main::@5->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$6488 sta.z lin16u_gen.max lda #>$6488 @@ -2434,7 +2427,7 @@ main: { // main::@6 __b6: // [7] call print_cls - // [80] phi from main::@6 to print_cls [phi:main::@6->print_cls] + // [78] phi from main::@6 to print_cls [phi:main::@6->print_cls] print_cls_from___b6: jsr print_cls // [8] phi from main::@6 to main::@7 [phi:main::@6->main::@7] @@ -2443,14 +2436,14 @@ main: { // main::@7 __b7: // [9] call print_str - // [83] phi from main::@7 to print_str [phi:main::@7->print_str] + // [81] phi from main::@7 to print_str [phi:main::@7->print_str] print_str_from___b7: - // [83] phi (byte*) print_char_cursor#89 = (const byte*) print_screen#0 [phi:main::@7->print_str#0] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (const byte*) print_screen#0 [phi:main::@7->print_str#0] -- pbuz1=pbuc1 lda #print_screen sta.z print_char_cursor+1 - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 lda #str @@ -2462,9 +2455,9 @@ main: { // main::@8 __b8: // [11] call print_uint - // [90] phi from main::@8 to print_uint [phi:main::@8->print_uint] + // [88] phi from main::@8 to print_uint [phi:main::@8->print_uint] print_uint_from___b8: - // [90] phi (word) print_uint::w#10 = (word) $22d [phi:main::@8->print_uint#0] -- vwuz1=vwuc1 + // [88] phi (word) print_uint::w#10 = (word) $22d [phi:main::@8->print_uint#0] -- vwuz1=vwuc1 lda #<$22d sta.z print_uint.w lda #>$22d @@ -2476,10 +2469,10 @@ main: { // main::@9 __b9: // [13] call print_str - // [83] phi from main::@9 to print_str [phi:main::@9->print_str] + // [81] phi from main::@9 to print_str [phi:main::@9->print_str] print_str_from___b9: - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@9->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@9->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@9->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@9->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -2491,9 +2484,9 @@ main: { // main::@10 __b10: // [15] call print_uint - // [90] phi from main::@10 to print_uint [phi:main::@10->print_uint] + // [88] phi from main::@10 to print_uint [phi:main::@10->print_uint] print_uint_from___b10: - // [90] phi (word) print_uint::w#10 = (word) $79cb [phi:main::@10->print_uint#0] -- vwuz1=vwuc1 + // [88] phi (word) print_uint::w#10 = (word) $79cb [phi:main::@10->print_uint#0] -- vwuz1=vwuc1 lda #<$79cb sta.z print_uint.w lda #>$79cb @@ -2505,10 +2498,10 @@ main: { // main::@11 __b11: // [17] call print_str - // [83] phi from main::@11 to print_str [phi:main::@11->print_str] + // [81] phi from main::@11 to print_str [phi:main::@11->print_str] print_str_from___b11: - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@11->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@11->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@11->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@11->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -2520,9 +2513,9 @@ main: { // main::@12 __b12: // [19] call print_uint - // [90] phi from main::@12 to print_uint [phi:main::@12->print_uint] + // [88] phi from main::@12 to print_uint [phi:main::@12->print_uint] print_uint_from___b12: - // [90] phi (word) print_uint::w#10 = (byte) 0 [phi:main::@12->print_uint#0] -- vwuz1=vbuc1 + // [88] phi (word) print_uint::w#10 = (byte) 0 [phi:main::@12->print_uint#0] -- vwuz1=vbuc1 lda #<0 sta.z print_uint.w lda #>0 @@ -2534,9 +2527,9 @@ main: { // main::@13 __b13: // [21] call print_ln - // [96] phi from main::@13 to print_ln [phi:main::@13->print_ln] + // [94] phi from main::@13 to print_ln [phi:main::@13->print_ln] print_ln_from___b13: - // [96] phi (byte*) print_line_cursor#23 = (const byte*) print_screen#0 [phi:main::@13->print_ln#0] -- pbuz1=pbuc1 + // [94] phi (byte*) print_line_cursor#23 = (const byte*) print_screen#0 [phi:main::@13->print_ln#0] -- pbuz1=pbuc1 lda #print_screen @@ -2563,10 +2556,10 @@ main: { lda.z print_line_cursor+1 sta.z print_char_cursor+1 // [25] call print_str - // [83] phi from main::@3 to print_str [phi:main::@3->print_str] + // [81] phi from main::@3 to print_str [phi:main::@3->print_str] print_str_from___b3: - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#100 [phi:main::@3->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#100 [phi:main::@3->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #str @@ -2578,9 +2571,9 @@ main: { // main::@22 __b22: // [27] call print_uint - // [90] phi from main::@22 to print_uint [phi:main::@22->print_uint] + // [88] phi from main::@22 to print_uint [phi:main::@22->print_uint] print_uint_from___b22: - // [90] phi (word) print_uint::w#10 = (word) $7461 [phi:main::@22->print_uint#0] -- vwuz1=vwuc1 + // [88] phi (word) print_uint::w#10 = (word) $7461 [phi:main::@22->print_uint#0] -- vwuz1=vwuc1 lda #<$7461 sta.z print_uint.w lda #>$7461 @@ -2592,10 +2585,10 @@ main: { // main::@23 __b23: // [29] call print_str - // [83] phi from main::@23 to print_str [phi:main::@23->print_str] + // [81] phi from main::@23 to print_str [phi:main::@23->print_str] print_str_from___b23: - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@23->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@23->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@23->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@23->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -2607,9 +2600,9 @@ main: { // main::@24 __b24: // [31] call print_uint - // [90] phi from main::@24 to print_uint [phi:main::@24->print_uint] + // [88] phi from main::@24 to print_uint [phi:main::@24->print_uint] print_uint_from___b24: - // [90] phi (word) print_uint::w#10 = (word) $f781 [phi:main::@24->print_uint#0] -- vwuz1=vwuc1 + // [88] phi (word) print_uint::w#10 = (word) $f781 [phi:main::@24->print_uint#0] -- vwuz1=vwuc1 lda #<$f781 sta.z print_uint.w lda #>$f781 @@ -2621,10 +2614,10 @@ main: { // main::@25 __b25: // [33] call print_str - // [83] phi from main::@25 to print_str [phi:main::@25->print_str] + // [81] phi from main::@25 to print_str [phi:main::@25->print_str] print_str_from___b25: - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@25->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@25->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@25->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@25->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -2636,9 +2629,9 @@ main: { // main::@26 __b26: // [35] call print_uint - // [90] phi from main::@26 to print_uint [phi:main::@26->print_uint] + // [88] phi from main::@26 to print_uint [phi:main::@26->print_uint] print_uint_from___b26: - // [90] phi (word) print_uint::w#10 = (word) $6488 [phi:main::@26->print_uint#0] -- vwuz1=vwuc1 + // [88] phi (word) print_uint::w#10 = (word) $6488 [phi:main::@26->print_uint#0] -- vwuz1=vwuc1 lda #<$6488 sta.z print_uint.w lda #>$6488 @@ -2650,9 +2643,9 @@ main: { // main::@27 __b27: // [37] call print_ln - // [96] phi from main::@27 to print_ln [phi:main::@27->print_ln] + // [94] phi from main::@27 to print_ln [phi:main::@27->print_ln] print_ln_from___b27: - // [96] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#0 [phi:main::@27->print_ln#0] -- register_copy + // [94] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#0 [phi:main::@27->print_ln#0] -- register_copy jsr print_ln jmp __breturn // main::@return @@ -2670,10 +2663,10 @@ main: { lda.z print_line_cursor+1 sta.z print_char_cursor+1 // [41] call print_uchar - // [101] phi from main::@2 to print_uchar [phi:main::@2->print_uchar] + // [99] phi from main::@2 to print_uchar [phi:main::@2->print_uchar] print_uchar_from___b2: - // [101] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#104 [phi:main::@2->print_uchar#0] -- register_copy - // [101] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#2 [phi:main::@2->print_uchar#1] -- register_copy + // [99] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#104 [phi:main::@2->print_uchar#0] -- register_copy + // [99] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#2 [phi:main::@2->print_uchar#1] -- register_copy jsr print_uchar // [42] phi from main::@2 to main::@14 [phi:main::@2->main::@14] __b14_from___b2: @@ -2681,10 +2674,10 @@ main: { // main::@14 __b14: // [43] call print_str - // [83] phi from main::@14 to print_str [phi:main::@14->print_str] + // [81] phi from main::@14 to print_str [phi:main::@14->print_str] print_str_from___b14: - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@14->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@14->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@14->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@14->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -2693,20 +2686,20 @@ main: { jmp __b15 // main::@15 __b15: - // [44] (byte~) main::$27 ← (byte) main::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [44] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i asl - sta.z __27 - // [45] (word) print_uint::w#3 ← *((const word*) main::lintab1 + (byte~) main::$27) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy.z __27 + sta.z __28 + // [45] (word) print_uint::w#3 ← *((const word*) main::lintab1 + (byte~) main::$28) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy.z __28 lda lintab1,y sta.z print_uint.w lda lintab1+1,y sta.z print_uint.w+1 // [46] call print_uint - // [90] phi from main::@15 to print_uint [phi:main::@15->print_uint] + // [88] phi from main::@15 to print_uint [phi:main::@15->print_uint] print_uint_from___b15: - // [90] phi (word) print_uint::w#10 = (word) print_uint::w#3 [phi:main::@15->print_uint#0] -- register_copy + // [88] phi (word) print_uint::w#10 = (word) print_uint::w#3 [phi:main::@15->print_uint#0] -- register_copy jsr print_uint // [47] phi from main::@15 to main::@16 [phi:main::@15->main::@16] __b16_from___b15: @@ -2714,10 +2707,10 @@ main: { // main::@16 __b16: // [48] call print_str - // [83] phi from main::@16 to print_str [phi:main::@16->print_str] + // [81] phi from main::@16 to print_str [phi:main::@16->print_str] print_str_from___b16: - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@16->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@16->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@16->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@16->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -2726,31 +2719,27 @@ main: { jmp __b17 // main::@17 __b17: - // [49] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 - lda.z i - asl - sta.z __28 - // [50] (word) print_uint::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) -- vwuz1=pwuc1_derefidx_vbuz2 + // [49] (word) print_uint::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) -- vwuz1=pwuc1_derefidx_vbuz2 ldy.z __28 lda lintab2,y sta.z print_uint.w lda lintab2+1,y sta.z print_uint.w+1 - // [51] call print_uint - // [90] phi from main::@17 to print_uint [phi:main::@17->print_uint] + // [50] call print_uint + // [88] phi from main::@17 to print_uint [phi:main::@17->print_uint] print_uint_from___b17: - // [90] phi (word) print_uint::w#10 = (word) print_uint::w#4 [phi:main::@17->print_uint#0] -- register_copy + // [88] phi (word) print_uint::w#10 = (word) print_uint::w#4 [phi:main::@17->print_uint#0] -- register_copy jsr print_uint - // [52] phi from main::@17 to main::@18 [phi:main::@17->main::@18] + // [51] phi from main::@17 to main::@18 [phi:main::@17->main::@18] __b18_from___b17: jmp __b18 // main::@18 __b18: - // [53] call print_str - // [83] phi from main::@18 to print_str [phi:main::@18->print_str] + // [52] call print_str + // [81] phi from main::@18 to print_str [phi:main::@18->print_str] print_str_from___b18: - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@18->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@18->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -2759,35 +2748,31 @@ main: { jmp __b19 // main::@19 __b19: - // [54] (byte~) main::$29 ← (byte) main::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 - lda.z i - asl - sta.z __29 - // [55] (word) print_uint::w#5 ← *((const word*) main::lintab3 + (byte~) main::$29) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy.z __29 + // [53] (word) print_uint::w#5 ← *((const word*) main::lintab3 + (byte~) main::$28) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy.z __28 lda lintab3,y sta.z print_uint.w lda lintab3+1,y sta.z print_uint.w+1 - // [56] call print_uint - // [90] phi from main::@19 to print_uint [phi:main::@19->print_uint] + // [54] call print_uint + // [88] phi from main::@19 to print_uint [phi:main::@19->print_uint] print_uint_from___b19: - // [90] phi (word) print_uint::w#10 = (word) print_uint::w#5 [phi:main::@19->print_uint#0] -- register_copy + // [88] phi (word) print_uint::w#10 = (word) print_uint::w#5 [phi:main::@19->print_uint#0] -- register_copy jsr print_uint - // [57] phi from main::@19 to main::@20 [phi:main::@19->main::@20] + // [55] phi from main::@19 to main::@20 [phi:main::@19->main::@20] __b20_from___b19: jmp __b20 // main::@20 __b20: - // [58] call print_ln - // [96] phi from main::@20 to print_ln [phi:main::@20->print_ln] + // [56] call print_ln + // [94] phi from main::@20 to print_ln [phi:main::@20->print_ln] print_ln_from___b20: - // [96] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#0 [phi:main::@20->print_ln#0] -- register_copy + // [94] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#0 [phi:main::@20->print_ln#0] -- register_copy jsr print_ln jmp __b21 // main::@21 __b21: - // [59] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + // [57] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 inc.z i // [22] phi from main::@21 to main::@1 [phi:main::@21->main::@1] __b1_from___b21: @@ -2807,17 +2792,17 @@ main: { // length - the number of points in a total sinus wavelength (the size of the table) // lin16u_gen(word zp(5) min, word zp(3) max, word* zp($d) lintab) lin16u_gen: { - .label __6 = $33 - .label ampl = $25 - .label stepi = $29 - .label stepf = $2d - .label step = $2f + .label __6 = $31 + .label ampl = $23 + .label stepi = $27 + .label stepf = $2b + .label step = $2d .label val = 9 .label lintab = $d .label i = 7 .label max = 3 .label min = 5 - // [61] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 -- vwuz1=vwuz2_minus_vwuz3 + // [59] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 -- vwuz1=vwuz2_minus_vwuz3 lda.z max sec sbc.z min @@ -2825,22 +2810,22 @@ lin16u_gen: { lda.z max+1 sbc.z min+1 sta.z ampl+1 - // [62] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 -- vwuz1=vwuz2 + // [60] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 -- vwuz1=vwuz2 lda.z ampl sta.z divr16u.dividend lda.z ampl+1 sta.z divr16u.dividend+1 - // [63] call divr16u - // [109] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u] + // [61] call divr16u + // [107] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u] divr16u_from_lin16u_gen: - // [109] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:lin16u_gen->divr16u#0] -- register_copy - // [109] phi (word) divr16u::rem#10 = (byte) 0 [phi:lin16u_gen->divr16u#1] -- vwuz1=vbuc1 + // [107] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:lin16u_gen->divr16u#0] -- register_copy + // [107] phi (word) divr16u::rem#10 = (byte) 0 [phi:lin16u_gen->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta.z divr16u.rem lda #>0 sta.z divr16u.rem+1 jsr divr16u - // [64] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + // [62] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda.z divr16u.return sta.z divr16u.return_1 lda.z divr16u.return+1 @@ -2848,27 +2833,27 @@ lin16u_gen: { jmp __b3 // lin16u_gen::@3 __b3: - // [65] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + // [63] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda.z divr16u.return_1 sta.z stepi lda.z divr16u.return_1+1 sta.z stepi+1 - // [66] (word) divr16u::rem#4 ← (word) rem16u#0 -- vwuz1=vwuz2 + // [64] (word) divr16u::rem#4 ← (word) rem16u#0 -- vwuz1=vwuz2 lda.z rem16u sta.z divr16u.rem lda.z rem16u+1 sta.z divr16u.rem+1 - // [67] call divr16u - // [109] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] + // [65] call divr16u + // [107] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] divr16u_from___b3: - // [109] phi (word) divr16u::dividend#5 = (byte) 0 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1 + // [107] phi (word) divr16u::dividend#5 = (byte) 0 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1 lda #<0 sta.z divr16u.dividend lda #>0 sta.z divr16u.dividend+1 - // [109] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#1] -- register_copy + // [107] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#1] -- register_copy jsr divr16u - // [68] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + // [66] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda.z divr16u.return sta.z divr16u.return_2 lda.z divr16u.return+1 @@ -2876,12 +2861,12 @@ lin16u_gen: { jmp __b4 // lin16u_gen::@4 __b4: - // [69] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + // [67] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 lda.z divr16u.return_2 sta.z stepf lda.z divr16u.return_2+1 sta.z stepf+1 - // [70] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 -- vduz1=vwuz2_dword_vwuz3 + // [68] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 -- vduz1=vwuz2_dword_vwuz3 lda.z stepi sta.z step+2 lda.z stepi+1 @@ -2890,7 +2875,7 @@ lin16u_gen: { sta.z step lda.z stepf+1 sta.z step+1 - // [71] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (word) 0 -- vduz1=vwuz2_dword_vwuc1 + // [69] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (word) 0 -- vduz1=vwuz2_dword_vwuc1 lda #<0 sta.z val lda #>0 @@ -2899,11 +2884,11 @@ lin16u_gen: { sta.z val+2 lda.z min+1 sta.z val+3 - // [72] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] + // [70] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] __b1_from___b4: - // [72] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#6 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- register_copy - // [72] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy - // [72] phi (word) lin16u_gen::i#2 = (word) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- vwuz1=vwuc1 + // [70] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#6 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- register_copy + // [70] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy + // [70] phi (word) lin16u_gen::i#2 = (word) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- vwuz1=vwuc1 lda #<0 sta.z i lda #>0 @@ -2911,7 +2896,7 @@ lin16u_gen: { jmp __b1 // lin16u_gen::@1 __b1: - // [73] if((word) lin16u_gen::i#2<(byte) $14) goto lin16u_gen::@2 -- vwuz1_lt_vbuc1_then_la1 + // [71] if((word) lin16u_gen::i#2<(byte) $14) goto lin16u_gen::@2 -- vwuz1_lt_vbuc1_then_la1 lda.z i+1 bne !+ lda.z i @@ -2921,23 +2906,23 @@ lin16u_gen: { jmp __breturn // lin16u_gen::@return __breturn: - // [74] return + // [72] return rts // lin16u_gen::@2 __b2: - // [75] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 -- vwuz1=_hi_vduz2 + // [73] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 -- vwuz1=_hi_vduz2 lda.z val+2 sta.z __6 lda.z val+3 sta.z __6+1 - // [76] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 -- _deref_pwuz1=vwuz2 + // [74] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 -- _deref_pwuz1=vwuz2 ldy #0 lda.z __6 sta (lintab),y iny lda.z __6+1 sta (lintab),y - // [77] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 -- vduz1=vduz1_plus_vduz2 + // [75] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda.z val clc adc.z step @@ -2951,7 +2936,7 @@ lin16u_gen: { lda.z val+3 adc.z step+3 sta.z val+3 - // [78] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD -- pwuz1=pwuz1_plus_vbuc1 + // [76] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD -- pwuz1=pwuz1_plus_vbuc1 lda #SIZEOF_WORD clc adc.z lintab @@ -2959,29 +2944,29 @@ lin16u_gen: { bcc !+ inc.z lintab+1 !: - // [79] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 -- vwuz1=_inc_vwuz1 + // [77] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 -- vwuz1=_inc_vwuz1 inc.z i bne !+ inc.z i+1 !: - // [72] phi from lin16u_gen::@2 to lin16u_gen::@1 [phi:lin16u_gen::@2->lin16u_gen::@1] + // [70] phi from lin16u_gen::@2 to lin16u_gen::@1 [phi:lin16u_gen::@2->lin16u_gen::@1] __b1_from___b2: - // [72] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#3 [phi:lin16u_gen::@2->lin16u_gen::@1#0] -- register_copy - // [72] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@2->lin16u_gen::@1#1] -- register_copy - // [72] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@2->lin16u_gen::@1#2] -- register_copy + // [70] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#3 [phi:lin16u_gen::@2->lin16u_gen::@1#0] -- register_copy + // [70] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@2->lin16u_gen::@1#1] -- register_copy + // [70] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@2->lin16u_gen::@1#2] -- register_copy jmp __b1 } // print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { - // [81] call memset - // [127] phi from print_cls to memset [phi:print_cls->memset] + // [79] call memset + // [125] phi from print_cls to memset [phi:print_cls->memset] memset_from_print_cls: jsr memset jmp __breturn // print_cls::@return __breturn: - // [82] return + // [80] return rts } // print_str @@ -2989,15 +2974,15 @@ print_cls: { // print_str(byte* zp($f) str) print_str: { .label str = $f - // [84] phi from print_str print_str::@3 to print_str::@1 [phi:print_str/print_str::@3->print_str::@1] + // [82] phi from print_str print_str::@3 to print_str::@1 [phi:print_str/print_str::@3->print_str::@1] __b1_from_print_str: __b1_from___b3: - // [84] phi (byte*) print_char_cursor#1 = (byte*) print_char_cursor#89 [phi:print_str/print_str::@3->print_str::@1#0] -- register_copy - // [84] phi (byte*) print_str::str#10 = (byte*) print_str::str#13 [phi:print_str/print_str::@3->print_str::@1#1] -- register_copy + // [82] phi (byte*) print_char_cursor#1 = (byte*) print_char_cursor#89 [phi:print_str/print_str::@3->print_str::@1#0] -- register_copy + // [82] phi (byte*) print_str::str#10 = (byte*) print_str::str#13 [phi:print_str/print_str::@3->print_str::@1#1] -- register_copy jmp __b1 // print_str::@1 __b1: - // [85] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 -- vbuc1_neq__deref_pbuz1_then_la1 + // [83] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 -- vbuc1_neq__deref_pbuz1_then_la1 ldy #0 lda (str),y cmp #0 @@ -3005,24 +2990,24 @@ print_str: { jmp __breturn // print_str::@return __breturn: - // [86] return + // [84] return rts // print_str::@2 __b2: - // [87] (byte) print_char::ch#0 ← *((byte*) print_str::str#10) -- vbuz1=_deref_pbuz2 + // [85] (byte) print_char::ch#0 ← *((byte*) print_str::str#10) -- vbuz1=_deref_pbuz2 ldy #0 lda (str),y sta.z print_char.ch - // [88] call print_char - // [133] phi from print_str::@2 to print_char [phi:print_str::@2->print_char] + // [86] call print_char + // [131] phi from print_str::@2 to print_char [phi:print_str::@2->print_char] print_char_from___b2: - // [133] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_char#0] -- register_copy - // [133] phi (byte) print_char::ch#3 = (byte) print_char::ch#0 [phi:print_str::@2->print_char#1] -- register_copy + // [131] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_char#0] -- register_copy + // [131] phi (byte) print_char::ch#3 = (byte) print_char::ch#0 [phi:print_str::@2->print_char#1] -- register_copy jsr print_char jmp __b3 // print_str::@3 __b3: - // [89] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 + // [87] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 inc.z str bne !+ inc.z str+1 @@ -3034,44 +3019,44 @@ print_str: { // print_uint(word zp($11) w) print_uint: { .label w = $11 - // [91] (byte) print_uchar::b#0 ← > (word) print_uint::w#10 -- vbuz1=_hi_vwuz2 + // [89] (byte) print_uchar::b#0 ← > (word) print_uint::w#10 -- vbuz1=_hi_vwuz2 lda.z w+1 sta.z print_uchar.b - // [92] call print_uchar - // [101] phi from print_uint to print_uchar [phi:print_uint->print_uchar] + // [90] call print_uchar + // [99] phi from print_uint to print_uchar [phi:print_uint->print_uchar] print_uchar_from_print_uint: - // [101] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#1 [phi:print_uint->print_uchar#0] -- register_copy - // [101] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#0 [phi:print_uint->print_uchar#1] -- register_copy + // [99] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#1 [phi:print_uint->print_uchar#0] -- register_copy + // [99] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#0 [phi:print_uint->print_uchar#1] -- register_copy jsr print_uchar jmp __b1 // print_uint::@1 __b1: - // [93] (byte) print_uchar::b#1 ← < (word) print_uint::w#10 -- vbuz1=_lo_vwuz2 + // [91] (byte) print_uchar::b#1 ← < (word) print_uint::w#10 -- vbuz1=_lo_vwuz2 lda.z w sta.z print_uchar.b - // [94] call print_uchar - // [101] phi from print_uint::@1 to print_uchar [phi:print_uint::@1->print_uchar] + // [92] call print_uchar + // [99] phi from print_uint::@1 to print_uchar [phi:print_uint::@1->print_uchar] print_uchar_from___b1: - // [101] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#10 [phi:print_uint::@1->print_uchar#0] -- register_copy - // [101] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#1 [phi:print_uint::@1->print_uchar#1] -- register_copy + // [99] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#10 [phi:print_uint::@1->print_uchar#0] -- register_copy + // [99] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#1 [phi:print_uint::@1->print_uchar#1] -- register_copy jsr print_uchar jmp __breturn // print_uint::@return __breturn: - // [95] return + // [93] return rts } // print_ln // Print a newline print_ln: { - // [97] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + // [95] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] __b1_from_print_ln: __b1_from___b1: - // [97] phi (byte*) print_line_cursor#12 = (byte*) print_line_cursor#23 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + // [95] phi (byte*) print_line_cursor#12 = (byte*) print_line_cursor#23 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp __b1 // print_ln::@1 __b1: - // [98] (byte*) print_line_cursor#0 ← (byte*) print_line_cursor#12 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [96] (byte*) print_line_cursor#0 ← (byte*) print_line_cursor#12 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc.z print_line_cursor @@ -3079,7 +3064,7 @@ print_ln: { bcc !+ inc.z print_line_cursor+1 !: - // [99] if((byte*) print_line_cursor#0<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + // [97] if((byte*) print_line_cursor#0<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda.z print_line_cursor+1 cmp.z print_char_cursor+1 bcc __b1_from___b1 @@ -3091,55 +3076,55 @@ print_ln: { jmp __breturn // print_ln::@return __breturn: - // [100] return + // [98] return rts } // print_uchar // Print a char as HEX // print_uchar(byte zp($15) b) print_uchar: { - .label __0 = $35 - .label __2 = $36 + .label __0 = $33 + .label __2 = $34 .label b = $15 - // [102] (byte~) print_uchar::$0 ← (byte) print_uchar::b#3 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + // [100] (byte~) print_uchar::$0 ← (byte) print_uchar::b#3 >> (byte) 4 -- vbuz1=vbuz2_ror_4 lda.z b lsr lsr lsr lsr sta.z __0 - // [103] (byte) print_char::ch#1 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + // [101] (byte) print_char::ch#1 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z __0 lda print_hextab,y sta.z print_char.ch - // [104] call print_char + // [102] call print_char // Table of hexadecimal digits - // [133] phi from print_uchar to print_char [phi:print_uchar->print_char] + // [131] phi from print_uchar to print_char [phi:print_uchar->print_char] print_char_from_print_uchar: - // [133] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#84 [phi:print_uchar->print_char#0] -- register_copy - // [133] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_uchar->print_char#1] -- register_copy + // [131] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#84 [phi:print_uchar->print_char#0] -- register_copy + // [131] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_uchar->print_char#1] -- register_copy jsr print_char jmp __b1 // print_uchar::@1 __b1: - // [105] (byte~) print_uchar::$2 ← (byte) print_uchar::b#3 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + // [103] (byte~) print_uchar::$2 ← (byte) print_uchar::b#3 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and.z b sta.z __2 - // [106] (byte) print_char::ch#2 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + // [104] (byte) print_char::ch#2 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z __2 lda print_hextab,y sta.z print_char.ch - // [107] call print_char - // [133] phi from print_uchar::@1 to print_char [phi:print_uchar::@1->print_char] + // [105] call print_char + // [131] phi from print_uchar::@1 to print_char [phi:print_uchar::@1->print_char] print_char_from___b1: - // [133] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#10 [phi:print_uchar::@1->print_char#0] -- register_copy - // [133] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_uchar::@1->print_char#1] -- register_copy + // [131] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#10 [phi:print_uchar::@1->print_char#0] -- register_copy + // [131] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_uchar::@1->print_char#1] -- register_copy jsr print_char jmp __breturn // print_uchar::@return __breturn: - // [108] return + // [106] return rts } // divr16u @@ -3149,72 +3134,72 @@ print_uchar: { // Implemented using simple binary division // divr16u(word zp($18) dividend, word zp($16) rem) divr16u: { - .label __1 = $37 - .label __2 = $38 + .label __1 = $35 + .label __2 = $36 .label rem = $16 .label dividend = $18 .label quotient = $1a .label i = $1c .label return = $1a - .label return_1 = $27 - .label return_2 = $2b - // [110] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + .label return_1 = $25 + .label return_2 = $29 + // [108] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] __b1_from_divr16u: - // [110] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + // [108] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 lda #0 sta.z i - // [110] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 + // [108] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 lda #<0 sta.z quotient lda #>0 sta.z quotient+1 - // [110] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - // [110] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + // [108] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + // [108] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp __b1 - // [110] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + // [108] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] __b1_from___b3: - // [110] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - // [110] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - // [110] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - // [110] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + // [108] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + // [108] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + // [108] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + // [108] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp __b1 // divr16u::@1 __b1: - // [111] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [109] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z rem rol.z rem+1 - // [112] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + // [110] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda.z dividend+1 sta.z __1 - // [113] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 + // [111] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and.z __1 sta.z __2 - // [114] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + // [112] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 lda.z __2 cmp #0 beq __b2_from___b1 jmp __b4 // divr16u::@4 __b4: - // [115] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + // [113] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora.z rem sta.z rem - // [116] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + // [114] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] __b2_from___b1: __b2_from___b4: - // [116] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + // [114] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp __b2 // divr16u::@2 __b2: - // [117] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [115] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z dividend rol.z dividend+1 - // [118] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [116] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z quotient rol.z quotient+1 - // [119] if((word) divr16u::rem#6<(byte) $14-(byte) 1) goto divr16u::@3 -- vwuz1_lt_vbuc1_then_la1 + // [117] if((word) divr16u::rem#6<(byte) $14-(byte) 1) goto divr16u::@3 -- vwuz1_lt_vbuc1_then_la1 lda.z rem+1 bne !+ lda.z rem @@ -3224,12 +3209,12 @@ divr16u: { jmp __b5 // divr16u::@5 __b5: - // [120] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + // [118] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc.z quotient bne !+ inc.z quotient+1 !: - // [121] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (byte) $14-(byte) 1 -- vwuz1=vwuz1_minus_vbuc1 + // [119] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (byte) $14-(byte) 1 -- vwuz1=vwuz1_minus_vbuc1 sec lda.z rem sbc #$14-1 @@ -3237,24 +3222,24 @@ divr16u: { lda.z rem+1 sbc #0 sta.z rem+1 - // [122] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + // [120] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] __b3_from___b2: __b3_from___b5: - // [122] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - // [122] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + // [120] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + // [120] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp __b3 // divr16u::@3 __b3: - // [123] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + // [121] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [124] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + // [122] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp.z i bne __b1_from___b3 jmp __b6 // divr16u::@6 __b6: - // [125] (word) rem16u#0 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + // [123] (word) rem16u#0 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda.z rem sta.z rem16u lda.z rem+1 @@ -3262,7 +3247,7 @@ divr16u: { jmp __breturn // divr16u::@return __breturn: - // [126] return + // [124] return rts } // memset @@ -3273,9 +3258,9 @@ memset: { .label str = print_screen .label end = str+num .label dst = $1d - // [128] phi from memset to memset::@1 [phi:memset->memset::@1] + // [126] phi from memset to memset::@1 [phi:memset->memset::@1] __b1_from_memset: - // [128] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 + // [126] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 lda #str @@ -3283,7 +3268,7 @@ memset: { jmp __b1 // memset::@1 __b1: - // [129] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 + // [127] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z dst+1 cmp #>end bne __b2 @@ -3293,22 +3278,22 @@ memset: { jmp __breturn // memset::@return __breturn: - // [130] return + // [128] return rts // memset::@2 __b2: - // [131] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 + // [129] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 lda #c ldy #0 sta (dst),y - // [132] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [130] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 !: - // [128] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1] + // [126] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1] __b1_from___b2: - // [128] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy + // [126] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy jmp __b1 } // print_char @@ -3316,11 +3301,11 @@ memset: { // print_char(byte zp($1f) ch) print_char: { .label ch = $1f - // [134] *((byte*) print_char_cursor#51) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuz2 + // [132] *((byte*) print_char_cursor#51) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuz2 lda.z ch ldy #0 sta (print_char_cursor),y - // [135] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#51 -- pbuz1=_inc_pbuz1 + // [133] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#51 -- pbuz1=_inc_pbuz1 inc.z print_char_cursor bne !+ inc.z print_char_cursor+1 @@ -3328,7 +3313,7 @@ print_char: { jmp __breturn // print_char::@return __breturn: - // [136] return + // [134] return rts } // File Data @@ -3339,77 +3324,75 @@ Statement [24] (byte*) print_char_cursor#100 ← (byte*) print_line_cursor#0 [ p Statement [40] (byte*) print_char_cursor#104 ← (byte*) print_line_cursor#0 [ main::i#10 print_line_cursor#0 print_uchar::b#2 print_char_cursor#104 ] ( [ main::i#10 print_line_cursor#0 print_uchar::b#2 print_char_cursor#104 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#10 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:21 [ print_uchar::b#3 print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ] -Statement [44] (byte~) main::$27 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#0 main::$27 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$27 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#3 } } ) always clobbers reg byte a -Statement [45] (word) print_uint::w#3 ← *((const word*) main::lintab1 + (byte~) main::$27) [ main::i#10 print_line_cursor#0 print_uint::w#3 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 print_uint::w#3 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#3 } } ) always clobbers reg byte a -Statement [49] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#4 } } ) always clobbers reg byte a -Statement [50] (word) print_uint::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) [ main::i#10 print_line_cursor#0 print_uint::w#4 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 print_uint::w#4 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#4 } } ) always clobbers reg byte a -Statement [54] (byte~) main::$29 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#0 main::$29 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$29 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#5 } } ) always clobbers reg byte a -Statement [55] (word) print_uint::w#5 ← *((const word*) main::lintab3 + (byte~) main::$29) [ main::i#10 print_line_cursor#0 print_uint::w#5 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 print_uint::w#5 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#5 } } ) always clobbers reg byte a -Statement [61] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [62] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [64] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [65] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [66] (word) divr16u::rem#4 ← (word) rem16u#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [68] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [69] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } ) always clobbers reg byte a -Statement [70] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } ) always clobbers reg byte a -Statement [71] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (word) 0 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] ( lin16u_gen:1 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } lin16u_gen:3 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } lin16u_gen:5 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } ) always clobbers reg byte a -Statement [73] if((word) lin16u_gen::i#2<(byte) $14) goto lin16u_gen::@2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } ) always clobbers reg byte a -Statement [75] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } ) always clobbers reg byte a -Statement [76] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } ) always clobbers reg byte a reg byte y -Statement [77] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } ) always clobbers reg byte a -Statement [78] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } ) always clobbers reg byte a -Statement [85] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_str::str#10 print_char_cursor#1 ] ( print_str:9 [ print_str::str#10 print_char_cursor#1 ] { } print_str:13 [ print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:17 [ print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:25 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#100 = print_char_cursor#89 } } print_str:29 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:33 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:43 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:48 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:53 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } ) always clobbers reg byte a reg byte y +Statement [44] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#3 } } ) always clobbers reg byte a +Statement [45] (word) print_uint::w#3 ← *((const word*) main::lintab1 + (byte~) main::$28) [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#3 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#3 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#3 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:34 [ main::$28 ] +Statement [49] (word) print_uint::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#4 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#4 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#4 } } ) always clobbers reg byte a +Statement [53] (word) print_uint::w#5 ← *((const word*) main::lintab3 + (byte~) main::$28) [ main::i#10 print_line_cursor#0 print_uint::w#5 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 print_uint::w#5 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#5 } } ) always clobbers reg byte a +Statement [59] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [60] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [62] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [63] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [64] (word) divr16u::rem#4 ← (word) rem16u#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [66] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [67] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } ) always clobbers reg byte a +Statement [68] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } ) always clobbers reg byte a +Statement [69] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (word) 0 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] ( lin16u_gen:1 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } lin16u_gen:3 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } lin16u_gen:5 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } ) always clobbers reg byte a +Statement [71] if((word) lin16u_gen::i#2<(byte) $14) goto lin16u_gen::@2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } ) always clobbers reg byte a +Statement [73] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } ) always clobbers reg byte a +Statement [74] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } ) always clobbers reg byte a reg byte y +Statement [75] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } ) always clobbers reg byte a +Statement [76] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } ) always clobbers reg byte a +Statement [83] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_str::str#10 print_char_cursor#1 ] ( print_str:9 [ print_str::str#10 print_char_cursor#1 ] { } print_str:13 [ print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:17 [ print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:25 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#100 = print_char_cursor#89 } } print_str:29 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:33 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:43 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:48 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:52 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#10 main::i#1 ] -Statement [87] (byte) print_char::ch#0 ← *((byte*) print_str::str#10) [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] ( print_str:9 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:13 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:17 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:25 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#100 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:29 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:33 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:43 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:48 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:53 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } ) always clobbers reg byte a reg byte y -Statement [98] (byte*) print_line_cursor#0 ← (byte*) print_line_cursor#12 + (byte) $28 [ print_line_cursor#0 print_char_cursor#10 ] ( print_ln:21 [ print_line_cursor#0 print_char_cursor#10 ] { } print_ln:37 [ print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } print_ln:58 [ main::i#10 print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } ) always clobbers reg byte a -Statement [99] if((byte*) print_line_cursor#0<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#0 print_char_cursor#10 ] ( print_ln:21 [ print_line_cursor#0 print_char_cursor#10 ] { } print_ln:37 [ print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } print_ln:58 [ main::i#10 print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } ) always clobbers reg byte a -Statement [102] (byte~) print_uchar::$0 ← (byte) print_uchar::b#3 >> (byte) 4 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] ( print_uchar:41 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:92 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:92 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:92 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:92 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:92 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:92 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:92 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:51::print_uchar:92 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:56::print_uchar:92 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:94 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:94 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:94 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:94 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:94 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:94 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:94 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:51::print_uchar:94 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:56::print_uchar:94 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } ) always clobbers reg byte a -Statement [105] (byte~) print_uchar::$2 ← (byte) print_uchar::b#3 & (byte) $f [ print_char_cursor#10 print_uchar::$2 ] ( print_uchar:41 [ main::i#10 print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:92 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:15::print_uchar:92 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:19::print_uchar:92 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:27::print_uchar:92 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:31::print_uchar:92 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:35::print_uchar:92 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:46::print_uchar:92 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:51::print_uchar:92 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:56::print_uchar:92 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:94 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:15::print_uchar:94 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:19::print_uchar:94 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:27::print_uchar:94 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:31::print_uchar:94 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:35::print_uchar:94 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:46::print_uchar:94 [ main::i#10 print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:51::print_uchar:94 [ main::i#10 print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:56::print_uchar:94 [ main::i#10 print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } ) always clobbers reg byte a -Statement [115] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( lin16u_gen:1::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Removing always clobbered register reg byte y as potential for zp[1]:34 [ main::$28 ] +Statement [85] (byte) print_char::ch#0 ← *((byte*) print_str::str#10) [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] ( print_str:9 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:13 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:17 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:25 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#100 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:29 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:33 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:43 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:48 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:52 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } ) always clobbers reg byte a reg byte y +Statement [96] (byte*) print_line_cursor#0 ← (byte*) print_line_cursor#12 + (byte) $28 [ print_line_cursor#0 print_char_cursor#10 ] ( print_ln:21 [ print_line_cursor#0 print_char_cursor#10 ] { } print_ln:37 [ print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } print_ln:56 [ main::i#10 print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } ) always clobbers reg byte a +Statement [97] if((byte*) print_line_cursor#0<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#0 print_char_cursor#10 ] ( print_ln:21 [ print_line_cursor#0 print_char_cursor#10 ] { } print_ln:37 [ print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } print_ln:56 [ main::i#10 print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } ) always clobbers reg byte a +Statement [100] (byte~) print_uchar::$0 ← (byte) print_uchar::b#3 >> (byte) 4 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] ( print_uchar:41 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:90 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:90 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:90 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:90 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:50::print_uchar:90 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:54::print_uchar:90 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:92 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:92 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:92 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:92 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:92 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:92 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:92 [ main::i#10 print_line_cursor#0 main::$28 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:50::print_uchar:92 [ main::i#10 print_line_cursor#0 main::$28 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:54::print_uchar:92 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } ) always clobbers reg byte a +Statement [103] (byte~) print_uchar::$2 ← (byte) print_uchar::b#3 & (byte) $f [ print_char_cursor#10 print_uchar::$2 ] ( print_uchar:41 [ main::i#10 print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:90 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:15::print_uchar:90 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:19::print_uchar:90 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:27::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:31::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:35::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:46::print_uchar:90 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:50::print_uchar:90 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:54::print_uchar:90 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:92 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:15::print_uchar:92 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:19::print_uchar:92 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:27::print_uchar:92 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:31::print_uchar:92 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:35::print_uchar:92 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:46::print_uchar:92 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:50::print_uchar:92 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:54::print_uchar:92 [ main::i#10 print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } ) always clobbers reg byte a +Statement [113] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( lin16u_gen:1::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:28 [ divr16u::i#2 divr16u::i#1 ] -Statement [119] if((word) divr16u::rem#6<(byte) $14-(byte) 1) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( lin16u_gen:1::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [121] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (byte) $14-(byte) 1 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( lin16u_gen:1::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [125] (word) rem16u#0 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#0 ] ( lin16u_gen:1::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [129] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( print_cls:7::memset:81 [ memset::dst#2 ] { } ) always clobbers reg byte a -Statement [131] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( print_cls:7::memset:81 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y -Statement [134] *((byte*) print_char_cursor#51) ← (byte) print_char::ch#3 [ print_char_cursor#51 ] ( print_str:9::print_char:88 [ print_str::str#10 print_char_cursor#51 ] { { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:13::print_char:88 [ print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:17::print_char:88 [ print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:25::print_char:88 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#100 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:29::print_char:88 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:33::print_char:88 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:43::print_char:88 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:48::print_char:88 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:53::print_char:88 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_uchar:41::print_char:104 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:92::print_char:104 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:92::print_char:104 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:92::print_char:104 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:92::print_char:104 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:92::print_char:104 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:92::print_char:104 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:92::print_char:104 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:51::print_uchar:92::print_char:104 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:56::print_uchar:92::print_char:104 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:94::print_char:104 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:94::print_char:104 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:94::print_char:104 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:94::print_char:104 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:94::print_char:104 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:94::print_char:104 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:94::print_char:104 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:51::print_uchar:94::print_char:104 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:56::print_uchar:94::print_char:104 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uchar:41::print_char:107 [ main::i#10 print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:92::print_char:107 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:15::print_uchar:92::print_char:107 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:19::print_uchar:92::print_char:107 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:27::print_uchar:92::print_char:107 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:31::print_uchar:92::print_char:107 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:35::print_uchar:92::print_char:107 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:46::print_uchar:92::print_char:107 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:51::print_uchar:92::print_char:107 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:56::print_uchar:92::print_char:107 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:94::print_char:107 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:15::print_uchar:94::print_char:107 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:19::print_uchar:94::print_char:107 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:27::print_uchar:94::print_char:107 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:31::print_uchar:94::print_char:107 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:35::print_uchar:94::print_char:107 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:46::print_uchar:94::print_char:107 [ main::i#10 print_line_cursor#0 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:51::print_uchar:94::print_char:107 [ main::i#10 print_line_cursor#0 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:56::print_uchar:94::print_char:107 [ main::i#10 print_line_cursor#0 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } ) always clobbers reg byte y +Statement [117] if((word) divr16u::rem#6<(byte) $14-(byte) 1) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( lin16u_gen:1::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [119] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (byte) $14-(byte) 1 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( lin16u_gen:1::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [123] (word) rem16u#0 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#0 ] ( lin16u_gen:1::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [127] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( print_cls:7::memset:79 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [129] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( print_cls:7::memset:79 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [132] *((byte*) print_char_cursor#51) ← (byte) print_char::ch#3 [ print_char_cursor#51 ] ( print_str:9::print_char:86 [ print_str::str#10 print_char_cursor#51 ] { { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:13::print_char:86 [ print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:17::print_char:86 [ print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:25::print_char:86 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#100 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:29::print_char:86 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:33::print_char:86 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:43::print_char:86 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:48::print_char:86 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:52::print_char:86 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_uchar:41::print_char:102 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:90::print_char:102 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:90::print_char:102 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:90::print_char:102 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:90::print_char:102 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:90::print_char:102 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:90::print_char:102 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:90::print_char:102 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:50::print_uchar:90::print_char:102 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:54::print_uchar:90::print_char:102 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:92::print_char:102 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:92::print_char:102 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:92::print_char:102 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:92::print_char:102 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:92::print_char:102 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:92::print_char:102 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:92::print_char:102 [ main::i#10 print_line_cursor#0 main::$28 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:50::print_uchar:92::print_char:102 [ main::i#10 print_line_cursor#0 main::$28 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:54::print_uchar:92::print_char:102 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uchar:41::print_char:105 [ main::i#10 print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:90::print_char:105 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:15::print_uchar:90::print_char:105 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:19::print_uchar:90::print_char:105 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:27::print_uchar:90::print_char:105 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:31::print_uchar:90::print_char:105 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:35::print_uchar:90::print_char:105 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:46::print_uchar:90::print_char:105 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:50::print_uchar:90::print_char:105 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:54::print_uchar:90::print_char:105 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:92::print_char:105 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:15::print_uchar:92::print_char:105 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:19::print_uchar:92::print_char:105 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:27::print_uchar:92::print_char:105 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:31::print_uchar:92::print_char:105 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:35::print_uchar:92::print_char:105 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:46::print_uchar:92::print_char:105 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:50::print_uchar:92::print_char:105 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:54::print_uchar:92::print_char:105 [ main::i#10 print_line_cursor#0 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:21 [ print_uchar::b#3 print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ] Statement [24] (byte*) print_char_cursor#100 ← (byte*) print_line_cursor#0 [ print_char_cursor#100 print_line_cursor#0 ] ( [ print_char_cursor#100 print_line_cursor#0 ] { { print_char_cursor#100 = print_char_cursor#89 } } ) always clobbers reg byte a Statement [40] (byte*) print_char_cursor#104 ← (byte*) print_line_cursor#0 [ main::i#10 print_line_cursor#0 print_uchar::b#2 print_char_cursor#104 ] ( [ main::i#10 print_line_cursor#0 print_uchar::b#2 print_char_cursor#104 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 } } ) always clobbers reg byte a -Statement [44] (byte~) main::$27 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#0 main::$27 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$27 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#3 } } ) always clobbers reg byte a -Statement [45] (word) print_uint::w#3 ← *((const word*) main::lintab1 + (byte~) main::$27) [ main::i#10 print_line_cursor#0 print_uint::w#3 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 print_uint::w#3 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#3 } } ) always clobbers reg byte a -Statement [49] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#4 } } ) always clobbers reg byte a -Statement [50] (word) print_uint::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) [ main::i#10 print_line_cursor#0 print_uint::w#4 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 print_uint::w#4 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#4 } } ) always clobbers reg byte a -Statement [54] (byte~) main::$29 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#0 main::$29 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$29 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#5 } } ) always clobbers reg byte a -Statement [55] (word) print_uint::w#5 ← *((const word*) main::lintab3 + (byte~) main::$29) [ main::i#10 print_line_cursor#0 print_uint::w#5 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 print_uint::w#5 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#5 } } ) always clobbers reg byte a -Statement [61] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [62] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [64] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a -Statement [65] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [66] (word) divr16u::rem#4 ← (word) rem16u#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [68] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [69] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } ) always clobbers reg byte a -Statement [70] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } ) always clobbers reg byte a -Statement [71] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (word) 0 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] ( lin16u_gen:1 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } lin16u_gen:3 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } lin16u_gen:5 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } ) always clobbers reg byte a -Statement [73] if((word) lin16u_gen::i#2<(byte) $14) goto lin16u_gen::@2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } ) always clobbers reg byte a -Statement [75] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } ) always clobbers reg byte a -Statement [76] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } ) always clobbers reg byte a reg byte y -Statement [77] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } ) always clobbers reg byte a -Statement [78] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } ) always clobbers reg byte a -Statement [85] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_str::str#10 print_char_cursor#1 ] ( print_str:9 [ print_str::str#10 print_char_cursor#1 ] { } print_str:13 [ print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:17 [ print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:25 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#100 = print_char_cursor#89 } } print_str:29 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:33 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:43 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:48 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:53 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } ) always clobbers reg byte a reg byte y -Statement [87] (byte) print_char::ch#0 ← *((byte*) print_str::str#10) [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] ( print_str:9 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:13 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:17 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:25 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#100 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:29 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:33 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:43 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:48 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:53 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } ) always clobbers reg byte a reg byte y -Statement [98] (byte*) print_line_cursor#0 ← (byte*) print_line_cursor#12 + (byte) $28 [ print_line_cursor#0 print_char_cursor#10 ] ( print_ln:21 [ print_line_cursor#0 print_char_cursor#10 ] { } print_ln:37 [ print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } print_ln:58 [ main::i#10 print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } ) always clobbers reg byte a -Statement [99] if((byte*) print_line_cursor#0<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#0 print_char_cursor#10 ] ( print_ln:21 [ print_line_cursor#0 print_char_cursor#10 ] { } print_ln:37 [ print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } print_ln:58 [ main::i#10 print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } ) always clobbers reg byte a -Statement [102] (byte~) print_uchar::$0 ← (byte) print_uchar::b#3 >> (byte) 4 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] ( print_uchar:41 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:92 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:92 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:92 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:92 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:92 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:92 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:92 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:51::print_uchar:92 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:56::print_uchar:92 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:94 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:94 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:94 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:94 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:94 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:94 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:94 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:51::print_uchar:94 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:56::print_uchar:94 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } ) always clobbers reg byte a -Statement [105] (byte~) print_uchar::$2 ← (byte) print_uchar::b#3 & (byte) $f [ print_char_cursor#10 print_uchar::$2 ] ( print_uchar:41 [ main::i#10 print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:92 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:15::print_uchar:92 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:19::print_uchar:92 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:27::print_uchar:92 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:31::print_uchar:92 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:35::print_uchar:92 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:46::print_uchar:92 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:51::print_uchar:92 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:56::print_uchar:92 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:94 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:15::print_uchar:94 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:19::print_uchar:94 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:27::print_uchar:94 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:31::print_uchar:94 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:35::print_uchar:94 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:46::print_uchar:94 [ main::i#10 print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:51::print_uchar:94 [ main::i#10 print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:56::print_uchar:94 [ main::i#10 print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } ) always clobbers reg byte a -Statement [115] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( lin16u_gen:1::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [119] if((word) divr16u::rem#6<(byte) $14-(byte) 1) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( lin16u_gen:1::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [121] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (byte) $14-(byte) 1 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( lin16u_gen:1::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [125] (word) rem16u#0 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#0 ] ( lin16u_gen:1::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:63 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:67 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a -Statement [129] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( print_cls:7::memset:81 [ memset::dst#2 ] { } ) always clobbers reg byte a -Statement [131] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( print_cls:7::memset:81 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y -Statement [134] *((byte*) print_char_cursor#51) ← (byte) print_char::ch#3 [ print_char_cursor#51 ] ( print_str:9::print_char:88 [ print_str::str#10 print_char_cursor#51 ] { { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:13::print_char:88 [ print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:17::print_char:88 [ print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:25::print_char:88 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#100 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:29::print_char:88 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:33::print_char:88 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:43::print_char:88 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:48::print_char:88 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:53::print_char:88 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_uchar:41::print_char:104 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:92::print_char:104 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:92::print_char:104 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:92::print_char:104 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:92::print_char:104 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:92::print_char:104 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:92::print_char:104 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:92::print_char:104 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:51::print_uchar:92::print_char:104 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:56::print_uchar:92::print_char:104 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:94::print_char:104 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:94::print_char:104 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:94::print_char:104 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:94::print_char:104 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:94::print_char:104 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:94::print_char:104 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:94::print_char:104 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:51::print_uchar:94::print_char:104 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:56::print_uchar:94::print_char:104 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uchar:41::print_char:107 [ main::i#10 print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:92::print_char:107 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:15::print_uchar:92::print_char:107 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:19::print_uchar:92::print_char:107 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:27::print_uchar:92::print_char:107 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:31::print_uchar:92::print_char:107 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:35::print_uchar:92::print_char:107 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:46::print_uchar:92::print_char:107 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:51::print_uchar:92::print_char:107 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:56::print_uchar:92::print_char:107 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:94::print_char:107 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:15::print_uchar:94::print_char:107 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:19::print_uchar:94::print_char:107 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:27::print_uchar:94::print_char:107 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:31::print_uchar:94::print_char:107 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:35::print_uchar:94::print_char:107 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:46::print_uchar:94::print_char:107 [ main::i#10 print_line_cursor#0 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:51::print_uchar:94::print_char:107 [ main::i#10 print_line_cursor#0 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:56::print_uchar:94::print_char:107 [ main::i#10 print_line_cursor#0 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } ) always clobbers reg byte y +Statement [44] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#3 } } ) always clobbers reg byte a +Statement [45] (word) print_uint::w#3 ← *((const word*) main::lintab1 + (byte~) main::$28) [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#3 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#3 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#3 } } ) always clobbers reg byte a +Statement [49] (word) print_uint::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#4 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#4 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#4 } } ) always clobbers reg byte a +Statement [53] (word) print_uint::w#5 ← *((const word*) main::lintab3 + (byte~) main::$28) [ main::i#10 print_line_cursor#0 print_uint::w#5 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 print_uint::w#5 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#5 } } ) always clobbers reg byte a +Statement [59] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [60] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [62] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a +Statement [63] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [64] (word) divr16u::rem#4 ← (word) rem16u#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [66] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [67] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } ) always clobbers reg byte a +Statement [68] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } ) always clobbers reg byte a +Statement [69] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (word) 0 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] ( lin16u_gen:1 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } lin16u_gen:3 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } lin16u_gen:5 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } ) always clobbers reg byte a +Statement [71] if((word) lin16u_gen::i#2<(byte) $14) goto lin16u_gen::@2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } ) always clobbers reg byte a +Statement [73] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$6 ] { } ) always clobbers reg byte a +Statement [74] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } ) always clobbers reg byte a reg byte y +Statement [75] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } ) always clobbers reg byte a +Statement [76] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } ) always clobbers reg byte a +Statement [83] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 [ print_str::str#10 print_char_cursor#1 ] ( print_str:9 [ print_str::str#10 print_char_cursor#1 ] { } print_str:13 [ print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:17 [ print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:25 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#100 = print_char_cursor#89 } } print_str:29 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:33 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:43 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:48 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:52 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } ) always clobbers reg byte a reg byte y +Statement [85] (byte) print_char::ch#0 ← *((byte*) print_str::str#10) [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] ( print_str:9 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:13 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:17 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:25 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#100 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:29 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:33 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:43 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:48 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:52 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } ) always clobbers reg byte a reg byte y +Statement [96] (byte*) print_line_cursor#0 ← (byte*) print_line_cursor#12 + (byte) $28 [ print_line_cursor#0 print_char_cursor#10 ] ( print_ln:21 [ print_line_cursor#0 print_char_cursor#10 ] { } print_ln:37 [ print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } print_ln:56 [ main::i#10 print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } ) always clobbers reg byte a +Statement [97] if((byte*) print_line_cursor#0<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#0 print_char_cursor#10 ] ( print_ln:21 [ print_line_cursor#0 print_char_cursor#10 ] { } print_ln:37 [ print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } print_ln:56 [ main::i#10 print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } ) always clobbers reg byte a +Statement [100] (byte~) print_uchar::$0 ← (byte) print_uchar::b#3 >> (byte) 4 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] ( print_uchar:41 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:90 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:90 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:90 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:90 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:50::print_uchar:90 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:54::print_uchar:90 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:92 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:92 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:92 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:92 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:92 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:92 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:92 [ main::i#10 print_line_cursor#0 main::$28 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:50::print_uchar:92 [ main::i#10 print_line_cursor#0 main::$28 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:54::print_uchar:92 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } ) always clobbers reg byte a +Statement [103] (byte~) print_uchar::$2 ← (byte) print_uchar::b#3 & (byte) $f [ print_char_cursor#10 print_uchar::$2 ] ( print_uchar:41 [ main::i#10 print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:90 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:15::print_uchar:90 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:19::print_uchar:90 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:27::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:31::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:35::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:46::print_uchar:90 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:50::print_uchar:90 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:54::print_uchar:90 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:92 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:15::print_uchar:92 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:19::print_uchar:92 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:27::print_uchar:92 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:31::print_uchar:92 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:35::print_uchar:92 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:46::print_uchar:92 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:50::print_uchar:92 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:54::print_uchar:92 [ main::i#10 print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } ) always clobbers reg byte a +Statement [113] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( lin16u_gen:1::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [117] if((word) divr16u::rem#6<(byte) $14-(byte) 1) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( lin16u_gen:1::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [119] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (byte) $14-(byte) 1 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( lin16u_gen:1::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [123] (word) rem16u#0 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#0 ] ( lin16u_gen:1::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a +Statement [127] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( print_cls:7::memset:79 [ memset::dst#2 ] { } ) always clobbers reg byte a +Statement [129] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( print_cls:7::memset:79 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [132] *((byte*) print_char_cursor#51) ← (byte) print_char::ch#3 [ print_char_cursor#51 ] ( print_str:9::print_char:86 [ print_str::str#10 print_char_cursor#51 ] { { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:13::print_char:86 [ print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:17::print_char:86 [ print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:25::print_char:86 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#100 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:29::print_char:86 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:33::print_char:86 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:43::print_char:86 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:48::print_char:86 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:52::print_char:86 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_uchar:41::print_char:102 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:90::print_char:102 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:90::print_char:102 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:90::print_char:102 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:90::print_char:102 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:90::print_char:102 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:90::print_char:102 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:90::print_char:102 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:50::print_uchar:90::print_char:102 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:54::print_uchar:90::print_char:102 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:92::print_char:102 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:92::print_char:102 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:92::print_char:102 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:92::print_char:102 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:92::print_char:102 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:92::print_char:102 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:92::print_char:102 [ main::i#10 print_line_cursor#0 main::$28 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:50::print_uchar:92::print_char:102 [ main::i#10 print_line_cursor#0 main::$28 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:54::print_uchar:92::print_char:102 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uchar:41::print_char:105 [ main::i#10 print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:90::print_char:105 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:15::print_uchar:90::print_char:105 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:19::print_uchar:90::print_char:105 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:27::print_uchar:90::print_char:105 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:31::print_uchar:90::print_char:105 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:35::print_uchar:90::print_char:105 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:46::print_uchar:90::print_char:105 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:50::print_uchar:90::print_char:105 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:54::print_uchar:90::print_char:105 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:92::print_char:105 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:15::print_uchar:92::print_char:105 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:19::print_uchar:92::print_char:105 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:27::print_uchar:92::print_char:105 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:31::print_uchar:92::print_char:105 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:35::print_uchar:92::print_char:105 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:46::print_uchar:92::print_char:105 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:50::print_uchar:92::print_char:105 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:54::print_uchar:92::print_char:105 [ main::i#10 print_line_cursor#0 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } ) always clobbers reg byte y Potential registers zp[1]:2 [ main::i#10 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ lin16u_gen::max#3 ] : zp[2]:3 , Potential registers zp[2]:5 [ lin16u_gen::min#3 ] : zp[2]:5 , @@ -3427,72 +3410,72 @@ Potential registers zp[1]:28 [ divr16u::i#2 divr16u::i#1 ] : zp[1]:28 , reg byte Potential registers zp[2]:29 [ memset::dst#2 memset::dst#1 ] : zp[2]:29 , Potential registers zp[1]:31 [ print_char::ch#3 print_char::ch#0 print_char::ch#1 print_char::ch#2 ] : zp[1]:31 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:32 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 ] : zp[2]:32 , -Potential registers zp[1]:34 [ main::$27 ] : zp[1]:34 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:35 [ main::$28 ] : zp[1]:35 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:36 [ main::$29 ] : zp[1]:36 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:37 [ lin16u_gen::ampl#0 ] : zp[2]:37 , -Potential registers zp[2]:39 [ divr16u::return#2 ] : zp[2]:39 , -Potential registers zp[2]:41 [ lin16u_gen::stepi#0 ] : zp[2]:41 , -Potential registers zp[2]:43 [ divr16u::return#3 ] : zp[2]:43 , -Potential registers zp[2]:45 [ lin16u_gen::stepf#0 ] : zp[2]:45 , -Potential registers zp[4]:47 [ lin16u_gen::step#0 ] : zp[4]:47 , -Potential registers zp[2]:51 [ lin16u_gen::$6 ] : zp[2]:51 , -Potential registers zp[1]:53 [ print_uchar::$0 ] : zp[1]:53 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:54 [ print_uchar::$2 ] : zp[1]:54 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:55 [ divr16u::$1 ] : zp[1]:55 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:56 [ divr16u::$2 ] : zp[1]:56 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:57 [ rem16u#0 ] : zp[2]:57 , +Potential registers zp[1]:34 [ main::$28 ] : zp[1]:34 , reg byte x , +Potential registers zp[2]:35 [ lin16u_gen::ampl#0 ] : zp[2]:35 , +Potential registers zp[2]:37 [ divr16u::return#2 ] : zp[2]:37 , +Potential registers zp[2]:39 [ lin16u_gen::stepi#0 ] : zp[2]:39 , +Potential registers zp[2]:41 [ divr16u::return#3 ] : zp[2]:41 , +Potential registers zp[2]:43 [ lin16u_gen::stepf#0 ] : zp[2]:43 , +Potential registers zp[4]:45 [ lin16u_gen::step#0 ] : zp[4]:45 , +Potential registers zp[2]:49 [ lin16u_gen::$6 ] : zp[2]:49 , +Potential registers zp[1]:51 [ print_uchar::$0 ] : zp[1]:51 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:52 [ print_uchar::$2 ] : zp[1]:52 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:53 [ divr16u::$1 ] : zp[1]:53 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:54 [ divr16u::$2 ] : zp[1]:54 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:55 [ rem16u#0 ] : zp[2]:55 , REGISTER UPLIFT SCOPES Uplift Scope [print_char] 136,010: zp[1]:31 [ print_char::ch#3 print_char::ch#0 print_char::ch#1 print_char::ch#2 ] -Uplift Scope [] 110,599.68: zp[2]:32 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 ] 20,967.72: zp[2]:19 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#0 ] 22.4: zp[2]:57 [ rem16u#0 ] +Uplift Scope [] 110,659.54: zp[2]:32 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 ] 21,007.24: zp[2]:19 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#0 ] 22.4: zp[2]:55 [ rem16u#0 ] Uplift Scope [print_str] 30,129.25: zp[2]:15 [ print_str::str#10 print_str::str#13 print_str::str#0 ] -Uplift Scope [divr16u] 9,027.42: zp[2]:22 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 3,184.89: zp[2]:26 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 2,002: zp[1]:55 [ divr16u::$1 ] 2,002: zp[1]:56 [ divr16u::$2 ] 1,655.5: zp[1]:28 [ divr16u::i#2 divr16u::i#1 ] 827.68: zp[2]:24 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] 22: zp[2]:39 [ divr16u::return#2 ] 22: zp[2]:43 [ divr16u::return#3 ] -Uplift Scope [print_uchar] 2,002: zp[1]:53 [ print_uchar::$0 ] 2,002: zp[1]:54 [ print_uchar::$2 ] 968.75: zp[1]:21 [ print_uchar::b#3 print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ] +Uplift Scope [divr16u] 9,027.42: zp[2]:22 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 3,184.89: zp[2]:26 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 2,002: zp[1]:53 [ divr16u::$1 ] 2,002: zp[1]:54 [ divr16u::$2 ] 1,655.5: zp[1]:28 [ divr16u::i#2 divr16u::i#1 ] 827.68: zp[2]:24 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] 22: zp[2]:37 [ divr16u::return#2 ] 22: zp[2]:41 [ divr16u::return#3 ] +Uplift Scope [print_uchar] 2,002: zp[1]:51 [ print_uchar::$0 ] 2,002: zp[1]:52 [ print_uchar::$2 ] 968.75: zp[1]:21 [ print_uchar::b#3 print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ] Uplift Scope [memset] 3,336.67: zp[2]:29 [ memset::dst#2 memset::dst#1 ] -Uplift Scope [lin16u_gen] 252.5: zp[2]:7 [ lin16u_gen::i#2 lin16u_gen::i#1 ] 202: zp[2]:51 [ lin16u_gen::$6 ] 167.83: zp[4]:9 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] 164.72: zp[2]:13 [ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ] 22: zp[2]:37 [ lin16u_gen::ampl#0 ] 22: zp[2]:45 [ lin16u_gen::stepf#0 ] 12.44: zp[4]:47 [ lin16u_gen::step#0 ] 11: zp[2]:3 [ lin16u_gen::max#3 ] 4.4: zp[2]:41 [ lin16u_gen::stepi#0 ] 2: zp[2]:5 [ lin16u_gen::min#3 ] +Uplift Scope [lin16u_gen] 252.5: zp[2]:7 [ lin16u_gen::i#2 lin16u_gen::i#1 ] 202: zp[2]:49 [ lin16u_gen::$6 ] 167.83: zp[4]:9 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] 164.72: zp[2]:13 [ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ] 22: zp[2]:35 [ lin16u_gen::ampl#0 ] 22: zp[2]:43 [ lin16u_gen::stepf#0 ] 12.44: zp[4]:45 [ lin16u_gen::step#0 ] 11: zp[2]:3 [ lin16u_gen::max#3 ] 4.4: zp[2]:39 [ lin16u_gen::stepi#0 ] 2: zp[2]:5 [ lin16u_gen::min#3 ] Uplift Scope [print_uint] 144.33: zp[2]:17 [ print_uint::w#10 print_uint::w#3 print_uint::w#4 print_uint::w#5 ] -Uplift Scope [main] 25.5: zp[1]:2 [ main::i#10 main::i#1 ] 22: zp[1]:34 [ main::$27 ] 22: zp[1]:35 [ main::$28 ] 22: zp[1]:36 [ main::$29 ] +Uplift Scope [main] 24.75: zp[1]:2 [ main::i#10 main::i#1 ] 4.89: zp[1]:34 [ main::$28 ] Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] -Uplifting [print_char] best 14032 combination reg byte a [ print_char::ch#3 print_char::ch#0 print_char::ch#1 print_char::ch#2 ] -Uplifting [] best 14032 combination zp[2]:32 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 ] zp[2]:19 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#0 ] zp[2]:57 [ rem16u#0 ] -Uplifting [print_str] best 14032 combination zp[2]:15 [ print_str::str#10 print_str::str#13 print_str::str#0 ] -Uplifting [divr16u] best 13822 combination zp[2]:22 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:26 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[2]:24 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] zp[2]:39 [ divr16u::return#2 ] zp[2]:43 [ divr16u::return#3 ] -Uplifting [print_uchar] best 13774 combination reg byte a [ print_uchar::$0 ] reg byte x [ print_uchar::$2 ] reg byte x [ print_uchar::b#3 print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ] -Uplifting [memset] best 13774 combination zp[2]:29 [ memset::dst#2 memset::dst#1 ] -Uplifting [lin16u_gen] best 13774 combination zp[2]:7 [ lin16u_gen::i#2 lin16u_gen::i#1 ] zp[2]:51 [ lin16u_gen::$6 ] zp[4]:9 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] zp[2]:13 [ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ] zp[2]:37 [ lin16u_gen::ampl#0 ] zp[2]:45 [ lin16u_gen::stepf#0 ] zp[4]:47 [ lin16u_gen::step#0 ] zp[2]:3 [ lin16u_gen::max#3 ] zp[2]:41 [ lin16u_gen::stepi#0 ] zp[2]:5 [ lin16u_gen::min#3 ] -Uplifting [print_uint] best 13774 combination zp[2]:17 [ print_uint::w#10 print_uint::w#3 print_uint::w#4 print_uint::w#5 ] -Uplifting [main] best 13654 combination zp[1]:2 [ main::i#10 main::i#1 ] reg byte a [ main::$27 ] reg byte a [ main::$28 ] reg byte a [ main::$29 ] -Limited combination testing to 100 combinations of 128 possible. -Uplifting [RADIX] best 13654 combination -Uplifting [print_ln] best 13654 combination -Uplifting [print_cls] best 13654 combination +Uplifting [print_char] best 13872 combination reg byte a [ print_char::ch#3 print_char::ch#0 print_char::ch#1 print_char::ch#2 ] +Uplifting [] best 13872 combination zp[2]:32 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 ] zp[2]:19 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#0 ] zp[2]:55 [ rem16u#0 ] +Uplifting [print_str] best 13872 combination zp[2]:15 [ print_str::str#10 print_str::str#13 print_str::str#0 ] +Uplifting [divr16u] best 13662 combination zp[2]:22 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:26 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[2]:24 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] zp[2]:37 [ divr16u::return#2 ] zp[2]:41 [ divr16u::return#3 ] +Uplifting [print_uchar] best 13614 combination reg byte a [ print_uchar::$0 ] reg byte x [ print_uchar::$2 ] reg byte x [ print_uchar::b#3 print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ] +Uplifting [memset] best 13614 combination zp[2]:29 [ memset::dst#2 memset::dst#1 ] +Uplifting [lin16u_gen] best 13614 combination zp[2]:7 [ lin16u_gen::i#2 lin16u_gen::i#1 ] zp[2]:49 [ lin16u_gen::$6 ] zp[4]:9 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] zp[2]:13 [ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ] zp[2]:35 [ lin16u_gen::ampl#0 ] zp[2]:43 [ lin16u_gen::stepf#0 ] zp[4]:45 [ lin16u_gen::step#0 ] zp[2]:3 [ lin16u_gen::max#3 ] zp[2]:39 [ lin16u_gen::stepi#0 ] zp[2]:5 [ lin16u_gen::min#3 ] +Uplifting [print_uint] best 13614 combination zp[2]:17 [ print_uint::w#10 print_uint::w#3 print_uint::w#4 print_uint::w#5 ] +Uplifting [main] best 13614 combination zp[1]:2 [ main::i#10 main::i#1 ] zp[1]:34 [ main::$28 ] +Uplifting [RADIX] best 13614 combination +Uplifting [print_ln] best 13614 combination +Uplifting [print_cls] best 13614 combination Attempting to uplift remaining variables inzp[1]:2 [ main::i#10 main::i#1 ] -Uplifting [main] best 13654 combination zp[1]:2 [ main::i#10 main::i#1 ] -Coalescing zero page register [ zp[2]:22 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp[2]:57 [ rem16u#0 ] ] - score: 2 -Coalescing zero page register [ zp[2]:3 [ lin16u_gen::max#3 ] ] with [ zp[2]:37 [ lin16u_gen::ampl#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:26 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp[2]:39 [ divr16u::return#2 ] ] - score: 1 -Coalescing zero page register [ zp[2]:26 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp[2]:43 [ divr16u::return#3 ] ] - score: 1 +Uplifting [main] best 13614 combination zp[1]:2 [ main::i#10 main::i#1 ] +Attempting to uplift remaining variables inzp[1]:34 [ main::$28 ] +Uplifting [main] best 13614 combination zp[1]:34 [ main::$28 ] +Coalescing zero page register [ zp[2]:22 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp[2]:55 [ rem16u#0 ] ] - score: 2 +Coalescing zero page register [ zp[2]:3 [ lin16u_gen::max#3 ] ] with [ zp[2]:35 [ lin16u_gen::ampl#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:26 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp[2]:37 [ divr16u::return#2 ] ] - score: 1 +Coalescing zero page register [ zp[2]:26 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp[2]:41 [ divr16u::return#3 ] ] - score: 1 Coalescing zero page register [ zp[2]:3 [ lin16u_gen::max#3 lin16u_gen::ampl#0 ] ] with [ zp[2]:24 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:26 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp[2]:45 [ lin16u_gen::stepf#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:26 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp[2]:43 [ lin16u_gen::stepf#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:15 [ print_str::str#10 print_str::str#13 print_str::str#0 ] ] with [ zp[2]:3 [ lin16u_gen::max#3 lin16u_gen::ampl#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] ] Coalescing zero page register [ zp[2]:17 [ print_uint::w#10 print_uint::w#3 print_uint::w#4 print_uint::w#5 ] ] with [ zp[2]:5 [ lin16u_gen::min#3 ] ] Coalescing zero page register [ zp[2]:19 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#0 ] ] with [ zp[2]:7 [ lin16u_gen::i#2 lin16u_gen::i#1 ] ] Coalescing zero page register [ zp[2]:29 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:13 [ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ] ] Coalescing zero page register [ zp[2]:32 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 ] ] with [ zp[2]:26 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 lin16u_gen::stepf#0 ] ] -Coalescing zero page register [ zp[2]:51 [ lin16u_gen::$6 ] ] with [ zp[2]:22 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 ] ] +Coalescing zero page register [ zp[2]:49 [ lin16u_gen::$6 ] ] with [ zp[2]:22 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 ] ] Allocated (was zp[4]:9) zp[4]:3 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] Allocated (was zp[2]:15) zp[2]:7 [ print_str::str#10 print_str::str#13 print_str::str#0 lin16u_gen::max#3 lin16u_gen::ampl#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] Allocated (was zp[2]:17) zp[2]:9 [ print_uint::w#10 print_uint::w#3 print_uint::w#4 print_uint::w#5 lin16u_gen::min#3 ] Allocated (was zp[2]:19) zp[2]:11 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#0 lin16u_gen::i#2 lin16u_gen::i#1 ] Allocated (was zp[2]:29) zp[2]:13 [ memset::dst#2 memset::dst#1 lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ] Allocated (was zp[2]:32) zp[2]:15 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 lin16u_gen::stepf#0 ] -Allocated (was zp[2]:41) zp[2]:17 [ lin16u_gen::stepi#0 ] -Allocated (was zp[4]:47) zp[4]:19 [ lin16u_gen::step#0 ] -Allocated (was zp[2]:51) zp[2]:23 [ lin16u_gen::$6 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 ] +Allocated (was zp[1]:34) zp[1]:17 [ main::$28 ] +Allocated (was zp[2]:39) zp[2]:18 [ lin16u_gen::stepi#0 ] +Allocated (was zp[4]:45) zp[4]:20 [ lin16u_gen::step#0 ] +Allocated (was zp[2]:49) zp[2]:24 [ lin16u_gen::$6 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -3509,26 +3492,27 @@ ASSEMBLER BEFORE OPTIMIZATION .const SIZEOF_WORD = 2 .label print_screen = $400 // Remainder after unsigned 16-bit division - .label rem16u = $17 + .label rem16u = $18 .label print_char_cursor = $f .label print_line_cursor = $b // main main: { + .label __28 = $11 .label i = 2 // [1] call lin16u_gen - // [60] phi from main to lin16u_gen [phi:main->lin16u_gen] + // [58] phi from main to lin16u_gen [phi:main->lin16u_gen] lin16u_gen_from_main: - // [60] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab1 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1 + // [58] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab1 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab1 sta.z lin16u_gen.lintab+1 - // [60] phi (word) lin16u_gen::min#3 = (word) $22d [phi:main->lin16u_gen#1] -- vwuz1=vwuc1 + // [58] phi (word) lin16u_gen::min#3 = (word) $22d [phi:main->lin16u_gen#1] -- vwuz1=vwuc1 lda #<$22d sta.z lin16u_gen.min lda #>$22d sta.z lin16u_gen.min+1 - // [60] phi (word) lin16u_gen::max#3 = (word) $7461 [phi:main->lin16u_gen#2] -- vwuz1=vwuc1 + // [58] phi (word) lin16u_gen::max#3 = (word) $7461 [phi:main->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$7461 sta.z lin16u_gen.max lda #>$7461 @@ -3540,19 +3524,19 @@ main: { // main::@4 __b4: // [3] call lin16u_gen - // [60] phi from main::@4 to lin16u_gen [phi:main::@4->lin16u_gen] + // [58] phi from main::@4 to lin16u_gen [phi:main::@4->lin16u_gen] lin16u_gen_from___b4: - // [60] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab2 [phi:main::@4->lin16u_gen#0] -- pwuz1=pwuc1 + // [58] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab2 [phi:main::@4->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab2 sta.z lin16u_gen.lintab+1 - // [60] phi (word) lin16u_gen::min#3 = (word) $79cb [phi:main::@4->lin16u_gen#1] -- vwuz1=vwuc1 + // [58] phi (word) lin16u_gen::min#3 = (word) $79cb [phi:main::@4->lin16u_gen#1] -- vwuz1=vwuc1 lda #<$79cb sta.z lin16u_gen.min lda #>$79cb sta.z lin16u_gen.min+1 - // [60] phi (word) lin16u_gen::max#3 = (word) $f781 [phi:main::@4->lin16u_gen#2] -- vwuz1=vwuc1 + // [58] phi (word) lin16u_gen::max#3 = (word) $f781 [phi:main::@4->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$f781 sta.z lin16u_gen.max lda #>$f781 @@ -3564,19 +3548,19 @@ main: { // main::@5 __b5: // [5] call lin16u_gen - // [60] phi from main::@5 to lin16u_gen [phi:main::@5->lin16u_gen] + // [58] phi from main::@5 to lin16u_gen [phi:main::@5->lin16u_gen] lin16u_gen_from___b5: - // [60] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab3 [phi:main::@5->lin16u_gen#0] -- pwuz1=pwuc1 + // [58] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab3 [phi:main::@5->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab3 sta.z lin16u_gen.lintab+1 - // [60] phi (word) lin16u_gen::min#3 = (byte) 0 [phi:main::@5->lin16u_gen#1] -- vwuz1=vbuc1 + // [58] phi (word) lin16u_gen::min#3 = (byte) 0 [phi:main::@5->lin16u_gen#1] -- vwuz1=vbuc1 lda #<0 sta.z lin16u_gen.min lda #>0 sta.z lin16u_gen.min+1 - // [60] phi (word) lin16u_gen::max#3 = (word) $6488 [phi:main::@5->lin16u_gen#2] -- vwuz1=vwuc1 + // [58] phi (word) lin16u_gen::max#3 = (word) $6488 [phi:main::@5->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$6488 sta.z lin16u_gen.max lda #>$6488 @@ -3588,7 +3572,7 @@ main: { // main::@6 __b6: // [7] call print_cls - // [80] phi from main::@6 to print_cls [phi:main::@6->print_cls] + // [78] phi from main::@6 to print_cls [phi:main::@6->print_cls] print_cls_from___b6: jsr print_cls // [8] phi from main::@6 to main::@7 [phi:main::@6->main::@7] @@ -3597,14 +3581,14 @@ main: { // main::@7 __b7: // [9] call print_str - // [83] phi from main::@7 to print_str [phi:main::@7->print_str] + // [81] phi from main::@7 to print_str [phi:main::@7->print_str] print_str_from___b7: - // [83] phi (byte*) print_char_cursor#89 = (const byte*) print_screen#0 [phi:main::@7->print_str#0] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (const byte*) print_screen#0 [phi:main::@7->print_str#0] -- pbuz1=pbuc1 lda #print_screen sta.z print_char_cursor+1 - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 lda #str @@ -3616,9 +3600,9 @@ main: { // main::@8 __b8: // [11] call print_uint - // [90] phi from main::@8 to print_uint [phi:main::@8->print_uint] + // [88] phi from main::@8 to print_uint [phi:main::@8->print_uint] print_uint_from___b8: - // [90] phi (word) print_uint::w#10 = (word) $22d [phi:main::@8->print_uint#0] -- vwuz1=vwuc1 + // [88] phi (word) print_uint::w#10 = (word) $22d [phi:main::@8->print_uint#0] -- vwuz1=vwuc1 lda #<$22d sta.z print_uint.w lda #>$22d @@ -3630,10 +3614,10 @@ main: { // main::@9 __b9: // [13] call print_str - // [83] phi from main::@9 to print_str [phi:main::@9->print_str] + // [81] phi from main::@9 to print_str [phi:main::@9->print_str] print_str_from___b9: - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@9->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@9->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@9->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@9->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -3645,9 +3629,9 @@ main: { // main::@10 __b10: // [15] call print_uint - // [90] phi from main::@10 to print_uint [phi:main::@10->print_uint] + // [88] phi from main::@10 to print_uint [phi:main::@10->print_uint] print_uint_from___b10: - // [90] phi (word) print_uint::w#10 = (word) $79cb [phi:main::@10->print_uint#0] -- vwuz1=vwuc1 + // [88] phi (word) print_uint::w#10 = (word) $79cb [phi:main::@10->print_uint#0] -- vwuz1=vwuc1 lda #<$79cb sta.z print_uint.w lda #>$79cb @@ -3659,10 +3643,10 @@ main: { // main::@11 __b11: // [17] call print_str - // [83] phi from main::@11 to print_str [phi:main::@11->print_str] + // [81] phi from main::@11 to print_str [phi:main::@11->print_str] print_str_from___b11: - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@11->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@11->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@11->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@11->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -3674,9 +3658,9 @@ main: { // main::@12 __b12: // [19] call print_uint - // [90] phi from main::@12 to print_uint [phi:main::@12->print_uint] + // [88] phi from main::@12 to print_uint [phi:main::@12->print_uint] print_uint_from___b12: - // [90] phi (word) print_uint::w#10 = (byte) 0 [phi:main::@12->print_uint#0] -- vwuz1=vbuc1 + // [88] phi (word) print_uint::w#10 = (byte) 0 [phi:main::@12->print_uint#0] -- vwuz1=vbuc1 lda #<0 sta.z print_uint.w lda #>0 @@ -3688,9 +3672,9 @@ main: { // main::@13 __b13: // [21] call print_ln - // [96] phi from main::@13 to print_ln [phi:main::@13->print_ln] + // [94] phi from main::@13 to print_ln [phi:main::@13->print_ln] print_ln_from___b13: - // [96] phi (byte*) print_line_cursor#23 = (const byte*) print_screen#0 [phi:main::@13->print_ln#0] -- pbuz1=pbuc1 + // [94] phi (byte*) print_line_cursor#23 = (const byte*) print_screen#0 [phi:main::@13->print_ln#0] -- pbuz1=pbuc1 lda #print_screen @@ -3717,10 +3701,10 @@ main: { lda.z print_line_cursor+1 sta.z print_char_cursor+1 // [25] call print_str - // [83] phi from main::@3 to print_str [phi:main::@3->print_str] + // [81] phi from main::@3 to print_str [phi:main::@3->print_str] print_str_from___b3: - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#100 [phi:main::@3->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#100 [phi:main::@3->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #str @@ -3732,9 +3716,9 @@ main: { // main::@22 __b22: // [27] call print_uint - // [90] phi from main::@22 to print_uint [phi:main::@22->print_uint] + // [88] phi from main::@22 to print_uint [phi:main::@22->print_uint] print_uint_from___b22: - // [90] phi (word) print_uint::w#10 = (word) $7461 [phi:main::@22->print_uint#0] -- vwuz1=vwuc1 + // [88] phi (word) print_uint::w#10 = (word) $7461 [phi:main::@22->print_uint#0] -- vwuz1=vwuc1 lda #<$7461 sta.z print_uint.w lda #>$7461 @@ -3746,10 +3730,10 @@ main: { // main::@23 __b23: // [29] call print_str - // [83] phi from main::@23 to print_str [phi:main::@23->print_str] + // [81] phi from main::@23 to print_str [phi:main::@23->print_str] print_str_from___b23: - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@23->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@23->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@23->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@23->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -3761,9 +3745,9 @@ main: { // main::@24 __b24: // [31] call print_uint - // [90] phi from main::@24 to print_uint [phi:main::@24->print_uint] + // [88] phi from main::@24 to print_uint [phi:main::@24->print_uint] print_uint_from___b24: - // [90] phi (word) print_uint::w#10 = (word) $f781 [phi:main::@24->print_uint#0] -- vwuz1=vwuc1 + // [88] phi (word) print_uint::w#10 = (word) $f781 [phi:main::@24->print_uint#0] -- vwuz1=vwuc1 lda #<$f781 sta.z print_uint.w lda #>$f781 @@ -3775,10 +3759,10 @@ main: { // main::@25 __b25: // [33] call print_str - // [83] phi from main::@25 to print_str [phi:main::@25->print_str] + // [81] phi from main::@25 to print_str [phi:main::@25->print_str] print_str_from___b25: - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@25->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@25->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@25->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@25->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -3790,9 +3774,9 @@ main: { // main::@26 __b26: // [35] call print_uint - // [90] phi from main::@26 to print_uint [phi:main::@26->print_uint] + // [88] phi from main::@26 to print_uint [phi:main::@26->print_uint] print_uint_from___b26: - // [90] phi (word) print_uint::w#10 = (word) $6488 [phi:main::@26->print_uint#0] -- vwuz1=vwuc1 + // [88] phi (word) print_uint::w#10 = (word) $6488 [phi:main::@26->print_uint#0] -- vwuz1=vwuc1 lda #<$6488 sta.z print_uint.w lda #>$6488 @@ -3804,9 +3788,9 @@ main: { // main::@27 __b27: // [37] call print_ln - // [96] phi from main::@27 to print_ln [phi:main::@27->print_ln] + // [94] phi from main::@27 to print_ln [phi:main::@27->print_ln] print_ln_from___b27: - // [96] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#0 [phi:main::@27->print_ln#0] -- register_copy + // [94] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#0 [phi:main::@27->print_ln#0] -- register_copy jsr print_ln jmp __breturn // main::@return @@ -3823,10 +3807,10 @@ main: { lda.z print_line_cursor+1 sta.z print_char_cursor+1 // [41] call print_uchar - // [101] phi from main::@2 to print_uchar [phi:main::@2->print_uchar] + // [99] phi from main::@2 to print_uchar [phi:main::@2->print_uchar] print_uchar_from___b2: - // [101] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#104 [phi:main::@2->print_uchar#0] -- register_copy - // [101] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#2 [phi:main::@2->print_uchar#1] -- register_copy + // [99] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#104 [phi:main::@2->print_uchar#0] -- register_copy + // [99] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#2 [phi:main::@2->print_uchar#1] -- register_copy jsr print_uchar // [42] phi from main::@2 to main::@14 [phi:main::@2->main::@14] __b14_from___b2: @@ -3834,10 +3818,10 @@ main: { // main::@14 __b14: // [43] call print_str - // [83] phi from main::@14 to print_str [phi:main::@14->print_str] + // [81] phi from main::@14 to print_str [phi:main::@14->print_str] print_str_from___b14: - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@14->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@14->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@14->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@14->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -3846,19 +3830,20 @@ main: { jmp __b15 // main::@15 __b15: - // [44] (byte~) main::$27 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + // [44] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i asl - // [45] (word) print_uint::w#3 ← *((const word*) main::lintab1 + (byte~) main::$27) -- vwuz1=pwuc1_derefidx_vbuaa - tay + sta.z __28 + // [45] (word) print_uint::w#3 ← *((const word*) main::lintab1 + (byte~) main::$28) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy.z __28 lda lintab1,y sta.z print_uint.w lda lintab1+1,y sta.z print_uint.w+1 // [46] call print_uint - // [90] phi from main::@15 to print_uint [phi:main::@15->print_uint] + // [88] phi from main::@15 to print_uint [phi:main::@15->print_uint] print_uint_from___b15: - // [90] phi (word) print_uint::w#10 = (word) print_uint::w#3 [phi:main::@15->print_uint#0] -- register_copy + // [88] phi (word) print_uint::w#10 = (word) print_uint::w#3 [phi:main::@15->print_uint#0] -- register_copy jsr print_uint // [47] phi from main::@15 to main::@16 [phi:main::@15->main::@16] __b16_from___b15: @@ -3866,10 +3851,10 @@ main: { // main::@16 __b16: // [48] call print_str - // [83] phi from main::@16 to print_str [phi:main::@16->print_str] + // [81] phi from main::@16 to print_str [phi:main::@16->print_str] print_str_from___b16: - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@16->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@16->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@16->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@16->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -3878,30 +3863,27 @@ main: { jmp __b17 // main::@17 __b17: - // [49] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 - lda.z i - asl - // [50] (word) print_uint::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) -- vwuz1=pwuc1_derefidx_vbuaa - tay + // [49] (word) print_uint::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy.z __28 lda lintab2,y sta.z print_uint.w lda lintab2+1,y sta.z print_uint.w+1 - // [51] call print_uint - // [90] phi from main::@17 to print_uint [phi:main::@17->print_uint] + // [50] call print_uint + // [88] phi from main::@17 to print_uint [phi:main::@17->print_uint] print_uint_from___b17: - // [90] phi (word) print_uint::w#10 = (word) print_uint::w#4 [phi:main::@17->print_uint#0] -- register_copy + // [88] phi (word) print_uint::w#10 = (word) print_uint::w#4 [phi:main::@17->print_uint#0] -- register_copy jsr print_uint - // [52] phi from main::@17 to main::@18 [phi:main::@17->main::@18] + // [51] phi from main::@17 to main::@18 [phi:main::@17->main::@18] __b18_from___b17: jmp __b18 // main::@18 __b18: - // [53] call print_str - // [83] phi from main::@18 to print_str [phi:main::@18->print_str] + // [52] call print_str + // [81] phi from main::@18 to print_str [phi:main::@18->print_str] print_str_from___b18: - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@18->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@18->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -3910,34 +3892,31 @@ main: { jmp __b19 // main::@19 __b19: - // [54] (byte~) main::$29 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 - lda.z i - asl - // [55] (word) print_uint::w#5 ← *((const word*) main::lintab3 + (byte~) main::$29) -- vwuz1=pwuc1_derefidx_vbuaa - tay + // [53] (word) print_uint::w#5 ← *((const word*) main::lintab3 + (byte~) main::$28) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy.z __28 lda lintab3,y sta.z print_uint.w lda lintab3+1,y sta.z print_uint.w+1 - // [56] call print_uint - // [90] phi from main::@19 to print_uint [phi:main::@19->print_uint] + // [54] call print_uint + // [88] phi from main::@19 to print_uint [phi:main::@19->print_uint] print_uint_from___b19: - // [90] phi (word) print_uint::w#10 = (word) print_uint::w#5 [phi:main::@19->print_uint#0] -- register_copy + // [88] phi (word) print_uint::w#10 = (word) print_uint::w#5 [phi:main::@19->print_uint#0] -- register_copy jsr print_uint - // [57] phi from main::@19 to main::@20 [phi:main::@19->main::@20] + // [55] phi from main::@19 to main::@20 [phi:main::@19->main::@20] __b20_from___b19: jmp __b20 // main::@20 __b20: - // [58] call print_ln - // [96] phi from main::@20 to print_ln [phi:main::@20->print_ln] + // [56] call print_ln + // [94] phi from main::@20 to print_ln [phi:main::@20->print_ln] print_ln_from___b20: - // [96] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#0 [phi:main::@20->print_ln#0] -- register_copy + // [94] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#0 [phi:main::@20->print_ln#0] -- register_copy jsr print_ln jmp __b21 // main::@21 __b21: - // [59] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + // [57] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 inc.z i // [22] phi from main::@21 to main::@1 [phi:main::@21->main::@1] __b1_from___b21: @@ -3957,17 +3936,17 @@ main: { // length - the number of points in a total sinus wavelength (the size of the table) // lin16u_gen(word zp(9) min, word zp(7) max, word* zp($d) lintab) lin16u_gen: { - .label __6 = $17 + .label __6 = $18 .label ampl = 7 - .label stepi = $11 + .label stepi = $12 .label stepf = $f - .label step = $13 + .label step = $14 .label val = 3 .label lintab = $d .label i = $b .label max = 7 .label min = 9 - // [61] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 -- vwuz1=vwuz1_minus_vwuz2 + // [59] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 -- vwuz1=vwuz1_minus_vwuz2 lda.z ampl sec sbc.z min @@ -3975,43 +3954,43 @@ lin16u_gen: { lda.z ampl+1 sbc.z min+1 sta.z ampl+1 - // [62] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 - // [63] call divr16u - // [109] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u] + // [60] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 + // [61] call divr16u + // [107] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u] divr16u_from_lin16u_gen: - // [109] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:lin16u_gen->divr16u#0] -- register_copy - // [109] phi (word) divr16u::rem#10 = (byte) 0 [phi:lin16u_gen->divr16u#1] -- vwuz1=vbuc1 + // [107] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:lin16u_gen->divr16u#0] -- register_copy + // [107] phi (word) divr16u::rem#10 = (byte) 0 [phi:lin16u_gen->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta.z divr16u.rem lda #>0 sta.z divr16u.rem+1 jsr divr16u - // [64] (word) divr16u::return#2 ← (word) divr16u::return#0 + // [62] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp __b3 // lin16u_gen::@3 __b3: - // [65] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + // [63] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda.z divr16u.return sta.z stepi lda.z divr16u.return+1 sta.z stepi+1 - // [66] (word) divr16u::rem#4 ← (word) rem16u#0 - // [67] call divr16u - // [109] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] + // [64] (word) divr16u::rem#4 ← (word) rem16u#0 + // [65] call divr16u + // [107] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] divr16u_from___b3: - // [109] phi (word) divr16u::dividend#5 = (byte) 0 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1 + // [107] phi (word) divr16u::dividend#5 = (byte) 0 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1 lda #<0 sta.z divr16u.dividend lda #>0 sta.z divr16u.dividend+1 - // [109] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#1] -- register_copy + // [107] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#1] -- register_copy jsr divr16u - // [68] (word) divr16u::return#3 ← (word) divr16u::return#0 + // [66] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp __b4 // lin16u_gen::@4 __b4: - // [69] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 - // [70] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 -- vduz1=vwuz2_dword_vwuz3 + // [67] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 + // [68] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 -- vduz1=vwuz2_dword_vwuz3 lda.z stepi sta.z step+2 lda.z stepi+1 @@ -4020,7 +3999,7 @@ lin16u_gen: { sta.z step lda.z stepf+1 sta.z step+1 - // [71] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (word) 0 -- vduz1=vwuz2_dword_vwuc1 + // [69] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (word) 0 -- vduz1=vwuz2_dword_vwuc1 lda #<0 sta.z val lda #>0 @@ -4029,11 +4008,11 @@ lin16u_gen: { sta.z val+2 lda.z min+1 sta.z val+3 - // [72] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] + // [70] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] __b1_from___b4: - // [72] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#6 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- register_copy - // [72] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy - // [72] phi (word) lin16u_gen::i#2 = (word) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- vwuz1=vwuc1 + // [70] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#6 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- register_copy + // [70] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy + // [70] phi (word) lin16u_gen::i#2 = (word) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- vwuz1=vwuc1 lda #<0 sta.z i lda #>0 @@ -4041,7 +4020,7 @@ lin16u_gen: { jmp __b1 // lin16u_gen::@1 __b1: - // [73] if((word) lin16u_gen::i#2<(byte) $14) goto lin16u_gen::@2 -- vwuz1_lt_vbuc1_then_la1 + // [71] if((word) lin16u_gen::i#2<(byte) $14) goto lin16u_gen::@2 -- vwuz1_lt_vbuc1_then_la1 lda.z i+1 bne !+ lda.z i @@ -4051,23 +4030,23 @@ lin16u_gen: { jmp __breturn // lin16u_gen::@return __breturn: - // [74] return + // [72] return rts // lin16u_gen::@2 __b2: - // [75] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 -- vwuz1=_hi_vduz2 + // [73] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 -- vwuz1=_hi_vduz2 lda.z val+2 sta.z __6 lda.z val+3 sta.z __6+1 - // [76] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 -- _deref_pwuz1=vwuz2 + // [74] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 -- _deref_pwuz1=vwuz2 ldy #0 lda.z __6 sta (lintab),y iny lda.z __6+1 sta (lintab),y - // [77] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 -- vduz1=vduz1_plus_vduz2 + // [75] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda.z val clc adc.z step @@ -4081,7 +4060,7 @@ lin16u_gen: { lda.z val+3 adc.z step+3 sta.z val+3 - // [78] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD -- pwuz1=pwuz1_plus_vbuc1 + // [76] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD -- pwuz1=pwuz1_plus_vbuc1 lda #SIZEOF_WORD clc adc.z lintab @@ -4089,29 +4068,29 @@ lin16u_gen: { bcc !+ inc.z lintab+1 !: - // [79] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 -- vwuz1=_inc_vwuz1 + // [77] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 -- vwuz1=_inc_vwuz1 inc.z i bne !+ inc.z i+1 !: - // [72] phi from lin16u_gen::@2 to lin16u_gen::@1 [phi:lin16u_gen::@2->lin16u_gen::@1] + // [70] phi from lin16u_gen::@2 to lin16u_gen::@1 [phi:lin16u_gen::@2->lin16u_gen::@1] __b1_from___b2: - // [72] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#3 [phi:lin16u_gen::@2->lin16u_gen::@1#0] -- register_copy - // [72] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@2->lin16u_gen::@1#1] -- register_copy - // [72] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@2->lin16u_gen::@1#2] -- register_copy + // [70] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#3 [phi:lin16u_gen::@2->lin16u_gen::@1#0] -- register_copy + // [70] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@2->lin16u_gen::@1#1] -- register_copy + // [70] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@2->lin16u_gen::@1#2] -- register_copy jmp __b1 } // print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { - // [81] call memset - // [127] phi from print_cls to memset [phi:print_cls->memset] + // [79] call memset + // [125] phi from print_cls to memset [phi:print_cls->memset] memset_from_print_cls: jsr memset jmp __breturn // print_cls::@return __breturn: - // [82] return + // [80] return rts } // print_str @@ -4119,15 +4098,15 @@ print_cls: { // print_str(byte* zp(7) str) print_str: { .label str = 7 - // [84] phi from print_str print_str::@3 to print_str::@1 [phi:print_str/print_str::@3->print_str::@1] + // [82] phi from print_str print_str::@3 to print_str::@1 [phi:print_str/print_str::@3->print_str::@1] __b1_from_print_str: __b1_from___b3: - // [84] phi (byte*) print_char_cursor#1 = (byte*) print_char_cursor#89 [phi:print_str/print_str::@3->print_str::@1#0] -- register_copy - // [84] phi (byte*) print_str::str#10 = (byte*) print_str::str#13 [phi:print_str/print_str::@3->print_str::@1#1] -- register_copy + // [82] phi (byte*) print_char_cursor#1 = (byte*) print_char_cursor#89 [phi:print_str/print_str::@3->print_str::@1#0] -- register_copy + // [82] phi (byte*) print_str::str#10 = (byte*) print_str::str#13 [phi:print_str/print_str::@3->print_str::@1#1] -- register_copy jmp __b1 // print_str::@1 __b1: - // [85] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 -- vbuc1_neq__deref_pbuz1_then_la1 + // [83] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 -- vbuc1_neq__deref_pbuz1_then_la1 ldy #0 lda (str),y cmp #0 @@ -4135,23 +4114,23 @@ print_str: { jmp __breturn // print_str::@return __breturn: - // [86] return + // [84] return rts // print_str::@2 __b2: - // [87] (byte) print_char::ch#0 ← *((byte*) print_str::str#10) -- vbuaa=_deref_pbuz1 + // [85] (byte) print_char::ch#0 ← *((byte*) print_str::str#10) -- vbuaa=_deref_pbuz1 ldy #0 lda (str),y - // [88] call print_char - // [133] phi from print_str::@2 to print_char [phi:print_str::@2->print_char] + // [86] call print_char + // [131] phi from print_str::@2 to print_char [phi:print_str::@2->print_char] print_char_from___b2: - // [133] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_char#0] -- register_copy - // [133] phi (byte) print_char::ch#3 = (byte) print_char::ch#0 [phi:print_str::@2->print_char#1] -- register_copy + // [131] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_char#0] -- register_copy + // [131] phi (byte) print_char::ch#3 = (byte) print_char::ch#0 [phi:print_str::@2->print_char#1] -- register_copy jsr print_char jmp __b3 // print_str::@3 __b3: - // [89] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 + // [87] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 inc.z str bne !+ inc.z str+1 @@ -4163,42 +4142,42 @@ print_str: { // print_uint(word zp(9) w) print_uint: { .label w = 9 - // [91] (byte) print_uchar::b#0 ← > (word) print_uint::w#10 -- vbuxx=_hi_vwuz1 + // [89] (byte) print_uchar::b#0 ← > (word) print_uint::w#10 -- vbuxx=_hi_vwuz1 ldx.z w+1 - // [92] call print_uchar - // [101] phi from print_uint to print_uchar [phi:print_uint->print_uchar] + // [90] call print_uchar + // [99] phi from print_uint to print_uchar [phi:print_uint->print_uchar] print_uchar_from_print_uint: - // [101] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#1 [phi:print_uint->print_uchar#0] -- register_copy - // [101] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#0 [phi:print_uint->print_uchar#1] -- register_copy + // [99] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#1 [phi:print_uint->print_uchar#0] -- register_copy + // [99] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#0 [phi:print_uint->print_uchar#1] -- register_copy jsr print_uchar jmp __b1 // print_uint::@1 __b1: - // [93] (byte) print_uchar::b#1 ← < (word) print_uint::w#10 -- vbuxx=_lo_vwuz1 + // [91] (byte) print_uchar::b#1 ← < (word) print_uint::w#10 -- vbuxx=_lo_vwuz1 ldx.z w - // [94] call print_uchar - // [101] phi from print_uint::@1 to print_uchar [phi:print_uint::@1->print_uchar] + // [92] call print_uchar + // [99] phi from print_uint::@1 to print_uchar [phi:print_uint::@1->print_uchar] print_uchar_from___b1: - // [101] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#10 [phi:print_uint::@1->print_uchar#0] -- register_copy - // [101] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#1 [phi:print_uint::@1->print_uchar#1] -- register_copy + // [99] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#10 [phi:print_uint::@1->print_uchar#0] -- register_copy + // [99] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#1 [phi:print_uint::@1->print_uchar#1] -- register_copy jsr print_uchar jmp __breturn // print_uint::@return __breturn: - // [95] return + // [93] return rts } // print_ln // Print a newline print_ln: { - // [97] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + // [95] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] __b1_from_print_ln: __b1_from___b1: - // [97] phi (byte*) print_line_cursor#12 = (byte*) print_line_cursor#23 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + // [95] phi (byte*) print_line_cursor#12 = (byte*) print_line_cursor#23 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp __b1 // print_ln::@1 __b1: - // [98] (byte*) print_line_cursor#0 ← (byte*) print_line_cursor#12 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [96] (byte*) print_line_cursor#0 ← (byte*) print_line_cursor#12 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc.z print_line_cursor @@ -4206,7 +4185,7 @@ print_ln: { bcc !+ inc.z print_line_cursor+1 !: - // [99] if((byte*) print_line_cursor#0<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + // [97] if((byte*) print_line_cursor#0<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda.z print_line_cursor+1 cmp.z print_char_cursor+1 bcc __b1_from___b1 @@ -4218,47 +4197,47 @@ print_ln: { jmp __breturn // print_ln::@return __breturn: - // [100] return + // [98] return rts } // print_uchar // Print a char as HEX // print_uchar(byte register(X) b) print_uchar: { - // [102] (byte~) print_uchar::$0 ← (byte) print_uchar::b#3 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + // [100] (byte~) print_uchar::$0 ← (byte) print_uchar::b#3 >> (byte) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - // [103] (byte) print_char::ch#1 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$0) -- vbuaa=pbuc1_derefidx_vbuaa + // [101] (byte) print_char::ch#1 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - // [104] call print_char + // [102] call print_char // Table of hexadecimal digits - // [133] phi from print_uchar to print_char [phi:print_uchar->print_char] + // [131] phi from print_uchar to print_char [phi:print_uchar->print_char] print_char_from_print_uchar: - // [133] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#84 [phi:print_uchar->print_char#0] -- register_copy - // [133] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_uchar->print_char#1] -- register_copy + // [131] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#84 [phi:print_uchar->print_char#0] -- register_copy + // [131] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_uchar->print_char#1] -- register_copy jsr print_char jmp __b1 // print_uchar::@1 __b1: - // [105] (byte~) print_uchar::$2 ← (byte) print_uchar::b#3 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 + // [103] (byte~) print_uchar::$2 ← (byte) print_uchar::b#3 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f axs #0 - // [106] (byte) print_char::ch#2 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$2) -- vbuaa=pbuc1_derefidx_vbuxx + // [104] (byte) print_char::ch#2 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$2) -- vbuaa=pbuc1_derefidx_vbuxx lda print_hextab,x - // [107] call print_char - // [133] phi from print_uchar::@1 to print_char [phi:print_uchar::@1->print_char] + // [105] call print_char + // [131] phi from print_uchar::@1 to print_char [phi:print_uchar::@1->print_char] print_char_from___b1: - // [133] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#10 [phi:print_uchar::@1->print_char#0] -- register_copy - // [133] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_uchar::@1->print_char#1] -- register_copy + // [131] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#10 [phi:print_uchar::@1->print_char#0] -- register_copy + // [131] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_uchar::@1->print_char#1] -- register_copy jsr print_char jmp __breturn // print_uchar::@return __breturn: - // [108] return + // [106] return rts } // divr16u @@ -4266,64 +4245,64 @@ print_uchar: { // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division -// divr16u(word zp(7) dividend, word zp($17) rem) +// divr16u(word zp(7) dividend, word zp($18) rem) divr16u: { - .label rem = $17 + .label rem = $18 .label dividend = 7 .label quotient = $f .label return = $f - // [110] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + // [108] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] __b1_from_divr16u: - // [110] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + // [108] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - // [110] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 + // [108] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 lda #<0 sta.z quotient lda #>0 sta.z quotient+1 - // [110] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - // [110] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + // [108] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + // [108] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp __b1 - // [110] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + // [108] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] __b1_from___b3: - // [110] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - // [110] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - // [110] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - // [110] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + // [108] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + // [108] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + // [108] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + // [108] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp __b1 // divr16u::@1 __b1: - // [111] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [109] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z rem rol.z rem+1 - // [112] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + // [110] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda.z dividend+1 - // [113] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + // [111] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - // [114] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + // [112] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq __b2_from___b1 jmp __b4 // divr16u::@4 __b4: - // [115] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + // [113] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora.z rem sta.z rem - // [116] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + // [114] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] __b2_from___b1: __b2_from___b4: - // [116] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + // [114] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp __b2 // divr16u::@2 __b2: - // [117] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [115] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z dividend rol.z dividend+1 - // [118] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [116] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z quotient rol.z quotient+1 - // [119] if((word) divr16u::rem#6<(byte) $14-(byte) 1) goto divr16u::@3 -- vwuz1_lt_vbuc1_then_la1 + // [117] if((word) divr16u::rem#6<(byte) $14-(byte) 1) goto divr16u::@3 -- vwuz1_lt_vbuc1_then_la1 lda.z rem+1 bne !+ lda.z rem @@ -4333,12 +4312,12 @@ divr16u: { jmp __b5 // divr16u::@5 __b5: - // [120] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + // [118] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc.z quotient bne !+ inc.z quotient+1 !: - // [121] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (byte) $14-(byte) 1 -- vwuz1=vwuz1_minus_vbuc1 + // [119] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (byte) $14-(byte) 1 -- vwuz1=vwuz1_minus_vbuc1 sec lda.z rem sbc #$14-1 @@ -4346,27 +4325,27 @@ divr16u: { lda.z rem+1 sbc #0 sta.z rem+1 - // [122] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + // [120] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] __b3_from___b2: __b3_from___b5: - // [122] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - // [122] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + // [120] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + // [120] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp __b3 // divr16u::@3 __b3: - // [123] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + // [121] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - // [124] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + // [122] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne __b1_from___b3 jmp __b6 // divr16u::@6 __b6: - // [125] (word) rem16u#0 ← (word) divr16u::rem#11 + // [123] (word) rem16u#0 ← (word) divr16u::rem#11 jmp __breturn // divr16u::@return __breturn: - // [126] return + // [124] return rts } // memset @@ -4377,9 +4356,9 @@ memset: { .label str = print_screen .label end = str+num .label dst = $d - // [128] phi from memset to memset::@1 [phi:memset->memset::@1] + // [126] phi from memset to memset::@1 [phi:memset->memset::@1] __b1_from_memset: - // [128] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 + // [126] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 lda #str @@ -4387,7 +4366,7 @@ memset: { jmp __b1 // memset::@1 __b1: - // [129] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 + // [127] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z dst+1 cmp #>end bne __b2 @@ -4397,32 +4376,32 @@ memset: { jmp __breturn // memset::@return __breturn: - // [130] return + // [128] return rts // memset::@2 __b2: - // [131] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 + // [129] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 lda #c ldy #0 sta (dst),y - // [132] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [130] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 !: - // [128] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1] + // [126] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1] __b1_from___b2: - // [128] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy + // [126] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy jmp __b1 } // print_char // Print a single char // print_char(byte register(A) ch) print_char: { - // [134] *((byte*) print_char_cursor#51) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa + // [132] *((byte*) print_char_cursor#51) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - // [135] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#51 -- pbuz1=_inc_pbuz1 + // [133] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#51 -- pbuz1=_inc_pbuz1 inc.z print_char_cursor bne !+ inc.z print_char_cursor+1 @@ -4430,7 +4409,7 @@ print_char: { jmp __breturn // print_char::@return __breturn: - // [136] return + // [134] return rts } // File Data @@ -4491,6 +4470,7 @@ Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #>0 Removing instruction lda #>0 +Replacing instruction ldy.z __28 with TAY Removing instruction lda #>0 Removing instruction lda #>0 Removing instruction lda #>0 @@ -4652,20 +4632,20 @@ FINAL SYMBOL TABLE (word) divr16u::quotient#2 quotient zp[2]:15 1001.0 (word) divr16u::quotient#3 quotient zp[2]:15 250.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:23 750.75 -(word) divr16u::rem#1 rem zp[2]:23 2002.0 -(word) divr16u::rem#10 rem zp[2]:23 112.0 -(word) divr16u::rem#11 rem zp[2]:23 1034.6666666666667 -(word) divr16u::rem#2 rem zp[2]:23 2002.0 -(word) divr16u::rem#4 rem zp[2]:23 22.0 -(word) divr16u::rem#5 rem zp[2]:23 2103.0 -(word) divr16u::rem#6 rem zp[2]:23 1001.0 +(word) divr16u::rem#0 rem zp[2]:24 750.75 +(word) divr16u::rem#1 rem zp[2]:24 2002.0 +(word) divr16u::rem#10 rem zp[2]:24 112.0 +(word) divr16u::rem#11 rem zp[2]:24 1034.6666666666667 +(word) divr16u::rem#2 rem zp[2]:24 2002.0 +(word) divr16u::rem#4 rem zp[2]:24 22.0 +(word) divr16u::rem#5 rem zp[2]:24 2103.0 +(word) divr16u::rem#6 rem zp[2]:24 1001.0 (word) divr16u::return (word) divr16u::return#0 return zp[2]:15 432.1428571428571 (word) divr16u::return#2 return zp[2]:15 22.0 (word) divr16u::return#3 return zp[2]:15 22.0 (void()) lin16u_gen((word) lin16u_gen::min , (word) lin16u_gen::max , (word*) lin16u_gen::lintab , (word) lin16u_gen::length) -(word~) lin16u_gen::$6 zp[2]:23 202.0 +(word~) lin16u_gen::$6 zp[2]:24 202.0 (label) lin16u_gen::@1 (label) lin16u_gen::@2 (label) lin16u_gen::@3 @@ -4686,19 +4666,17 @@ FINAL SYMBOL TABLE (word) lin16u_gen::min (word) lin16u_gen::min#3 min zp[2]:9 2.0 (dword) lin16u_gen::step -(dword) lin16u_gen::step#0 step zp[4]:19 12.444444444444443 +(dword) lin16u_gen::step#0 step zp[4]:20 12.444444444444443 (word) lin16u_gen::stepf (word) lin16u_gen::stepf#0 stepf zp[2]:15 22.0 (word) lin16u_gen::stepi -(word) lin16u_gen::stepi#0 stepi zp[2]:17 4.4 +(word) lin16u_gen::stepi#0 stepi zp[2]:18 4.4 (dword) lin16u_gen::val (dword) lin16u_gen::val#0 val zp[4]:3 22.0 (dword) lin16u_gen::val#1 val zp[4]:3 67.33333333333333 (dword) lin16u_gen::val#2 val zp[4]:3 78.5 (void()) main() -(byte~) main::$27 reg byte a 22.0 -(byte~) main::$28 reg byte a 22.0 -(byte~) main::$29 reg byte a 22.0 +(byte~) main::$28 zp[1]:17 4.888888888888889 (label) main::@1 (label) main::@10 (label) main::@11 @@ -4729,7 +4707,7 @@ FINAL SYMBOL TABLE (label) main::@return (byte) main::i (byte) main::i#1 i zp[1]:2 22.0 -(byte) main::i#10 i zp[1]:2 3.5 +(byte) main::i#10 i zp[1]:2 2.75 (const word*) main::lintab1[(number) $14] = { fill( $14, 0) } (const word*) main::lintab2[(number) $14] = { fill( $14, 0) } (const word*) main::lintab3[(number) $14] = { fill( $14, 0) } @@ -4759,7 +4737,7 @@ FINAL SYMBOL TABLE (byte) print_char::ch#2 reg byte a 2002.0 (byte) print_char::ch#3 reg byte a 112004.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:15 748.2962962962963 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:15 808.1600000000001 (byte*) print_char_cursor#10 print_char_cursor zp[2]:15 3274.216216216216 (byte*) print_char_cursor#100 print_char_cursor zp[2]:15 4.0 (byte*) print_char_cursor#104 print_char_cursor zp[2]:15 22.0 @@ -4770,7 +4748,7 @@ FINAL SYMBOL TABLE (label) print_cls::@return (const to_nomodify byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#0 print_line_cursor zp[2]:11 750.725 +(byte*) print_line_cursor#0 print_line_cursor zp[2]:11 790.2368421052631 (byte*) print_line_cursor#12 print_line_cursor zp[2]:11 20103.0 (byte*) print_line_cursor#23 print_line_cursor zp[2]:11 114.0 (void()) print_ln() @@ -4806,7 +4784,7 @@ FINAL SYMBOL TABLE (word) print_uint::w#4 w zp[2]:9 22.0 (word) print_uint::w#5 w zp[2]:9 22.0 (word) rem16u -(word) rem16u#0 rem16u zp[2]:23 22.4 +(word) rem16u#0 rem16u zp[2]:24 22.4 zp[1]:2 [ main::i#10 main::i#1 ] zp[4]:3 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] @@ -4818,12 +4796,10 @@ reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[2]:13 [ memset::dst#2 memset::dst#1 lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ] reg byte a [ print_char::ch#3 print_char::ch#0 print_char::ch#1 print_char::ch#2 ] zp[2]:15 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 lin16u_gen::stepf#0 ] -reg byte a [ main::$27 ] -reg byte a [ main::$28 ] -reg byte a [ main::$29 ] -zp[2]:17 [ lin16u_gen::stepi#0 ] -zp[4]:19 [ lin16u_gen::step#0 ] -zp[2]:23 [ lin16u_gen::$6 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 ] +zp[1]:17 [ main::$28 ] +zp[2]:18 [ lin16u_gen::stepi#0 ] +zp[4]:20 [ lin16u_gen::step#0 ] +zp[2]:24 [ lin16u_gen::$6 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 ] reg byte a [ print_uchar::$0 ] reg byte x [ print_uchar::$2 ] reg byte a [ divr16u::$1 ] @@ -4831,7 +4807,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 11729 +Score: 11679 // File Comments // Linear table generator @@ -4847,26 +4823,27 @@ Score: 11729 .const SIZEOF_WORD = 2 .label print_screen = $400 // Remainder after unsigned 16-bit division - .label rem16u = $17 + .label rem16u = $18 .label print_char_cursor = $f .label print_line_cursor = $b // main main: { + .label __28 = $11 .label i = 2 // lin16u_gen(557, 29793, lintab1, 20) // [1] call lin16u_gen - // [60] phi from main to lin16u_gen [phi:main->lin16u_gen] - // [60] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab1 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1 + // [58] phi from main to lin16u_gen [phi:main->lin16u_gen] + // [58] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab1 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab1 sta.z lin16u_gen.lintab+1 - // [60] phi (word) lin16u_gen::min#3 = (word) $22d [phi:main->lin16u_gen#1] -- vwuz1=vwuc1 + // [58] phi (word) lin16u_gen::min#3 = (word) $22d [phi:main->lin16u_gen#1] -- vwuz1=vwuc1 lda #<$22d sta.z lin16u_gen.min lda #>$22d sta.z lin16u_gen.min+1 - // [60] phi (word) lin16u_gen::max#3 = (word) $7461 [phi:main->lin16u_gen#2] -- vwuz1=vwuc1 + // [58] phi (word) lin16u_gen::max#3 = (word) $7461 [phi:main->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$7461 sta.z lin16u_gen.max lda #>$7461 @@ -4876,18 +4853,18 @@ main: { // main::@4 // lin16u_gen(31179, 63361, lintab2, 20) // [3] call lin16u_gen - // [60] phi from main::@4 to lin16u_gen [phi:main::@4->lin16u_gen] - // [60] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab2 [phi:main::@4->lin16u_gen#0] -- pwuz1=pwuc1 + // [58] phi from main::@4 to lin16u_gen [phi:main::@4->lin16u_gen] + // [58] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab2 [phi:main::@4->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab2 sta.z lin16u_gen.lintab+1 - // [60] phi (word) lin16u_gen::min#3 = (word) $79cb [phi:main::@4->lin16u_gen#1] -- vwuz1=vwuc1 + // [58] phi (word) lin16u_gen::min#3 = (word) $79cb [phi:main::@4->lin16u_gen#1] -- vwuz1=vwuc1 lda #<$79cb sta.z lin16u_gen.min lda #>$79cb sta.z lin16u_gen.min+1 - // [60] phi (word) lin16u_gen::max#3 = (word) $f781 [phi:main::@4->lin16u_gen#2] -- vwuz1=vwuc1 + // [58] phi (word) lin16u_gen::max#3 = (word) $f781 [phi:main::@4->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$f781 sta.z lin16u_gen.max lda #>$f781 @@ -4897,17 +4874,17 @@ main: { // main::@5 // lin16u_gen(0, $6488, lintab3, 20) // [5] call lin16u_gen - // [60] phi from main::@5 to lin16u_gen [phi:main::@5->lin16u_gen] - // [60] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab3 [phi:main::@5->lin16u_gen#0] -- pwuz1=pwuc1 + // [58] phi from main::@5 to lin16u_gen [phi:main::@5->lin16u_gen] + // [58] phi (word*) lin16u_gen::lintab#6 = (const word*) main::lintab3 [phi:main::@5->lin16u_gen#0] -- pwuz1=pwuc1 lda #lintab3 sta.z lin16u_gen.lintab+1 - // [60] phi (word) lin16u_gen::min#3 = (byte) 0 [phi:main::@5->lin16u_gen#1] -- vwuz1=vbuc1 + // [58] phi (word) lin16u_gen::min#3 = (byte) 0 [phi:main::@5->lin16u_gen#1] -- vwuz1=vbuc1 lda #<0 sta.z lin16u_gen.min sta.z lin16u_gen.min+1 - // [60] phi (word) lin16u_gen::max#3 = (word) $6488 [phi:main::@5->lin16u_gen#2] -- vwuz1=vwuc1 + // [58] phi (word) lin16u_gen::max#3 = (word) $6488 [phi:main::@5->lin16u_gen#2] -- vwuz1=vwuc1 lda #<$6488 sta.z lin16u_gen.max lda #>$6488 @@ -4917,19 +4894,19 @@ main: { // main::@6 // print_cls() // [7] call print_cls - // [80] phi from main::@6 to print_cls [phi:main::@6->print_cls] + // [78] phi from main::@6 to print_cls [phi:main::@6->print_cls] jsr print_cls // [8] phi from main::@6 to main::@7 [phi:main::@6->main::@7] // main::@7 // print_str(" ") // [9] call print_str - // [83] phi from main::@7 to print_str [phi:main::@7->print_str] - // [83] phi (byte*) print_char_cursor#89 = (const byte*) print_screen#0 [phi:main::@7->print_str#0] -- pbuz1=pbuc1 + // [81] phi from main::@7 to print_str [phi:main::@7->print_str] + // [81] phi (byte*) print_char_cursor#89 = (const byte*) print_screen#0 [phi:main::@7->print_str#0] -- pbuz1=pbuc1 lda #print_screen sta.z print_char_cursor+1 - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 lda #str @@ -4939,8 +4916,8 @@ main: { // main::@8 // print_uint(557) // [11] call print_uint - // [90] phi from main::@8 to print_uint [phi:main::@8->print_uint] - // [90] phi (word) print_uint::w#10 = (word) $22d [phi:main::@8->print_uint#0] -- vwuz1=vwuc1 + // [88] phi from main::@8 to print_uint [phi:main::@8->print_uint] + // [88] phi (word) print_uint::w#10 = (word) $22d [phi:main::@8->print_uint#0] -- vwuz1=vwuc1 lda #<$22d sta.z print_uint.w lda #>$22d @@ -4950,9 +4927,9 @@ main: { // main::@9 // print_str(" ") // [13] call print_str - // [83] phi from main::@9 to print_str [phi:main::@9->print_str] - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@9->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@9->print_str#1] -- pbuz1=pbuc1 + // [81] phi from main::@9 to print_str [phi:main::@9->print_str] + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@9->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@9->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -4962,8 +4939,8 @@ main: { // main::@10 // print_uint(31179) // [15] call print_uint - // [90] phi from main::@10 to print_uint [phi:main::@10->print_uint] - // [90] phi (word) print_uint::w#10 = (word) $79cb [phi:main::@10->print_uint#0] -- vwuz1=vwuc1 + // [88] phi from main::@10 to print_uint [phi:main::@10->print_uint] + // [88] phi (word) print_uint::w#10 = (word) $79cb [phi:main::@10->print_uint#0] -- vwuz1=vwuc1 lda #<$79cb sta.z print_uint.w lda #>$79cb @@ -4973,9 +4950,9 @@ main: { // main::@11 // print_str(" ") // [17] call print_str - // [83] phi from main::@11 to print_str [phi:main::@11->print_str] - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@11->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@11->print_str#1] -- pbuz1=pbuc1 + // [81] phi from main::@11 to print_str [phi:main::@11->print_str] + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@11->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@11->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -4985,8 +4962,8 @@ main: { // main::@12 // print_uint(0) // [19] call print_uint - // [90] phi from main::@12 to print_uint [phi:main::@12->print_uint] - // [90] phi (word) print_uint::w#10 = (byte) 0 [phi:main::@12->print_uint#0] -- vwuz1=vbuc1 + // [88] phi from main::@12 to print_uint [phi:main::@12->print_uint] + // [88] phi (word) print_uint::w#10 = (byte) 0 [phi:main::@12->print_uint#0] -- vwuz1=vbuc1 lda #<0 sta.z print_uint.w sta.z print_uint.w+1 @@ -4995,8 +4972,8 @@ main: { // main::@13 // print_ln() // [21] call print_ln - // [96] phi from main::@13 to print_ln [phi:main::@13->print_ln] - // [96] phi (byte*) print_line_cursor#23 = (const byte*) print_screen#0 [phi:main::@13->print_ln#0] -- pbuz1=pbuc1 + // [94] phi from main::@13 to print_ln [phi:main::@13->print_ln] + // [94] phi (byte*) print_line_cursor#23 = (const byte*) print_screen#0 [phi:main::@13->print_ln#0] -- pbuz1=pbuc1 lda #print_screen @@ -5021,9 +4998,9 @@ main: { sta.z print_char_cursor+1 // print_str(" ") // [25] call print_str - // [83] phi from main::@3 to print_str [phi:main::@3->print_str] - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#100 [phi:main::@3->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + // [81] phi from main::@3 to print_str [phi:main::@3->print_str] + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#100 [phi:main::@3->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #str @@ -5033,8 +5010,8 @@ main: { // main::@22 // print_uint(29793) // [27] call print_uint - // [90] phi from main::@22 to print_uint [phi:main::@22->print_uint] - // [90] phi (word) print_uint::w#10 = (word) $7461 [phi:main::@22->print_uint#0] -- vwuz1=vwuc1 + // [88] phi from main::@22 to print_uint [phi:main::@22->print_uint] + // [88] phi (word) print_uint::w#10 = (word) $7461 [phi:main::@22->print_uint#0] -- vwuz1=vwuc1 lda #<$7461 sta.z print_uint.w lda #>$7461 @@ -5044,9 +5021,9 @@ main: { // main::@23 // print_str(" ") // [29] call print_str - // [83] phi from main::@23 to print_str [phi:main::@23->print_str] - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@23->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@23->print_str#1] -- pbuz1=pbuc1 + // [81] phi from main::@23 to print_str [phi:main::@23->print_str] + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@23->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@23->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -5056,8 +5033,8 @@ main: { // main::@24 // print_uint(63361) // [31] call print_uint - // [90] phi from main::@24 to print_uint [phi:main::@24->print_uint] - // [90] phi (word) print_uint::w#10 = (word) $f781 [phi:main::@24->print_uint#0] -- vwuz1=vwuc1 + // [88] phi from main::@24 to print_uint [phi:main::@24->print_uint] + // [88] phi (word) print_uint::w#10 = (word) $f781 [phi:main::@24->print_uint#0] -- vwuz1=vwuc1 lda #<$f781 sta.z print_uint.w lda #>$f781 @@ -5067,9 +5044,9 @@ main: { // main::@25 // print_str(" ") // [33] call print_str - // [83] phi from main::@25 to print_str [phi:main::@25->print_str] - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@25->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@25->print_str#1] -- pbuz1=pbuc1 + // [81] phi from main::@25 to print_str [phi:main::@25->print_str] + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@25->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@25->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -5079,8 +5056,8 @@ main: { // main::@26 // print_uint($6488) // [35] call print_uint - // [90] phi from main::@26 to print_uint [phi:main::@26->print_uint] - // [90] phi (word) print_uint::w#10 = (word) $6488 [phi:main::@26->print_uint#0] -- vwuz1=vwuc1 + // [88] phi from main::@26 to print_uint [phi:main::@26->print_uint] + // [88] phi (word) print_uint::w#10 = (word) $6488 [phi:main::@26->print_uint#0] -- vwuz1=vwuc1 lda #<$6488 sta.z print_uint.w lda #>$6488 @@ -5090,8 +5067,8 @@ main: { // main::@27 // print_ln() // [37] call print_ln - // [96] phi from main::@27 to print_ln [phi:main::@27->print_ln] - // [96] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#0 [phi:main::@27->print_ln#0] -- register_copy + // [94] phi from main::@27 to print_ln [phi:main::@27->print_ln] + // [94] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#0 [phi:main::@27->print_ln#0] -- register_copy jsr print_ln // main::@return // } @@ -5109,17 +5086,17 @@ main: { sta.z print_char_cursor+1 // print_uchar(i) // [41] call print_uchar - // [101] phi from main::@2 to print_uchar [phi:main::@2->print_uchar] - // [101] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#104 [phi:main::@2->print_uchar#0] -- register_copy - // [101] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#2 [phi:main::@2->print_uchar#1] -- register_copy + // [99] phi from main::@2 to print_uchar [phi:main::@2->print_uchar] + // [99] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#104 [phi:main::@2->print_uchar#0] -- register_copy + // [99] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#2 [phi:main::@2->print_uchar#1] -- register_copy jsr print_uchar // [42] phi from main::@2 to main::@14 [phi:main::@2->main::@14] // main::@14 // print_str(" ") // [43] call print_str - // [83] phi from main::@14 to print_str [phi:main::@14->print_str] - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@14->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@14->print_str#1] -- pbuz1=pbuc1 + // [81] phi from main::@14 to print_str [phi:main::@14->print_str] + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@14->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@14->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -5127,26 +5104,27 @@ main: { jsr print_str // main::@15 // print_uint(lintab1[i]) - // [44] (byte~) main::$27 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 + // [44] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i asl - // [45] (word) print_uint::w#3 ← *((const word*) main::lintab1 + (byte~) main::$27) -- vwuz1=pwuc1_derefidx_vbuaa + sta.z __28 + // [45] (word) print_uint::w#3 ← *((const word*) main::lintab1 + (byte~) main::$28) -- vwuz1=pwuc1_derefidx_vbuz2 tay lda lintab1,y sta.z print_uint.w lda lintab1+1,y sta.z print_uint.w+1 // [46] call print_uint - // [90] phi from main::@15 to print_uint [phi:main::@15->print_uint] - // [90] phi (word) print_uint::w#10 = (word) print_uint::w#3 [phi:main::@15->print_uint#0] -- register_copy + // [88] phi from main::@15 to print_uint [phi:main::@15->print_uint] + // [88] phi (word) print_uint::w#10 = (word) print_uint::w#3 [phi:main::@15->print_uint#0] -- register_copy jsr print_uint // [47] phi from main::@15 to main::@16 [phi:main::@15->main::@16] // main::@16 // print_str(" ") // [48] call print_str - // [83] phi from main::@16 to print_str [phi:main::@16->print_str] - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@16->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@16->print_str#1] -- pbuz1=pbuc1 + // [81] phi from main::@16 to print_str [phi:main::@16->print_str] + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@16->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@16->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -5154,26 +5132,23 @@ main: { jsr print_str // main::@17 // print_uint(lintab2[i]) - // [49] (byte~) main::$28 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 - lda.z i - asl - // [50] (word) print_uint::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) -- vwuz1=pwuc1_derefidx_vbuaa - tay + // [49] (word) print_uint::w#4 ← *((const word*) main::lintab2 + (byte~) main::$28) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy.z __28 lda lintab2,y sta.z print_uint.w lda lintab2+1,y sta.z print_uint.w+1 - // [51] call print_uint - // [90] phi from main::@17 to print_uint [phi:main::@17->print_uint] - // [90] phi (word) print_uint::w#10 = (word) print_uint::w#4 [phi:main::@17->print_uint#0] -- register_copy + // [50] call print_uint + // [88] phi from main::@17 to print_uint [phi:main::@17->print_uint] + // [88] phi (word) print_uint::w#10 = (word) print_uint::w#4 [phi:main::@17->print_uint#0] -- register_copy jsr print_uint - // [52] phi from main::@17 to main::@18 [phi:main::@17->main::@18] + // [51] phi from main::@17 to main::@18 [phi:main::@17->main::@18] // main::@18 // print_str(" ") - // [53] call print_str - // [83] phi from main::@18 to print_str [phi:main::@18->print_str] - // [83] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@18->print_str#0] -- register_copy - // [83] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 + // [52] call print_str + // [81] phi from main::@18 to print_str [phi:main::@18->print_str] + // [81] phi (byte*) print_char_cursor#89 = (byte*) print_char_cursor#10 [phi:main::@18->print_str#0] -- register_copy + // [81] phi (byte*) print_str::str#13 = (const byte*) main::str1 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 lda #str1 @@ -5181,29 +5156,26 @@ main: { jsr print_str // main::@19 // print_uint(lintab3[i]) - // [54] (byte~) main::$29 ← (byte) main::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 - lda.z i - asl - // [55] (word) print_uint::w#5 ← *((const word*) main::lintab3 + (byte~) main::$29) -- vwuz1=pwuc1_derefidx_vbuaa - tay + // [53] (word) print_uint::w#5 ← *((const word*) main::lintab3 + (byte~) main::$28) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy.z __28 lda lintab3,y sta.z print_uint.w lda lintab3+1,y sta.z print_uint.w+1 - // [56] call print_uint - // [90] phi from main::@19 to print_uint [phi:main::@19->print_uint] - // [90] phi (word) print_uint::w#10 = (word) print_uint::w#5 [phi:main::@19->print_uint#0] -- register_copy + // [54] call print_uint + // [88] phi from main::@19 to print_uint [phi:main::@19->print_uint] + // [88] phi (word) print_uint::w#10 = (word) print_uint::w#5 [phi:main::@19->print_uint#0] -- register_copy jsr print_uint - // [57] phi from main::@19 to main::@20 [phi:main::@19->main::@20] + // [55] phi from main::@19 to main::@20 [phi:main::@19->main::@20] // main::@20 // print_ln() - // [58] call print_ln - // [96] phi from main::@20 to print_ln [phi:main::@20->print_ln] - // [96] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#0 [phi:main::@20->print_ln#0] -- register_copy + // [56] call print_ln + // [94] phi from main::@20 to print_ln [phi:main::@20->print_ln] + // [94] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#0 [phi:main::@20->print_ln#0] -- register_copy jsr print_ln // main::@21 // for(byte i=0; i<20; i++) - // [59] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 + // [57] (byte) main::i#1 ← ++ (byte) main::i#10 -- vbuz1=_inc_vbuz1 inc.z i // [22] phi from main::@21 to main::@1 [phi:main::@21->main::@1] // [22] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy @@ -5222,18 +5194,18 @@ main: { // length - the number of points in a total sinus wavelength (the size of the table) // lin16u_gen(word zp(9) min, word zp(7) max, word* zp($d) lintab) lin16u_gen: { - .label __6 = $17 + .label __6 = $18 .label ampl = 7 - .label stepi = $11 + .label stepi = $12 .label stepf = $f - .label step = $13 + .label step = $14 .label val = 3 .label lintab = $d .label i = $b .label max = 7 .label min = 9 // ampl = max-min - // [61] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 -- vwuz1=vwuz1_minus_vwuz2 + // [59] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 -- vwuz1=vwuz1_minus_vwuz2 lda.z ampl sec sbc.z min @@ -5242,41 +5214,41 @@ lin16u_gen: { sbc.z min+1 sta.z ampl+1 // divr16u(ampl, length-1, 0) - // [62] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 - // [63] call divr16u - // [109] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u] - // [109] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:lin16u_gen->divr16u#0] -- register_copy - // [109] phi (word) divr16u::rem#10 = (byte) 0 [phi:lin16u_gen->divr16u#1] -- vwuz1=vbuc1 + // [60] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 + // [61] call divr16u + // [107] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u] + // [107] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:lin16u_gen->divr16u#0] -- register_copy + // [107] phi (word) divr16u::rem#10 = (byte) 0 [phi:lin16u_gen->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta.z divr16u.rem sta.z divr16u.rem+1 jsr divr16u // divr16u(ampl, length-1, 0) - // [64] (word) divr16u::return#2 ← (word) divr16u::return#0 + // [62] (word) divr16u::return#2 ← (word) divr16u::return#0 // lin16u_gen::@3 // stepi = divr16u(ampl, length-1, 0) - // [65] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + // [63] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda.z divr16u.return sta.z stepi lda.z divr16u.return+1 sta.z stepi+1 // divr16u(0, length-1, rem16u) - // [66] (word) divr16u::rem#4 ← (word) rem16u#0 - // [67] call divr16u - // [109] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] - // [109] phi (word) divr16u::dividend#5 = (byte) 0 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1 + // [64] (word) divr16u::rem#4 ← (word) rem16u#0 + // [65] call divr16u + // [107] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] + // [107] phi (word) divr16u::dividend#5 = (byte) 0 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1 lda #<0 sta.z divr16u.dividend sta.z divr16u.dividend+1 - // [109] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#1] -- register_copy + // [107] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#1] -- register_copy jsr divr16u // divr16u(0, length-1, rem16u) - // [68] (word) divr16u::return#3 ← (word) divr16u::return#0 + // [66] (word) divr16u::return#3 ← (word) divr16u::return#0 // lin16u_gen::@4 // stepf = divr16u(0, length-1, rem16u) - // [69] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 + // [67] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 // step = { stepi, stepf } - // [70] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 -- vduz1=vwuz2_dword_vwuz3 + // [68] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 -- vduz1=vwuz2_dword_vwuz3 lda.z stepi sta.z step+2 lda.z stepi+1 @@ -5286,7 +5258,7 @@ lin16u_gen: { lda.z stepf+1 sta.z step+1 // val = { min, 0 } - // [71] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (word) 0 -- vduz1=vwuz2_dword_vwuc1 + // [69] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (word) 0 -- vduz1=vwuz2_dword_vwuc1 lda #<0 sta.z val sta.z val+1 @@ -5294,17 +5266,17 @@ lin16u_gen: { sta.z val+2 lda.z min+1 sta.z val+3 - // [72] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] - // [72] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#6 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- register_copy - // [72] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy - // [72] phi (word) lin16u_gen::i#2 = (word) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- vwuz1=vwuc1 + // [70] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] + // [70] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#6 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- register_copy + // [70] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy + // [70] phi (word) lin16u_gen::i#2 = (word) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- vwuz1=vwuc1 lda #<0 sta.z i sta.z i+1 // lin16u_gen::@1 __b1: // for(word i=0; ival - // [75] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 -- vwuz1=_hi_vduz2 + // [73] (word~) lin16u_gen::$6 ← > (dword) lin16u_gen::val#2 -- vwuz1=_hi_vduz2 lda.z val+2 sta.z __6 lda.z val+3 sta.z __6+1 // *lintab = >val - // [76] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 -- _deref_pwuz1=vwuz2 + // [74] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$6 -- _deref_pwuz1=vwuz2 ldy #0 lda.z __6 sta (lintab),y @@ -5332,7 +5304,7 @@ lin16u_gen: { lda.z __6+1 sta (lintab),y // val = val + step - // [77] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 -- vduz1=vduz1_plus_vduz2 + // [75] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda.z val clc adc.z step @@ -5347,7 +5319,7 @@ lin16u_gen: { adc.z step+3 sta.z val+3 // lintab++; - // [78] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD -- pwuz1=pwuz1_plus_vbuc1 + // [76] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (const byte) SIZEOF_WORD -- pwuz1=pwuz1_plus_vbuc1 lda #SIZEOF_WORD clc adc.z lintab @@ -5356,27 +5328,27 @@ lin16u_gen: { inc.z lintab+1 !: // for(word i=0; ilin16u_gen::@1] - // [72] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#3 [phi:lin16u_gen::@2->lin16u_gen::@1#0] -- register_copy - // [72] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@2->lin16u_gen::@1#1] -- register_copy - // [72] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@2->lin16u_gen::@1#2] -- register_copy + // [70] phi from lin16u_gen::@2 to lin16u_gen::@1 [phi:lin16u_gen::@2->lin16u_gen::@1] + // [70] phi (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#3 [phi:lin16u_gen::@2->lin16u_gen::@1#0] -- register_copy + // [70] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@2->lin16u_gen::@1#1] -- register_copy + // [70] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@2->lin16u_gen::@1#2] -- register_copy jmp __b1 } // print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { // memset(print_screen, ' ', 1000) - // [81] call memset - // [127] phi from print_cls to memset [phi:print_cls->memset] + // [79] call memset + // [125] phi from print_cls to memset [phi:print_cls->memset] jsr memset // print_cls::@return // } - // [82] return + // [80] return rts } // print_str @@ -5384,35 +5356,35 @@ print_cls: { // print_str(byte* zp(7) str) print_str: { .label str = 7 - // [84] phi from print_str print_str::@3 to print_str::@1 [phi:print_str/print_str::@3->print_str::@1] - // [84] phi (byte*) print_char_cursor#1 = (byte*) print_char_cursor#89 [phi:print_str/print_str::@3->print_str::@1#0] -- register_copy - // [84] phi (byte*) print_str::str#10 = (byte*) print_str::str#13 [phi:print_str/print_str::@3->print_str::@1#1] -- register_copy + // [82] phi from print_str print_str::@3 to print_str::@1 [phi:print_str/print_str::@3->print_str::@1] + // [82] phi (byte*) print_char_cursor#1 = (byte*) print_char_cursor#89 [phi:print_str/print_str::@3->print_str::@1#0] -- register_copy + // [82] phi (byte*) print_str::str#10 = (byte*) print_str::str#13 [phi:print_str/print_str::@3->print_str::@1#1] -- register_copy // print_str::@1 __b1: // while(*str) - // [85] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 -- vbuc1_neq__deref_pbuz1_then_la1 + // [83] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2 -- vbuc1_neq__deref_pbuz1_then_la1 ldy #0 lda (str),y cmp #0 bne __b2 // print_str::@return // } - // [86] return + // [84] return rts // print_str::@2 __b2: // print_char(*(str++)) - // [87] (byte) print_char::ch#0 ← *((byte*) print_str::str#10) -- vbuaa=_deref_pbuz1 + // [85] (byte) print_char::ch#0 ← *((byte*) print_str::str#10) -- vbuaa=_deref_pbuz1 ldy #0 lda (str),y - // [88] call print_char - // [133] phi from print_str::@2 to print_char [phi:print_str::@2->print_char] - // [133] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_char#0] -- register_copy - // [133] phi (byte) print_char::ch#3 = (byte) print_char::ch#0 [phi:print_str::@2->print_char#1] -- register_copy + // [86] call print_char + // [131] phi from print_str::@2 to print_char [phi:print_str::@2->print_char] + // [131] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#1 [phi:print_str::@2->print_char#0] -- register_copy + // [131] phi (byte) print_char::ch#3 = (byte) print_char::ch#0 [phi:print_str::@2->print_char#1] -- register_copy jsr print_char // print_str::@3 // print_char(*(str++)); - // [89] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 + // [87] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 -- pbuz1=_inc_pbuz1 inc.z str bne !+ inc.z str+1 @@ -5425,36 +5397,36 @@ print_str: { print_uint: { .label w = 9 // print_uchar(>w) - // [91] (byte) print_uchar::b#0 ← > (word) print_uint::w#10 -- vbuxx=_hi_vwuz1 + // [89] (byte) print_uchar::b#0 ← > (word) print_uint::w#10 -- vbuxx=_hi_vwuz1 ldx.z w+1 - // [92] call print_uchar - // [101] phi from print_uint to print_uchar [phi:print_uint->print_uchar] - // [101] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#1 [phi:print_uint->print_uchar#0] -- register_copy - // [101] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#0 [phi:print_uint->print_uchar#1] -- register_copy + // [90] call print_uchar + // [99] phi from print_uint to print_uchar [phi:print_uint->print_uchar] + // [99] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#1 [phi:print_uint->print_uchar#0] -- register_copy + // [99] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#0 [phi:print_uint->print_uchar#1] -- register_copy jsr print_uchar // print_uint::@1 // print_uchar(print_uchar] - // [101] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#10 [phi:print_uint::@1->print_uchar#0] -- register_copy - // [101] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#1 [phi:print_uint::@1->print_uchar#1] -- register_copy + // [92] call print_uchar + // [99] phi from print_uint::@1 to print_uchar [phi:print_uint::@1->print_uchar] + // [99] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#10 [phi:print_uint::@1->print_uchar#0] -- register_copy + // [99] phi (byte) print_uchar::b#3 = (byte) print_uchar::b#1 [phi:print_uint::@1->print_uchar#1] -- register_copy jsr print_uchar // print_uint::@return // } - // [95] return + // [93] return rts } // print_ln // Print a newline print_ln: { - // [97] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - // [97] phi (byte*) print_line_cursor#12 = (byte*) print_line_cursor#23 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + // [95] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + // [95] phi (byte*) print_line_cursor#12 = (byte*) print_line_cursor#23 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy // print_ln::@1 __b1: // print_line_cursor + $28 - // [98] (byte*) print_line_cursor#0 ← (byte*) print_line_cursor#12 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [96] (byte*) print_line_cursor#0 ← (byte*) print_line_cursor#12 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc.z print_line_cursor @@ -5463,7 +5435,7 @@ print_ln: { inc.z print_line_cursor+1 !: // while (print_line_cursor>4 - // [102] (byte~) print_uchar::$0 ← (byte) print_uchar::b#3 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + // [100] (byte~) print_uchar::$0 ← (byte) print_uchar::b#3 >> (byte) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr // print_char(print_hextab[b>>4]) - // [103] (byte) print_char::ch#1 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$0) -- vbuaa=pbuc1_derefidx_vbuaa + // [101] (byte) print_char::ch#1 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - // [104] call print_char + // [102] call print_char // Table of hexadecimal digits - // [133] phi from print_uchar to print_char [phi:print_uchar->print_char] - // [133] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#84 [phi:print_uchar->print_char#0] -- register_copy - // [133] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_uchar->print_char#1] -- register_copy + // [131] phi from print_uchar to print_char [phi:print_uchar->print_char] + // [131] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#84 [phi:print_uchar->print_char#0] -- register_copy + // [131] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_uchar->print_char#1] -- register_copy jsr print_char // print_uchar::@1 // b&$f - // [105] (byte~) print_uchar::$2 ← (byte) print_uchar::b#3 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 + // [103] (byte~) print_uchar::$2 ← (byte) print_uchar::b#3 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f axs #0 // print_char(print_hextab[b&$f]) - // [106] (byte) print_char::ch#2 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$2) -- vbuaa=pbuc1_derefidx_vbuxx + // [104] (byte) print_char::ch#2 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$2) -- vbuaa=pbuc1_derefidx_vbuxx lda print_hextab,x - // [107] call print_char - // [133] phi from print_uchar::@1 to print_char [phi:print_uchar::@1->print_char] - // [133] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#10 [phi:print_uchar::@1->print_char#0] -- register_copy - // [133] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_uchar::@1->print_char#1] -- register_copy + // [105] call print_char + // [131] phi from print_uchar::@1 to print_char [phi:print_uchar::@1->print_char] + // [131] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#10 [phi:print_uchar::@1->print_char#0] -- register_copy + // [131] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_uchar::@1->print_char#1] -- register_copy jsr print_char // print_uchar::@return // } - // [108] return + // [106] return rts } // divr16u @@ -5521,62 +5493,62 @@ print_uchar: { // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division -// divr16u(word zp(7) dividend, word zp($17) rem) +// divr16u(word zp(7) dividend, word zp($18) rem) divr16u: { - .label rem = $17 + .label rem = $18 .label dividend = 7 .label quotient = $f .label return = $f - // [110] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - // [110] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + // [108] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + // [108] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - // [110] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 + // [108] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1 txa sta.z quotient sta.z quotient+1 - // [110] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - // [110] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy - // [110] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - // [110] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - // [110] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - // [110] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - // [110] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + // [108] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + // [108] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + // [108] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + // [108] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + // [108] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + // [108] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + // [108] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy // divr16u::@1 __b1: // rem = rem << 1 - // [111] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [109] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z rem rol.z rem+1 // >dividend - // [112] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + // [110] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda.z dividend+1 // >dividend & $80 - // [113] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + // [111] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 // if( (>dividend & $80) != 0 ) - // [114] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + // [112] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq __b2 // divr16u::@4 // rem = rem | 1 - // [115] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + // [113] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora.z rem sta.z rem - // [116] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - // [116] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + // [114] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + // [114] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy // divr16u::@2 __b2: // dividend = dividend << 1 - // [117] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [115] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z dividend rol.z dividend+1 // quotient = quotient << 1 - // [118] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + // [116] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl.z quotient rol.z quotient+1 // if(rem>=divisor) - // [119] if((word) divr16u::rem#6<(byte) $14-(byte) 1) goto divr16u::@3 -- vwuz1_lt_vbuc1_then_la1 + // [117] if((word) divr16u::rem#6<(byte) $14-(byte) 1) goto divr16u::@3 -- vwuz1_lt_vbuc1_then_la1 lda.z rem+1 bne !+ lda.z rem @@ -5585,13 +5557,13 @@ divr16u: { !: // divr16u::@5 // quotient++; - // [120] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + // [118] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc.z quotient bne !+ inc.z quotient+1 !: // rem = rem - divisor - // [121] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (byte) $14-(byte) 1 -- vwuz1=vwuz1_minus_vbuc1 + // [119] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (byte) $14-(byte) 1 -- vwuz1=vwuz1_minus_vbuc1 sec lda.z rem sbc #$14-1 @@ -5599,23 +5571,23 @@ divr16u: { lda.z rem+1 sbc #0 sta.z rem+1 - // [122] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - // [122] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - // [122] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + // [120] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + // [120] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + // [120] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy // divr16u::@3 __b3: // for( char i : 0..15) - // [123] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + // [121] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - // [124] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + // [122] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne __b1 // divr16u::@6 // rem16u = rem - // [125] (word) rem16u#0 ← (word) divr16u::rem#11 + // [123] (word) rem16u#0 ← (word) divr16u::rem#11 // divr16u::@return // } - // [126] return + // [124] return rts } // memset @@ -5626,8 +5598,8 @@ memset: { .label str = print_screen .label end = str+num .label dst = $d - // [128] phi from memset to memset::@1 [phi:memset->memset::@1] - // [128] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 + // [126] phi from memset to memset::@1 [phi:memset->memset::@1] + // [126] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 lda #str @@ -5635,7 +5607,7 @@ memset: { // memset::@1 __b1: // for(char* dst = str; dst!=end; dst++) - // [129] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 + // [127] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z dst+1 cmp #>end bne __b2 @@ -5644,23 +5616,23 @@ memset: { bne __b2 // memset::@return // } - // [130] return + // [128] return rts // memset::@2 __b2: // *dst = c - // [131] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 + // [129] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 lda #c ldy #0 sta (dst),y // for(char* dst = str; dst!=end; dst++) - // [132] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [130] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 !: - // [128] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1] - // [128] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy + // [126] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1] + // [126] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy jmp __b1 } // print_char @@ -5668,18 +5640,18 @@ memset: { // print_char(byte register(A) ch) print_char: { // *(print_char_cursor++) = ch - // [134] *((byte*) print_char_cursor#51) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa + // [132] *((byte*) print_char_cursor#51) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y // *(print_char_cursor++) = ch; - // [135] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#51 -- pbuz1=_inc_pbuz1 + // [133] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#51 -- pbuz1=_inc_pbuz1 inc.z print_char_cursor bne !+ inc.z print_char_cursor+1 !: // print_char::@return // } - // [136] return + // [134] return rts } // File Data diff --git a/src/test/ref/linegen.sym b/src/test/ref/linegen.sym index 82b602730..1b0411275 100644 --- a/src/test/ref/linegen.sym +++ b/src/test/ref/linegen.sym @@ -27,20 +27,20 @@ (word) divr16u::quotient#2 quotient zp[2]:15 1001.0 (word) divr16u::quotient#3 quotient zp[2]:15 250.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp[2]:23 750.75 -(word) divr16u::rem#1 rem zp[2]:23 2002.0 -(word) divr16u::rem#10 rem zp[2]:23 112.0 -(word) divr16u::rem#11 rem zp[2]:23 1034.6666666666667 -(word) divr16u::rem#2 rem zp[2]:23 2002.0 -(word) divr16u::rem#4 rem zp[2]:23 22.0 -(word) divr16u::rem#5 rem zp[2]:23 2103.0 -(word) divr16u::rem#6 rem zp[2]:23 1001.0 +(word) divr16u::rem#0 rem zp[2]:24 750.75 +(word) divr16u::rem#1 rem zp[2]:24 2002.0 +(word) divr16u::rem#10 rem zp[2]:24 112.0 +(word) divr16u::rem#11 rem zp[2]:24 1034.6666666666667 +(word) divr16u::rem#2 rem zp[2]:24 2002.0 +(word) divr16u::rem#4 rem zp[2]:24 22.0 +(word) divr16u::rem#5 rem zp[2]:24 2103.0 +(word) divr16u::rem#6 rem zp[2]:24 1001.0 (word) divr16u::return (word) divr16u::return#0 return zp[2]:15 432.1428571428571 (word) divr16u::return#2 return zp[2]:15 22.0 (word) divr16u::return#3 return zp[2]:15 22.0 (void()) lin16u_gen((word) lin16u_gen::min , (word) lin16u_gen::max , (word*) lin16u_gen::lintab , (word) lin16u_gen::length) -(word~) lin16u_gen::$6 zp[2]:23 202.0 +(word~) lin16u_gen::$6 zp[2]:24 202.0 (label) lin16u_gen::@1 (label) lin16u_gen::@2 (label) lin16u_gen::@3 @@ -61,19 +61,17 @@ (word) lin16u_gen::min (word) lin16u_gen::min#3 min zp[2]:9 2.0 (dword) lin16u_gen::step -(dword) lin16u_gen::step#0 step zp[4]:19 12.444444444444443 +(dword) lin16u_gen::step#0 step zp[4]:20 12.444444444444443 (word) lin16u_gen::stepf (word) lin16u_gen::stepf#0 stepf zp[2]:15 22.0 (word) lin16u_gen::stepi -(word) lin16u_gen::stepi#0 stepi zp[2]:17 4.4 +(word) lin16u_gen::stepi#0 stepi zp[2]:18 4.4 (dword) lin16u_gen::val (dword) lin16u_gen::val#0 val zp[4]:3 22.0 (dword) lin16u_gen::val#1 val zp[4]:3 67.33333333333333 (dword) lin16u_gen::val#2 val zp[4]:3 78.5 (void()) main() -(byte~) main::$27 reg byte a 22.0 -(byte~) main::$28 reg byte a 22.0 -(byte~) main::$29 reg byte a 22.0 +(byte~) main::$28 zp[1]:17 4.888888888888889 (label) main::@1 (label) main::@10 (label) main::@11 @@ -104,7 +102,7 @@ (label) main::@return (byte) main::i (byte) main::i#1 i zp[1]:2 22.0 -(byte) main::i#10 i zp[1]:2 3.5 +(byte) main::i#10 i zp[1]:2 2.75 (const word*) main::lintab1[(number) $14] = { fill( $14, 0) } (const word*) main::lintab2[(number) $14] = { fill( $14, 0) } (const word*) main::lintab3[(number) $14] = { fill( $14, 0) } @@ -134,7 +132,7 @@ (byte) print_char::ch#2 reg byte a 2002.0 (byte) print_char::ch#3 reg byte a 112004.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp[2]:15 748.2962962962963 +(byte*) print_char_cursor#1 print_char_cursor zp[2]:15 808.1600000000001 (byte*) print_char_cursor#10 print_char_cursor zp[2]:15 3274.216216216216 (byte*) print_char_cursor#100 print_char_cursor zp[2]:15 4.0 (byte*) print_char_cursor#104 print_char_cursor zp[2]:15 22.0 @@ -145,7 +143,7 @@ (label) print_cls::@return (const to_nomodify byte*) print_hextab[] = (byte*) "0123456789abcdef"z (byte*) print_line_cursor -(byte*) print_line_cursor#0 print_line_cursor zp[2]:11 750.725 +(byte*) print_line_cursor#0 print_line_cursor zp[2]:11 790.2368421052631 (byte*) print_line_cursor#12 print_line_cursor zp[2]:11 20103.0 (byte*) print_line_cursor#23 print_line_cursor zp[2]:11 114.0 (void()) print_ln() @@ -181,7 +179,7 @@ (word) print_uint::w#4 w zp[2]:9 22.0 (word) print_uint::w#5 w zp[2]:9 22.0 (word) rem16u -(word) rem16u#0 rem16u zp[2]:23 22.4 +(word) rem16u#0 rem16u zp[2]:24 22.4 zp[1]:2 [ main::i#10 main::i#1 ] zp[4]:3 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] @@ -193,12 +191,10 @@ reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[2]:13 [ memset::dst#2 memset::dst#1 lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ] reg byte a [ print_char::ch#3 print_char::ch#0 print_char::ch#1 print_char::ch#2 ] zp[2]:15 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 lin16u_gen::stepf#0 ] -reg byte a [ main::$27 ] -reg byte a [ main::$28 ] -reg byte a [ main::$29 ] -zp[2]:17 [ lin16u_gen::stepi#0 ] -zp[4]:19 [ lin16u_gen::step#0 ] -zp[2]:23 [ lin16u_gen::$6 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 ] +zp[1]:17 [ main::$28 ] +zp[2]:18 [ lin16u_gen::stepi#0 ] +zp[4]:20 [ lin16u_gen::step#0 ] +zp[2]:24 [ lin16u_gen::$6 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 ] reg byte a [ print_uchar::$0 ] reg byte x [ print_uchar::$2 ] reg byte a [ divr16u::$1 ] diff --git a/src/test/ref/loophead-problem-2.asm b/src/test/ref/loophead-problem-2.asm index 5cb6b726d..75b18b218 100644 --- a/src/test/ref/loophead-problem-2.asm +++ b/src/test/ref/loophead-problem-2.asm @@ -35,39 +35,36 @@ scan_for_lowest: { sta.z height lda #>$258 sta.z height+1 - ldx #0 + ldy #0 __b1: // for (char i=0;i<8;i++) - cpx #8 + cpy #8 bcc __b2 // } rts __b2: // ball_y[i]=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 + [15] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 + [16] if(*((const signed word*) ball_y + (byte~) scan_for_lowest::$4)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 to:scan_for_lowest::@4 scan_for_lowest::@4: scope:[scan_for_lowest] from scan_for_lowest::@2 - [17] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 - [18] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) - [19] (byte) scan_for_lowest::lowest#8 ← (byte) scan_for_lowest::i#2 + [17] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) + [18] (byte) scan_for_lowest::lowest#8 ← (byte) scan_for_lowest::i#2 to:scan_for_lowest::@3 scan_for_lowest::@3: scope:[scan_for_lowest] from scan_for_lowest::@2 scan_for_lowest::@4 - [20] (byte) scan_for_lowest::lowest#4 ← phi( scan_for_lowest::@2/(byte) scan_for_lowest::lowest#2 scan_for_lowest::@4/(byte) scan_for_lowest::lowest#8 ) - [20] (signed word) scan_for_lowest::height#4 ← phi( scan_for_lowest::@2/(signed word) scan_for_lowest::height#2 scan_for_lowest::@4/(signed word) scan_for_lowest::height#1 ) - [21] (byte) scan_for_lowest::i#1 ← ++ (byte) scan_for_lowest::i#2 + [19] (byte) scan_for_lowest::lowest#4 ← phi( scan_for_lowest::@2/(byte) scan_for_lowest::lowest#2 scan_for_lowest::@4/(byte) scan_for_lowest::lowest#8 ) + [19] (signed word) scan_for_lowest::height#4 ← phi( scan_for_lowest::@2/(signed word) scan_for_lowest::height#2 scan_for_lowest::@4/(signed word) scan_for_lowest::height#1 ) + [20] (byte) scan_for_lowest::i#1 ← ++ (byte) scan_for_lowest::i#2 to:scan_for_lowest::@1 diff --git a/src/test/ref/loophead-problem-2.log b/src/test/ref/loophead-problem-2.log index 775c0fd9d..33dfaacc1 100644 --- a/src/test/ref/loophead-problem-2.log +++ b/src/test/ref/loophead-problem-2.log @@ -191,8 +191,12 @@ Successful SSA optimization Pass2ConstantInlining Consolidated array index constant in *(main::screen+2) Consolidated array index constant in *(main::screen+3) Successful SSA optimization Pass2ConstantAdditionElimination +Identified duplicate assignment right side [16] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 +Successful SSA optimization Pass2DuplicateRValueIdentification Eliminating unused constant (const byte) SIZEOF_SIGNED_WORD Successful SSA optimization PassNEliminateUnusedVars +Alias scan_for_lowest::$4 = scan_for_lowest::$3 +Successful SSA optimization Pass2AliasElimination Added new block during phi lifting scan_for_lowest::@6(between scan_for_lowest::@2 and scan_for_lowest::@4) Adding NOP phi() at start of main Adding NOP phi() at start of scan_for_lowest @@ -201,13 +205,13 @@ CALL GRAPH Calls in [main] to scan_for_lowest:1 Created 5 initial phi equivalence classes -Coalesced [20] scan_for_lowest::height#7 ← scan_for_lowest::height#1 -Not coalescing [21] scan_for_lowest::lowest#8 ← scan_for_lowest::i#2 -Coalesced [24] scan_for_lowest::i#6 ← scan_for_lowest::i#1 -Coalesced [25] scan_for_lowest::height#5 ← scan_for_lowest::height#4 -Coalesced [26] scan_for_lowest::lowest#6 ← scan_for_lowest::lowest#4 -Coalesced (already) [27] scan_for_lowest::height#6 ← scan_for_lowest::height#2 -Coalesced (already) [28] scan_for_lowest::lowest#7 ← scan_for_lowest::lowest#2 +Coalesced [19] scan_for_lowest::height#7 ← scan_for_lowest::height#1 +Not coalescing [20] scan_for_lowest::lowest#8 ← scan_for_lowest::i#2 +Coalesced [23] scan_for_lowest::i#6 ← scan_for_lowest::i#1 +Coalesced [24] scan_for_lowest::height#5 ← scan_for_lowest::height#4 +Coalesced [25] scan_for_lowest::lowest#6 ← scan_for_lowest::lowest#4 +Coalesced (already) [26] scan_for_lowest::height#6 ← scan_for_lowest::height#2 +Coalesced (already) [27] scan_for_lowest::lowest#7 ← scan_for_lowest::lowest#2 Coalesced down to 3 phi equivalence classes Culled Empty Block (label) scan_for_lowest::@3 Culled Empty Block (label) scan_for_lowest::@6 @@ -251,18 +255,17 @@ scan_for_lowest::@return: scope:[scan_for_lowest] from scan_for_lowest::@1 [14] return to:@return scan_for_lowest::@2: scope:[scan_for_lowest] from scan_for_lowest::@1 - [15] (byte~) scan_for_lowest::$3 ← (byte) scan_for_lowest::i#2 << (byte) 1 - [16] if(*((const signed word*) ball_y + (byte~) scan_for_lowest::$3)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 + [15] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 + [16] if(*((const signed word*) ball_y + (byte~) scan_for_lowest::$4)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 to:scan_for_lowest::@4 scan_for_lowest::@4: scope:[scan_for_lowest] from scan_for_lowest::@2 - [17] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 - [18] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) - [19] (byte) scan_for_lowest::lowest#8 ← (byte) scan_for_lowest::i#2 + [17] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) + [18] (byte) scan_for_lowest::lowest#8 ← (byte) scan_for_lowest::i#2 to:scan_for_lowest::@3 scan_for_lowest::@3: scope:[scan_for_lowest] from scan_for_lowest::@2 scan_for_lowest::@4 - [20] (byte) scan_for_lowest::lowest#4 ← phi( scan_for_lowest::@2/(byte) scan_for_lowest::lowest#2 scan_for_lowest::@4/(byte) scan_for_lowest::lowest#8 ) - [20] (signed word) scan_for_lowest::height#4 ← phi( scan_for_lowest::@2/(signed word) scan_for_lowest::height#2 scan_for_lowest::@4/(signed word) scan_for_lowest::height#1 ) - [21] (byte) scan_for_lowest::i#1 ← ++ (byte) scan_for_lowest::i#2 + [19] (byte) scan_for_lowest::lowest#4 ← phi( scan_for_lowest::@2/(byte) scan_for_lowest::lowest#2 scan_for_lowest::@4/(byte) scan_for_lowest::lowest#8 ) + [19] (signed word) scan_for_lowest::height#4 ← phi( scan_for_lowest::@2/(signed word) scan_for_lowest::height#2 scan_for_lowest::@4/(signed word) scan_for_lowest::height#1 ) + [20] (byte) scan_for_lowest::i#1 ← ++ (byte) scan_for_lowest::i#2 to:scan_for_lowest::@1 @@ -274,15 +277,14 @@ VARIABLE REGISTER WEIGHTS (byte) main::hit_check (byte) main::hit_check#0 3.0 (byte()) scan_for_lowest() -(byte~) scan_for_lowest::$3 202.0 -(byte~) scan_for_lowest::$4 202.0 +(byte~) scan_for_lowest::$4 151.5 (signed word) scan_for_lowest::height (signed word) scan_for_lowest::height#1 101.0 (signed word) scan_for_lowest::height#2 75.75 (signed word) scan_for_lowest::height#4 151.5 (byte) scan_for_lowest::i (byte) scan_for_lowest::i#1 202.0 -(byte) scan_for_lowest::i#2 75.75 +(byte) scan_for_lowest::i#2 72.14285714285714 (byte) scan_for_lowest::lowest (byte) scan_for_lowest::lowest#2 34.0 (byte) scan_for_lowest::lowest#4 151.5 @@ -299,7 +301,6 @@ Added variable main::hit_check#0 to live range equivalence class [ main::hit_che Added variable main::$4 to live range equivalence class [ main::$4 ] Added variable main::$1 to live range equivalence class [ main::$1 ] Added variable main::$2 to live range equivalence class [ main::$2 ] -Added variable scan_for_lowest::$3 to live range equivalence class [ scan_for_lowest::$3 ] Added variable scan_for_lowest::$4 to live range equivalence class [ scan_for_lowest::$4 ] Complete equivalence classes [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] @@ -310,7 +311,6 @@ Complete equivalence classes [ main::$4 ] [ main::$1 ] [ main::$2 ] -[ scan_for_lowest::$3 ] [ scan_for_lowest::$4 ] Allocated zp[1]:2 [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] Allocated zp[2]:3 [ scan_for_lowest::height#2 scan_for_lowest::height#4 scan_for_lowest::height#1 ] @@ -320,8 +320,7 @@ Allocated zp[1]:7 [ main::hit_check#0 ] Allocated zp[1]:8 [ main::$4 ] Allocated zp[1]:9 [ main::$1 ] Allocated zp[1]:10 [ main::$2 ] -Allocated zp[1]:11 [ scan_for_lowest::$3 ] -Allocated zp[1]:12 [ scan_for_lowest::$4 ] +Allocated zp[1]:11 [ scan_for_lowest::$4 ] INITIAL ASM Target platform is c64basic / MOS6502X @@ -383,8 +382,7 @@ main: { } // scan_for_lowest scan_for_lowest: { - .label __3 = $b - .label __4 = $c + .label __4 = $b .label return = 6 .label i = 2 .label height = 3 @@ -416,12 +414,12 @@ scan_for_lowest: { rts // scan_for_lowest::@2 __b2: - // [15] (byte~) scan_for_lowest::$3 ← (byte) scan_for_lowest::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + // [15] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda.z i asl - sta.z __3 - // [16] if(*((const signed word*) ball_y + (byte~) scan_for_lowest::$3)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 -- pwsc1_derefidx_vbuz1_ge_vwsz2_then_la1 - ldy.z __3 + sta.z __4 + // [16] if(*((const signed word*) ball_y + (byte~) scan_for_lowest::$4)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 -- pwsc1_derefidx_vbuz1_ge_vwsz2_then_la1 + ldy.z __4 lda ball_y,y cmp.z height lda ball_y+1,y @@ -433,28 +431,24 @@ scan_for_lowest: { jmp __b4 // scan_for_lowest::@4 __b4: - // [17] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 - lda.z i - asl - sta.z __4 - // [18] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) -- vwsz1=pwsc1_derefidx_vbuz2 + // [17] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) -- vwsz1=pwsc1_derefidx_vbuz2 ldy.z __4 lda ball_y,y sta.z height lda ball_y+1,y sta.z height+1 - // [19] (byte) scan_for_lowest::lowest#8 ← (byte) scan_for_lowest::i#2 -- vbuz1=vbuz2 + // [18] (byte) scan_for_lowest::lowest#8 ← (byte) scan_for_lowest::i#2 -- vbuz1=vbuz2 lda.z i sta.z lowest - // [20] phi from scan_for_lowest::@2 scan_for_lowest::@4 to scan_for_lowest::@3 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3] + // [19] phi from scan_for_lowest::@2 scan_for_lowest::@4 to scan_for_lowest::@3 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3] __b3_from___b2: __b3_from___b4: - // [20] phi (byte) scan_for_lowest::lowest#4 = (byte) scan_for_lowest::lowest#2 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3#0] -- register_copy - // [20] phi (signed word) scan_for_lowest::height#4 = (signed word) scan_for_lowest::height#2 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3#1] -- register_copy + // [19] phi (byte) scan_for_lowest::lowest#4 = (byte) scan_for_lowest::lowest#2 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3#0] -- register_copy + // [19] phi (signed word) scan_for_lowest::height#4 = (signed word) scan_for_lowest::height#2 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3#1] -- register_copy jmp __b3 // scan_for_lowest::@3 __b3: - // [21] (byte) scan_for_lowest::i#1 ← ++ (byte) scan_for_lowest::i#2 -- vbuz1=_inc_vbuz1 + // [20] (byte) scan_for_lowest::i#1 ← ++ (byte) scan_for_lowest::i#2 -- vbuz1=_inc_vbuz1 inc.z i // [12] phi from scan_for_lowest::@3 to scan_for_lowest::@1 [phi:scan_for_lowest::@3->scan_for_lowest::@1] __b1_from___b3: @@ -471,19 +465,18 @@ Statement [5] (byte~) main::$4 ← (byte) main::hit_check#0 << (byte) 1 [ main:: Statement [6] (byte~) main::$1 ← < *((const signed word*) ball_y + (byte~) main::$4) [ main::$4 main::$1 ] ( [ main::$4 main::$1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::$4 ] Statement [8] (byte~) main::$2 ← > *((const signed word*) ball_y + (byte~) main::$4) [ main::$2 ] ( [ main::$2 ] { } ) always clobbers reg byte a -Statement [15] (byte~) scan_for_lowest::$3 ← (byte) scan_for_lowest::i#2 << (byte) 1 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$3 ] ( scan_for_lowest:1 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$3 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a +Statement [15] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$4 ] ( scan_for_lowest:1 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$4 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] Removing always clobbered register reg byte a as potential for zp[1]:2 [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] -Statement [16] if(*((const signed word*) ball_y + (byte~) scan_for_lowest::$3)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 ] ( scan_for_lowest:1 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a -Statement [17] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 [ scan_for_lowest::i#2 scan_for_lowest::$4 ] ( scan_for_lowest:1 [ scan_for_lowest::i#2 scan_for_lowest::$4 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a -Statement [18] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) [ scan_for_lowest::i#2 scan_for_lowest::height#1 ] ( scan_for_lowest:1 [ scan_for_lowest::i#2 scan_for_lowest::height#1 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a +Statement [16] if(*((const signed word*) ball_y + (byte~) scan_for_lowest::$4)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$4 ] ( scan_for_lowest:1 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$4 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:11 [ scan_for_lowest::$4 ] +Statement [17] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) [ scan_for_lowest::i#2 scan_for_lowest::height#1 ] ( scan_for_lowest:1 [ scan_for_lowest::i#2 scan_for_lowest::height#1 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a Statement [5] (byte~) main::$4 ← (byte) main::hit_check#0 << (byte) 1 [ main::$4 ] ( [ main::$4 ] { } ) always clobbers reg byte a Statement [6] (byte~) main::$1 ← < *((const signed word*) ball_y + (byte~) main::$4) [ main::$4 main::$1 ] ( [ main::$4 main::$1 ] { } ) always clobbers reg byte a Statement [8] (byte~) main::$2 ← > *((const signed word*) ball_y + (byte~) main::$4) [ main::$2 ] ( [ main::$2 ] { } ) always clobbers reg byte a -Statement [15] (byte~) scan_for_lowest::$3 ← (byte) scan_for_lowest::i#2 << (byte) 1 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$3 ] ( scan_for_lowest:1 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$3 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a -Statement [16] if(*((const signed word*) ball_y + (byte~) scan_for_lowest::$3)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 ] ( scan_for_lowest:1 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a -Statement [17] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 [ scan_for_lowest::i#2 scan_for_lowest::$4 ] ( scan_for_lowest:1 [ scan_for_lowest::i#2 scan_for_lowest::$4 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a -Statement [18] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) [ scan_for_lowest::i#2 scan_for_lowest::height#1 ] ( scan_for_lowest:1 [ scan_for_lowest::i#2 scan_for_lowest::height#1 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a +Statement [15] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$4 ] ( scan_for_lowest:1 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$4 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a +Statement [16] if(*((const signed word*) ball_y + (byte~) scan_for_lowest::$4)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$4 ] ( scan_for_lowest:1 [ scan_for_lowest::lowest#2 scan_for_lowest::i#2 scan_for_lowest::height#2 scan_for_lowest::$4 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a +Statement [17] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) [ scan_for_lowest::i#2 scan_for_lowest::height#1 ] ( scan_for_lowest:1 [ scan_for_lowest::i#2 scan_for_lowest::height#1 ] { { scan_for_lowest::return#0 = scan_for_lowest::lowest#2 } } ) always clobbers reg byte a Potential registers zp[1]:2 [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] : zp[1]:2 , reg byte x , reg byte y , Potential registers zp[2]:3 [ scan_for_lowest::height#2 scan_for_lowest::height#4 scan_for_lowest::height#1 ] : zp[2]:3 , Potential registers zp[1]:5 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] : zp[1]:5 , reg byte x , reg byte y , @@ -492,23 +485,20 @@ Potential registers zp[1]:7 [ main::hit_check#0 ] : zp[1]:7 , reg byte a , reg b Potential registers zp[1]:8 [ main::$4 ] : zp[1]:8 , reg byte x , reg byte y , Potential registers zp[1]:9 [ main::$1 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:10 [ main::$2 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:11 [ scan_for_lowest::$3 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:12 [ scan_for_lowest::$4 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:11 [ scan_for_lowest::$4 ] : zp[1]:11 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [scan_for_lowest] 387.5: zp[1]:5 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] 328.25: zp[2]:3 [ scan_for_lowest::height#2 scan_for_lowest::height#4 scan_for_lowest::height#1 ] 277.75: zp[1]:2 [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] 202: zp[1]:11 [ scan_for_lowest::$3 ] 202: zp[1]:12 [ scan_for_lowest::$4 ] 4: zp[1]:6 [ scan_for_lowest::return#0 ] +Uplift Scope [scan_for_lowest] 387.5: zp[1]:5 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] 328.25: zp[2]:3 [ scan_for_lowest::height#2 scan_for_lowest::height#4 scan_for_lowest::height#1 ] 274.14: zp[1]:2 [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] 151.5: zp[1]:11 [ scan_for_lowest::$4 ] 4: zp[1]:6 [ scan_for_lowest::return#0 ] Uplift Scope [main] 4: zp[1]:9 [ main::$1 ] 4: zp[1]:10 [ main::$2 ] 3: zp[1]:7 [ main::hit_check#0 ] 2: zp[1]:8 [ main::$4 ] Uplift Scope [] -Uplifting [scan_for_lowest] best 990 combination zp[1]:5 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] zp[2]:3 [ scan_for_lowest::height#2 scan_for_lowest::height#4 scan_for_lowest::height#1 ] reg byte x [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] reg byte a [ scan_for_lowest::$3 ] reg byte a [ scan_for_lowest::$4 ] zp[1]:6 [ scan_for_lowest::return#0 ] -Limited combination testing to 100 combinations of 576 possible. -Uplifting [main] best 962 combination reg byte a [ main::$1 ] reg byte a [ main::$2 ] reg byte a [ main::hit_check#0 ] reg byte x [ main::$4 ] +Uplifting [scan_for_lowest] best 924 combination zp[1]:5 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] zp[2]:3 [ scan_for_lowest::height#2 scan_for_lowest::height#4 scan_for_lowest::height#1 ] reg byte y [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] reg byte x [ scan_for_lowest::$4 ] reg byte a [ scan_for_lowest::return#0 ] +Limited combination testing to 100 combinations of 108 possible. +Uplifting [main] best 896 combination reg byte a [ main::$1 ] reg byte a [ main::$2 ] reg byte a [ main::hit_check#0 ] reg byte x [ main::$4 ] Limited combination testing to 100 combinations of 192 possible. -Uplifting [] best 962 combination +Uplifting [] best 896 combination Attempting to uplift remaining variables inzp[1]:5 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] -Uplifting [scan_for_lowest] best 962 combination zp[1]:5 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] -Attempting to uplift remaining variables inzp[1]:6 [ scan_for_lowest::return#0 ] -Uplifting [scan_for_lowest] best 956 combination reg byte a [ scan_for_lowest::return#0 ] +Uplifting [scan_for_lowest] best 896 combination zp[1]:5 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] Allocated (was zp[2]:3) zp[2]:2 [ scan_for_lowest::height#2 scan_for_lowest::height#4 scan_for_lowest::height#1 ] Allocated (was zp[1]:5) zp[1]:4 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] @@ -568,13 +558,13 @@ scan_for_lowest: { sta.z height lda #>$258 sta.z height+1 - // [12] phi (byte) scan_for_lowest::i#2 = (byte) 0 [phi:scan_for_lowest->scan_for_lowest::@1#2] -- vbuxx=vbuc1 - ldx #0 + // [12] phi (byte) scan_for_lowest::i#2 = (byte) 0 [phi:scan_for_lowest->scan_for_lowest::@1#2] -- vbuyy=vbuc1 + ldy #0 jmp __b1 // scan_for_lowest::@1 __b1: - // [13] if((byte) scan_for_lowest::i#2<(byte) 8) goto scan_for_lowest::@2 -- vbuxx_lt_vbuc1_then_la1 - cpx #8 + // [13] if((byte) scan_for_lowest::i#2<(byte) 8) goto scan_for_lowest::@2 -- vbuyy_lt_vbuc1_then_la1 + cpy #8 bcc __b2 jmp __breturn // scan_for_lowest::@return @@ -583,14 +573,14 @@ scan_for_lowest: { rts // scan_for_lowest::@2 __b2: - // [15] (byte~) scan_for_lowest::$3 ← (byte) scan_for_lowest::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa + // [15] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 + tya asl - // [16] if(*((const signed word*) ball_y + (byte~) scan_for_lowest::$3)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 -- pwsc1_derefidx_vbuaa_ge_vwsz1_then_la1 - tay - lda ball_y,y + tax + // [16] if(*((const signed word*) ball_y + (byte~) scan_for_lowest::$4)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 -- pwsc1_derefidx_vbuxx_ge_vwsz1_then_la1 + lda ball_y,x cmp.z height - lda ball_y+1,y + lda ball_y+1,x sbc.z height+1 bvc !+ eor #$80 @@ -599,27 +589,23 @@ scan_for_lowest: { jmp __b4 // scan_for_lowest::@4 __b4: - // [17] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa - asl - // [18] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) -- vwsz1=pwsc1_derefidx_vbuaa - tay - lda ball_y,y + // [17] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) -- vwsz1=pwsc1_derefidx_vbuxx + lda ball_y,x sta.z height - lda ball_y+1,y + lda ball_y+1,x sta.z height+1 - // [19] (byte) scan_for_lowest::lowest#8 ← (byte) scan_for_lowest::i#2 -- vbuz1=vbuxx - stx.z lowest - // [20] phi from scan_for_lowest::@2 scan_for_lowest::@4 to scan_for_lowest::@3 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3] + // [18] (byte) scan_for_lowest::lowest#8 ← (byte) scan_for_lowest::i#2 -- vbuz1=vbuyy + sty.z lowest + // [19] phi from scan_for_lowest::@2 scan_for_lowest::@4 to scan_for_lowest::@3 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3] __b3_from___b2: __b3_from___b4: - // [20] phi (byte) scan_for_lowest::lowest#4 = (byte) scan_for_lowest::lowest#2 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3#0] -- register_copy - // [20] phi (signed word) scan_for_lowest::height#4 = (signed word) scan_for_lowest::height#2 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3#1] -- register_copy + // [19] phi (byte) scan_for_lowest::lowest#4 = (byte) scan_for_lowest::lowest#2 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3#0] -- register_copy + // [19] phi (signed word) scan_for_lowest::height#4 = (signed word) scan_for_lowest::height#2 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3#1] -- register_copy jmp __b3 // scan_for_lowest::@3 __b3: - // [21] (byte) scan_for_lowest::i#1 ← ++ (byte) scan_for_lowest::i#2 -- vbuxx=_inc_vbuxx - inx + // [20] (byte) scan_for_lowest::i#1 ← ++ (byte) scan_for_lowest::i#2 -- vbuyy=_inc_vbuyy + iny // [12] phi from scan_for_lowest::@3 to scan_for_lowest::@1 [phi:scan_for_lowest::@3->scan_for_lowest::@1] __b1_from___b3: // [12] phi (byte) scan_for_lowest::lowest#2 = (byte) scan_for_lowest::lowest#4 [phi:scan_for_lowest::@3->scan_for_lowest::@1#0] -- register_copy @@ -663,8 +649,7 @@ FINAL SYMBOL TABLE (byte) main::hit_check#0 reg byte a 3.0 (const nomodify byte*) main::screen = (byte*) 1024 (byte()) scan_for_lowest() -(byte~) scan_for_lowest::$3 reg byte a 202.0 -(byte~) scan_for_lowest::$4 reg byte a 202.0 +(byte~) scan_for_lowest::$4 reg byte x 151.5 (label) scan_for_lowest::@1 (label) scan_for_lowest::@2 (label) scan_for_lowest::@3 @@ -675,8 +660,8 @@ FINAL SYMBOL TABLE (signed word) scan_for_lowest::height#2 height zp[2]:2 75.75 (signed word) scan_for_lowest::height#4 height zp[2]:2 151.5 (byte) scan_for_lowest::i -(byte) scan_for_lowest::i#1 reg byte x 202.0 -(byte) scan_for_lowest::i#2 reg byte x 75.75 +(byte) scan_for_lowest::i#1 reg byte y 202.0 +(byte) scan_for_lowest::i#2 reg byte y 72.14285714285714 (byte) scan_for_lowest::lowest (byte) scan_for_lowest::lowest#2 lowest zp[1]:4 34.0 (byte) scan_for_lowest::lowest#4 lowest zp[1]:4 151.5 @@ -684,7 +669,7 @@ FINAL SYMBOL TABLE (byte) scan_for_lowest::return (byte) scan_for_lowest::return#0 reg byte a 4.0 -reg byte x [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] +reg byte y [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] zp[2]:2 [ scan_for_lowest::height#2 scan_for_lowest::height#4 scan_for_lowest::height#1 ] zp[1]:4 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] reg byte a [ scan_for_lowest::return#0 ] @@ -692,12 +677,11 @@ reg byte a [ main::hit_check#0 ] reg byte x [ main::$4 ] reg byte a [ main::$1 ] reg byte a [ main::$2 ] -reg byte a [ scan_for_lowest::$3 ] -reg byte a [ scan_for_lowest::$4 ] +reg byte x [ scan_for_lowest::$4 ] FINAL ASSEMBLER -Score: 830 +Score: 770 // File Comments // Call returns wrong value @@ -757,13 +741,13 @@ scan_for_lowest: { sta.z height lda #>$258 sta.z height+1 - // [12] phi (byte) scan_for_lowest::i#2 = (byte) 0 [phi:scan_for_lowest->scan_for_lowest::@1#2] -- vbuxx=vbuc1 - ldx #0 + // [12] phi (byte) scan_for_lowest::i#2 = (byte) 0 [phi:scan_for_lowest->scan_for_lowest::@1#2] -- vbuyy=vbuc1 + ldy #0 // scan_for_lowest::@1 __b1: // for (char i=0;i<8;i++) - // [13] if((byte) scan_for_lowest::i#2<(byte) 8) goto scan_for_lowest::@2 -- vbuxx_lt_vbuc1_then_la1 - cpx #8 + // [13] if((byte) scan_for_lowest::i#2<(byte) 8) goto scan_for_lowest::@2 -- vbuyy_lt_vbuc1_then_la1 + cpy #8 bcc __b2 // scan_for_lowest::@return // } @@ -772,15 +756,15 @@ scan_for_lowest: { // scan_for_lowest::@2 __b2: // ball_y[i]=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 -- pwsc1_derefidx_vbuaa_ge_vwsz1_then_la1 - tay - lda ball_y,y + // [16] if(*((const signed word*) ball_y + (byte~) scan_for_lowest::$4)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@3 -- pwsc1_derefidx_vbuxx_ge_vwsz1_then_la1 + lda ball_y,x cmp.z height - lda ball_y+1,y + lda ball_y+1,x sbc.z height+1 bvc !+ eor #$80 @@ -788,25 +772,21 @@ scan_for_lowest: { bpl __b3 // scan_for_lowest::@4 // height=ball_y[i] - // [17] (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 - txa - asl - // [18] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) -- vwsz1=pwsc1_derefidx_vbuaa - tay - lda ball_y,y + // [17] (signed word) scan_for_lowest::height#1 ← *((const signed word*) ball_y + (byte~) scan_for_lowest::$4) -- vwsz1=pwsc1_derefidx_vbuxx + lda ball_y,x sta.z height - lda ball_y+1,y + lda ball_y+1,x sta.z height+1 - // [19] (byte) scan_for_lowest::lowest#8 ← (byte) scan_for_lowest::i#2 -- vbuz1=vbuxx - stx.z lowest - // [20] phi from scan_for_lowest::@2 scan_for_lowest::@4 to scan_for_lowest::@3 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3] - // [20] phi (byte) scan_for_lowest::lowest#4 = (byte) scan_for_lowest::lowest#2 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3#0] -- register_copy - // [20] phi (signed word) scan_for_lowest::height#4 = (signed word) scan_for_lowest::height#2 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3#1] -- register_copy + // [18] (byte) scan_for_lowest::lowest#8 ← (byte) scan_for_lowest::i#2 -- vbuz1=vbuyy + sty.z lowest + // [19] phi from scan_for_lowest::@2 scan_for_lowest::@4 to scan_for_lowest::@3 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3] + // [19] phi (byte) scan_for_lowest::lowest#4 = (byte) scan_for_lowest::lowest#2 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3#0] -- register_copy + // [19] phi (signed word) scan_for_lowest::height#4 = (signed word) scan_for_lowest::height#2 [phi:scan_for_lowest::@2/scan_for_lowest::@4->scan_for_lowest::@3#1] -- register_copy // scan_for_lowest::@3 __b3: // for (char i=0;i<8;i++) - // [21] (byte) scan_for_lowest::i#1 ← ++ (byte) scan_for_lowest::i#2 -- vbuxx=_inc_vbuxx - inx + // [20] (byte) scan_for_lowest::i#1 ← ++ (byte) scan_for_lowest::i#2 -- vbuyy=_inc_vbuyy + iny // [12] phi from scan_for_lowest::@3 to scan_for_lowest::@1 [phi:scan_for_lowest::@3->scan_for_lowest::@1] // [12] phi (byte) scan_for_lowest::lowest#2 = (byte) scan_for_lowest::lowest#4 [phi:scan_for_lowest::@3->scan_for_lowest::@1#0] -- register_copy // [12] phi (signed word) scan_for_lowest::height#2 = (signed word) scan_for_lowest::height#4 [phi:scan_for_lowest::@3->scan_for_lowest::@1#1] -- register_copy diff --git a/src/test/ref/loophead-problem-2.sym b/src/test/ref/loophead-problem-2.sym index b516113d8..13b205fd1 100644 --- a/src/test/ref/loophead-problem-2.sym +++ b/src/test/ref/loophead-problem-2.sym @@ -9,8 +9,7 @@ (byte) main::hit_check#0 reg byte a 3.0 (const nomodify byte*) main::screen = (byte*) 1024 (byte()) scan_for_lowest() -(byte~) scan_for_lowest::$3 reg byte a 202.0 -(byte~) scan_for_lowest::$4 reg byte a 202.0 +(byte~) scan_for_lowest::$4 reg byte x 151.5 (label) scan_for_lowest::@1 (label) scan_for_lowest::@2 (label) scan_for_lowest::@3 @@ -21,8 +20,8 @@ (signed word) scan_for_lowest::height#2 height zp[2]:2 75.75 (signed word) scan_for_lowest::height#4 height zp[2]:2 151.5 (byte) scan_for_lowest::i -(byte) scan_for_lowest::i#1 reg byte x 202.0 -(byte) scan_for_lowest::i#2 reg byte x 75.75 +(byte) scan_for_lowest::i#1 reg byte y 202.0 +(byte) scan_for_lowest::i#2 reg byte y 72.14285714285714 (byte) scan_for_lowest::lowest (byte) scan_for_lowest::lowest#2 lowest zp[1]:4 34.0 (byte) scan_for_lowest::lowest#4 lowest zp[1]:4 151.5 @@ -30,7 +29,7 @@ (byte) scan_for_lowest::return (byte) scan_for_lowest::return#0 reg byte a 4.0 -reg byte x [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] +reg byte y [ scan_for_lowest::i#2 scan_for_lowest::i#1 ] zp[2]:2 [ scan_for_lowest::height#2 scan_for_lowest::height#4 scan_for_lowest::height#1 ] zp[1]:4 [ scan_for_lowest::lowest#2 scan_for_lowest::lowest#4 scan_for_lowest::lowest#8 ] reg byte a [ scan_for_lowest::return#0 ] @@ -38,5 +37,4 @@ reg byte a [ main::hit_check#0 ] reg byte x [ main::$4 ] reg byte a [ main::$1 ] reg byte a [ main::$2 ] -reg byte a [ scan_for_lowest::$3 ] -reg byte a [ scan_for_lowest::$4 ] +reg byte x [ scan_for_lowest::$4 ] diff --git a/src/test/ref/subexpr-optimize-4.asm b/src/test/ref/subexpr-optimize-4.asm index 6cf842721..cd0dacf6d 100644 --- a/src/test/ref/subexpr-optimize-4.asm +++ b/src/test/ref/subexpr-optimize-4.asm @@ -3,6 +3,7 @@ :BasicUpstart(main) .pc = $80d "Program" main: { + .label __6 = 4 .label screen = 2 lda #<$400 sta.z screen @@ -11,10 +12,11 @@ main: { ldx #0 __b1: // i&1 - txa - and #1 + lda #1 + sax.z __6 // (i&1)?i+3:i*4 - cmp #0 + lda #0 + cmp.z __6 bne __b2 txa asl @@ -28,11 +30,9 @@ main: { bne !+ inc.z screen+1 !: - // i&1 - txa - and #1 // (i&1)?i+3:i*4 - cmp #0 + lda #0 + cmp.z __6 bne __b5 txa asl diff --git a/src/test/ref/subexpr-optimize-4.cfg b/src/test/ref/subexpr-optimize-4.cfg index 5d55311a9..95b5b00e7 100644 --- a/src/test/ref/subexpr-optimize-4.cfg +++ b/src/test/ref/subexpr-optimize-4.cfg @@ -6,8 +6,8 @@ main: scope:[main] from main::@1: scope:[main] from main main::@7 [1] (byte*) main::screen#3 ← phi( main/(byte*) 1024 main::@7/(byte*) main::screen#2 ) [1] (byte) main::i#2 ← phi( main/(byte) 0 main::@7/(byte) main::i#1 ) - [2] (byte~) main::$0 ← (byte) main::i#2 & (byte) 1 - [3] if((byte) 0!=(byte~) main::$0) goto main::@2 + [2] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 + [3] if((byte) 0!=(byte~) main::$6) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@1 [4] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 @@ -16,25 +16,24 @@ main::@4: scope:[main] from main::@2 main::@3 [5] (byte~) main::$5 ← phi( main::@2/(byte~) main::$4 main::@3/(byte~) main::$2 ) [6] *((byte*) main::screen#3) ← (byte~) main::$5 [7] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 - [8] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 - [9] if((byte) 0!=(byte~) main::$6) goto main::@5 + [8] if((byte) 0!=(byte~) main::$6) goto main::@5 to:main::@6 main::@6: scope:[main] from main::@4 - [10] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 + [9] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 to:main::@7 main::@7: scope:[main] from main::@5 main::@6 - [11] (byte~) main::$11 ← phi( main::@5/(byte~) main::$10 main::@6/(byte~) main::$8 ) - [12] *((byte*) main::screen#1) ← (byte~) main::$11 - [13] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 - [14] (byte) main::i#1 ← ++ (byte) main::i#2 - [15] if((byte) main::i#1!=(byte) 3) goto main::@1 + [10] (byte~) main::$11 ← phi( main::@5/(byte~) main::$10 main::@6/(byte~) main::$8 ) + [11] *((byte*) main::screen#1) ← (byte~) main::$11 + [12] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 + [13] (byte) main::i#1 ← ++ (byte) main::i#2 + [14] if((byte) main::i#1!=(byte) 3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@7 - [16] return + [15] return to:@return main::@5: scope:[main] from main::@4 - [17] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 + [16] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 to:main::@7 main::@2: scope:[main] from main::@1 - [18] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 + [17] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 to:main::@4 diff --git a/src/test/ref/subexpr-optimize-4.log b/src/test/ref/subexpr-optimize-4.log index adb7339d3..183e8e4d5 100644 --- a/src/test/ref/subexpr-optimize-4.log +++ b/src/test/ref/subexpr-optimize-4.log @@ -190,6 +190,8 @@ Alias main::screen#3 = main::screen#5 Alias main::i#2 = main::i#5 main::i#8 Alias main::screen#1 = main::screen#4 Successful SSA optimization Pass2AliasElimination +Identified duplicate assignment right side [15] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 +Successful SSA optimization Pass2DuplicateRValueIdentification Simple Condition (bool~) main::$13 [5] if((byte) 0!=(byte~) main::$0) goto main::@2 Simple Condition (bool~) main::$14 [13] if((byte) 0!=(byte~) main::$6) goto main::@5 Simple Condition (bool~) main::$12 [21] if((byte) main::i#1!=rangelast(0,2)) goto main::@1 @@ -210,8 +212,10 @@ Simplifying constant integer cast 3 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions +Alias main::$6 = main::$0 +Successful SSA optimization Pass2AliasElimination Rewriting multiplication to use shift [4] (byte~) main::$2 ← (byte) main::i#2 * (byte) 4 -Rewriting multiplication to use shift [11] (byte~) main::$8 ← (byte) main::i#2 * (byte) 4 +Rewriting multiplication to use shift [10] (byte~) main::$8 ← (byte) main::i#2 * (byte) 4 Successful SSA optimization Pass2MultiplyToShiftRewriting Inlining constant with var siblings (const byte*) main::screen#0 Inlining constant with var siblings (const byte) main::i#0 @@ -224,11 +228,11 @@ CALL GRAPH Created 4 initial phi equivalence classes Coalesced [5] main::$16 ← main::$2 -Coalesced [12] main::$18 ← main::$8 -Coalesced [19] main::i#9 ← main::i#1 -Coalesced [20] main::screen#10 ← main::screen#2 -Coalesced [22] main::$17 ← main::$10 -Coalesced [24] main::$15 ← main::$4 +Coalesced [11] main::$18 ← main::$8 +Coalesced [18] main::i#9 ← main::i#1 +Coalesced [19] main::screen#10 ← main::screen#2 +Coalesced [21] main::$17 ← main::$10 +Coalesced [23] main::$15 ← main::$4 Coalesced down to 4 phi equivalence classes Culled Empty Block (label) main::@8 Adding NOP phi() at start of main @@ -242,8 +246,8 @@ main: scope:[main] from main::@1: scope:[main] from main main::@7 [1] (byte*) main::screen#3 ← phi( main/(byte*) 1024 main::@7/(byte*) main::screen#2 ) [1] (byte) main::i#2 ← phi( main/(byte) 0 main::@7/(byte) main::i#1 ) - [2] (byte~) main::$0 ← (byte) main::i#2 & (byte) 1 - [3] if((byte) 0!=(byte~) main::$0) goto main::@2 + [2] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 + [3] if((byte) 0!=(byte~) main::$6) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@1 [4] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 @@ -252,45 +256,43 @@ main::@4: scope:[main] from main::@2 main::@3 [5] (byte~) main::$5 ← phi( main::@2/(byte~) main::$4 main::@3/(byte~) main::$2 ) [6] *((byte*) main::screen#3) ← (byte~) main::$5 [7] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 - [8] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 - [9] if((byte) 0!=(byte~) main::$6) goto main::@5 + [8] if((byte) 0!=(byte~) main::$6) goto main::@5 to:main::@6 main::@6: scope:[main] from main::@4 - [10] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 + [9] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 to:main::@7 main::@7: scope:[main] from main::@5 main::@6 - [11] (byte~) main::$11 ← phi( main::@5/(byte~) main::$10 main::@6/(byte~) main::$8 ) - [12] *((byte*) main::screen#1) ← (byte~) main::$11 - [13] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 - [14] (byte) main::i#1 ← ++ (byte) main::i#2 - [15] if((byte) main::i#1!=(byte) 3) goto main::@1 + [10] (byte~) main::$11 ← phi( main::@5/(byte~) main::$10 main::@6/(byte~) main::$8 ) + [11] *((byte*) main::screen#1) ← (byte~) main::$11 + [12] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 + [13] (byte) main::i#1 ← ++ (byte) main::i#2 + [14] if((byte) main::i#1!=(byte) 3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@7 - [16] return + [15] return to:@return main::@5: scope:[main] from main::@4 - [17] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 + [16] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 to:main::@7 main::@2: scope:[main] from main::@1 - [18] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 + [17] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 to:main::@4 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 (byte~) main::$10 22.0 (byte~) main::$11 33.0 (byte~) main::$2 22.0 (byte~) main::$4 22.0 (byte~) main::$5 33.0 -(byte~) main::$6 22.0 +(byte~) main::$6 4.714285714285714 (byte~) main::$8 22.0 (byte) main::i (byte) main::i#1 16.5 -(byte) main::i#2 5.866666666666666 +(byte) main::i#2 5.5 (byte*) main::screen -(byte*) main::screen#1 4.714285714285714 +(byte*) main::screen#1 5.5 (byte*) main::screen#2 7.333333333333333 (byte*) main::screen#3 4.714285714285714 @@ -299,24 +301,21 @@ Initial phi equivalence classes [ main::screen#3 main::screen#2 ] [ main::$5 main::$4 main::$2 ] [ main::$11 main::$10 main::$8 ] -Added variable main::$0 to live range equivalence class [ main::$0 ] -Added variable main::screen#1 to live range equivalence class [ main::screen#1 ] Added variable main::$6 to live range equivalence class [ main::$6 ] +Added variable main::screen#1 to live range equivalence class [ main::screen#1 ] Complete equivalence classes [ main::i#2 main::i#1 ] [ main::screen#3 main::screen#2 ] [ main::$5 main::$4 main::$2 ] [ main::$11 main::$10 main::$8 ] -[ main::$0 ] -[ main::screen#1 ] [ main::$6 ] +[ main::screen#1 ] Allocated zp[1]:2 [ main::i#2 main::i#1 ] Allocated zp[2]:3 [ main::screen#3 main::screen#2 ] Allocated zp[1]:5 [ main::$5 main::$4 main::$2 ] Allocated zp[1]:6 [ main::$11 main::$10 main::$8 ] -Allocated zp[1]:7 [ main::$0 ] +Allocated zp[1]:7 [ main::$6 ] Allocated zp[2]:8 [ main::screen#1 ] -Allocated zp[1]:10 [ main::$6 ] INITIAL ASM Target platform is c64basic / MOS6502X @@ -329,11 +328,10 @@ Target platform is c64basic / MOS6502X // Global Constants & labels // main main: { - .label __0 = 7 .label __2 = 5 .label __4 = 5 .label __5 = 5 - .label __6 = $a + .label __6 = 7 .label __8 = 6 .label __10 = 6 .label __11 = 6 @@ -358,13 +356,13 @@ main: { jmp __b1 // main::@1 __b1: - // [2] (byte~) main::$0 ← (byte) main::i#2 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 + // [2] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and.z i - sta.z __0 - // [3] if((byte) 0!=(byte~) main::$0) goto main::@2 -- vbuc1_neq_vbuz1_then_la1 + sta.z __6 + // [3] if((byte) 0!=(byte~) main::$6) goto main::@2 -- vbuc1_neq_vbuz1_then_la1 lda #0 - cmp.z __0 + cmp.z __6 bne __b2 jmp __b3 // main::@3 @@ -393,34 +391,30 @@ main: { lda.z screen_1+1 adc #0 sta.z screen+1 - // [8] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 - lda #1 - and.z i - sta.z __6 - // [9] if((byte) 0!=(byte~) main::$6) goto main::@5 -- vbuc1_neq_vbuz1_then_la1 + // [8] if((byte) 0!=(byte~) main::$6) goto main::@5 -- vbuc1_neq_vbuz1_then_la1 lda #0 cmp.z __6 bne __b5 jmp __b6 // main::@6 __b6: - // [10] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 + // [9] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 lda.z i asl asl sta.z __8 - // [11] phi from main::@5 main::@6 to main::@7 [phi:main::@5/main::@6->main::@7] + // [10] phi from main::@5 main::@6 to main::@7 [phi:main::@5/main::@6->main::@7] __b7_from___b5: __b7_from___b6: - // [11] phi (byte~) main::$11 = (byte~) main::$10 [phi:main::@5/main::@6->main::@7#0] -- register_copy + // [10] phi (byte~) main::$11 = (byte~) main::$10 [phi:main::@5/main::@6->main::@7#0] -- register_copy jmp __b7 // main::@7 __b7: - // [12] *((byte*) main::screen#1) ← (byte~) main::$11 -- _deref_pbuz1=vbuz2 + // [11] *((byte*) main::screen#1) ← (byte~) main::$11 -- _deref_pbuz1=vbuz2 lda.z __11 ldy #0 sta (screen),y - // [13] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 -- pbuz1=_inc_pbuz2 + // [12] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 -- pbuz1=_inc_pbuz2 lda.z screen clc adc #1 @@ -428,27 +422,27 @@ main: { lda.z screen+1 adc #0 sta.z screen_1+1 - // [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + // [13] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [15] if((byte) main::i#1!=(byte) 3) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + // [14] if((byte) main::i#1!=(byte) 3) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda #3 cmp.z i bne __b1_from___b7 jmp __breturn // main::@return __breturn: - // [16] return + // [15] return rts // main::@5 __b5: - // [17] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 -- vbuz1=vbuz2_plus_vbuc1 + // [16] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 -- vbuz1=vbuz2_plus_vbuc1 lax.z i axs #-[3] stx.z __10 jmp __b7_from___b5 // main::@2 __b2: - // [18] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 -- vbuz1=vbuz2_plus_vbuc1 + // [17] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 -- vbuz1=vbuz2_plus_vbuc1 lax.z i axs #-[3] stx.z __4 @@ -457,46 +451,45 @@ main: { // File Data REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::screen#3 main::$2 ] ( [ main::i#2 main::screen#3 main::$2 ] { } ) always clobbers reg byte a +Statement [4] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::screen#3 main::$6 main::$2 ] ( [ main::i#2 main::screen#3 main::$6 main::$2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [6] *((byte*) main::screen#3) ← (byte~) main::$5 [ main::i#2 main::screen#3 ] ( [ main::i#2 main::screen#3 ] { } ) always clobbers reg byte y +Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::$6 ] +Statement [6] *((byte*) main::screen#3) ← (byte~) main::$5 [ main::i#2 main::screen#3 main::$6 ] ( [ main::i#2 main::screen#3 main::$6 ] { } ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ] -Statement [7] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::screen#1 ] ( [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte a -Statement [8] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::screen#1 main::$6 ] ( [ main::i#2 main::screen#1 main::$6 ] { } ) always clobbers reg byte a -Statement [10] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::screen#1 main::$8 ] ( [ main::i#2 main::screen#1 main::$8 ] { } ) always clobbers reg byte a -Statement [12] *((byte*) main::screen#1) ← (byte~) main::$11 [ main::i#2 main::screen#1 ] ( [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte y -Statement [13] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a -Statement [17] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 [ main::i#2 main::screen#1 main::$10 ] ( [ main::i#2 main::screen#1 main::$10 ] { } ) always clobbers reg byte a -Statement [18] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 [ main::i#2 main::screen#3 main::$4 ] ( [ main::i#2 main::screen#3 main::$4 ] { } ) always clobbers reg byte a -Statement [2] (byte~) main::$0 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::screen#3 main::$0 ] ( [ main::i#2 main::screen#3 main::$0 ] { } ) always clobbers reg byte a -Statement [4] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::screen#3 main::$2 ] ( [ main::i#2 main::screen#3 main::$2 ] { } ) always clobbers reg byte a -Statement [6] *((byte*) main::screen#3) ← (byte~) main::$5 [ main::i#2 main::screen#3 ] ( [ main::i#2 main::screen#3 ] { } ) always clobbers reg byte y -Statement [7] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::screen#1 ] ( [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte a -Statement [8] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::screen#1 main::$6 ] ( [ main::i#2 main::screen#1 main::$6 ] { } ) always clobbers reg byte a -Statement [10] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::screen#1 main::$8 ] ( [ main::i#2 main::screen#1 main::$8 ] { } ) always clobbers reg byte a -Statement [12] *((byte*) main::screen#1) ← (byte~) main::$11 [ main::i#2 main::screen#1 ] ( [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte y -Statement [13] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a -Statement [17] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 [ main::i#2 main::screen#1 main::$10 ] ( [ main::i#2 main::screen#1 main::$10 ] { } ) always clobbers reg byte a -Statement [18] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 [ main::i#2 main::screen#3 main::$4 ] ( [ main::i#2 main::screen#3 main::$4 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte y as potential for zp[1]:7 [ main::$6 ] +Statement [7] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::$6 main::screen#1 ] ( [ main::i#2 main::$6 main::screen#1 ] { } ) always clobbers reg byte a +Statement [9] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::screen#1 main::$8 ] ( [ main::i#2 main::screen#1 main::$8 ] { } ) always clobbers reg byte a +Statement [11] *((byte*) main::screen#1) ← (byte~) main::$11 [ main::i#2 main::screen#1 ] ( [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte y +Statement [12] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a +Statement [16] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 [ main::i#2 main::screen#1 main::$10 ] ( [ main::i#2 main::screen#1 main::$10 ] { } ) always clobbers reg byte a +Statement [17] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 [ main::i#2 main::screen#3 main::$6 main::$4 ] ( [ main::i#2 main::screen#3 main::$6 main::$4 ] { } ) always clobbers reg byte a +Statement [2] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::screen#3 main::$6 ] ( [ main::i#2 main::screen#3 main::$6 ] { } ) always clobbers reg byte a +Statement [4] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::screen#3 main::$6 main::$2 ] ( [ main::i#2 main::screen#3 main::$6 main::$2 ] { } ) always clobbers reg byte a +Statement [6] *((byte*) main::screen#3) ← (byte~) main::$5 [ main::i#2 main::screen#3 main::$6 ] ( [ main::i#2 main::screen#3 main::$6 ] { } ) always clobbers reg byte y +Statement [7] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::$6 main::screen#1 ] ( [ main::i#2 main::$6 main::screen#1 ] { } ) always clobbers reg byte a +Statement [9] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::screen#1 main::$8 ] ( [ main::i#2 main::screen#1 main::$8 ] { } ) always clobbers reg byte a +Statement [11] *((byte*) main::screen#1) ← (byte~) main::$11 [ main::i#2 main::screen#1 ] ( [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte y +Statement [12] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a +Statement [16] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 [ main::i#2 main::screen#1 main::$10 ] ( [ main::i#2 main::screen#1 main::$10 ] { } ) always clobbers reg byte a +Statement [17] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 [ main::i#2 main::screen#3 main::$6 main::$4 ] ( [ main::i#2 main::screen#3 main::$6 main::$4 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[2]:3 [ main::screen#3 main::screen#2 ] : zp[2]:3 , Potential registers zp[1]:5 [ main::$5 main::$4 main::$2 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:6 [ main::$11 main::$10 main::$8 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:7 [ main::$0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:7 [ main::$6 ] : zp[1]:7 , reg byte x , Potential registers zp[2]:8 [ main::screen#1 ] : zp[2]:8 , -Potential registers zp[1]:10 [ main::$6 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 77: zp[1]:5 [ main::$5 main::$4 main::$2 ] 77: zp[1]:6 [ main::$11 main::$10 main::$8 ] 22.37: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:7 [ main::$0 ] 22: zp[1]:10 [ main::$6 ] 12.05: zp[2]:3 [ main::screen#3 main::screen#2 ] 4.71: zp[2]:8 [ main::screen#1 ] +Uplift Scope [main] 77: zp[1]:5 [ main::$5 main::$4 main::$2 ] 77: zp[1]:6 [ main::$11 main::$10 main::$8 ] 22: zp[1]:2 [ main::i#2 main::i#1 ] 12.05: zp[2]:3 [ main::screen#3 main::screen#2 ] 5.5: zp[2]:8 [ main::screen#1 ] 4.71: zp[1]:7 [ main::$6 ] Uplift Scope [] -Uplifting [main] best 1431 combination reg byte a [ main::$5 main::$4 main::$2 ] reg byte a [ main::$11 main::$10 main::$8 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] zp[1]:10 [ main::$6 ] zp[2]:3 [ main::screen#3 main::screen#2 ] zp[2]:8 [ main::screen#1 ] -Limited combination testing to 100 combinations of 512 possible. -Uplifting [] best 1431 combination -Attempting to uplift remaining variables inzp[1]:10 [ main::$6 ] -Uplifting [main] best 1391 combination reg byte a [ main::$6 ] +Uplifting [main] best 1421 combination reg byte a [ main::$5 main::$4 main::$2 ] reg byte a [ main::$11 main::$10 main::$8 ] reg byte x [ main::i#2 main::i#1 ] zp[2]:3 [ main::screen#3 main::screen#2 ] zp[2]:8 [ main::screen#1 ] zp[1]:7 [ main::$6 ] +Uplifting [] best 1421 combination +Attempting to uplift remaining variables inzp[1]:7 [ main::$6 ] +Uplifting [main] best 1421 combination zp[1]:7 [ main::$6 ] Coalescing zero page register [ zp[2]:3 [ main::screen#3 main::screen#2 ] ] with [ zp[2]:8 [ main::screen#1 ] ] - score: 2 Allocated (was zp[2]:3) zp[2]:2 [ main::screen#3 main::screen#2 main::screen#1 ] +Allocated (was zp[1]:7) zp[1]:4 [ main::$6 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments @@ -508,6 +501,7 @@ ASSEMBLER BEFORE OPTIMIZATION // Global Constants & labels // main main: { + .label __6 = 4 .label screen = 2 // [1] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: @@ -526,11 +520,12 @@ main: { jmp __b1 // main::@1 __b1: - // [2] (byte~) main::$0 ← (byte) main::i#2 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 - txa - and #1 - // [3] if((byte) 0!=(byte~) main::$0) goto main::@2 -- vbuc1_neq_vbuaa_then_la1 - cmp #0 + // [2] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 -- vbuz1=vbuxx_band_vbuc1 + lda #1 + sax.z __6 + // [3] if((byte) 0!=(byte~) main::$6) goto main::@2 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z __6 bne __b2 jmp __b3 // main::@3 @@ -554,54 +549,52 @@ main: { bne !+ inc.z screen+1 !: - // [8] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 - txa - and #1 - // [9] if((byte) 0!=(byte~) main::$6) goto main::@5 -- vbuc1_neq_vbuaa_then_la1 - cmp #0 + // [8] if((byte) 0!=(byte~) main::$6) goto main::@5 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z __6 bne __b5 jmp __b6 // main::@6 __b6: - // [10] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 + // [9] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - // [11] phi from main::@5 main::@6 to main::@7 [phi:main::@5/main::@6->main::@7] + // [10] phi from main::@5 main::@6 to main::@7 [phi:main::@5/main::@6->main::@7] __b7_from___b5: __b7_from___b6: - // [11] phi (byte~) main::$11 = (byte~) main::$10 [phi:main::@5/main::@6->main::@7#0] -- register_copy + // [10] phi (byte~) main::$11 = (byte~) main::$10 [phi:main::@5/main::@6->main::@7#0] -- register_copy jmp __b7 // main::@7 __b7: - // [12] *((byte*) main::screen#1) ← (byte~) main::$11 -- _deref_pbuz1=vbuaa + // [11] *((byte*) main::screen#1) ← (byte~) main::$11 -- _deref_pbuz1=vbuaa ldy #0 sta (screen),y - // [13] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 -- pbuz1=_inc_pbuz1 + // [12] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 -- pbuz1=_inc_pbuz1 inc.z screen bne !+ inc.z screen+1 !: - // [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + // [13] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - // [15] if((byte) main::i#1!=(byte) 3) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + // [14] if((byte) main::i#1!=(byte) 3) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #3 bne __b1_from___b7 jmp __breturn // main::@return __breturn: - // [16] return + // [15] return rts // main::@5 __b5: - // [17] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 -- vbuaa=vbuxx_plus_vbuc1 + // [16] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 -- vbuaa=vbuxx_plus_vbuc1 txa clc adc #3 jmp __b7_from___b5 // main::@2 __b2: - // [18] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 -- vbuaa=vbuxx_plus_vbuc1 + // [17] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 -- vbuaa=vbuxx_plus_vbuc1 txa clc adc #3 @@ -636,13 +629,12 @@ Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE (void()) main() -(byte~) main::$0 reg byte a 22.0 (byte~) main::$10 reg byte a 22.0 (byte~) main::$11 reg byte a 33.0 (byte~) main::$2 reg byte a 22.0 (byte~) main::$4 reg byte a 22.0 (byte~) main::$5 reg byte a 33.0 -(byte~) main::$6 reg byte a 22.0 +(byte~) main::$6 zp[1]:4 4.714285714285714 (byte~) main::$8 reg byte a 22.0 (label) main::@1 (label) main::@2 @@ -654,9 +646,9 @@ FINAL SYMBOL TABLE (label) main::@return (byte) main::i (byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.866666666666666 +(byte) main::i#2 reg byte x 5.5 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:2 4.714285714285714 +(byte*) main::screen#1 screen zp[2]:2 5.5 (byte*) main::screen#2 screen zp[2]:2 7.333333333333333 (byte*) main::screen#3 screen zp[2]:2 4.714285714285714 @@ -664,12 +656,11 @@ reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::screen#3 main::screen#2 main::screen#1 ] reg byte a [ main::$5 main::$4 main::$2 ] reg byte a [ main::$11 main::$10 main::$8 ] -reg byte a [ main::$0 ] -reg byte a [ main::$6 ] +zp[1]:4 [ main::$6 ] FINAL ASSEMBLER -Score: 1071 +Score: 1101 // File Comments // Tests optimization of identical sub-expressions @@ -680,6 +671,7 @@ Score: 1071 // Global Constants & labels // main main: { + .label __6 = 4 .label screen = 2 // [1] phi from main to main::@1 [phi:main->main::@1] // [1] phi (byte*) main::screen#3 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 @@ -695,12 +687,13 @@ main: { // main::@1 __b1: // i&1 - // [2] (byte~) main::$0 ← (byte) main::i#2 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 - txa - and #1 + // [2] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 -- vbuz1=vbuxx_band_vbuc1 + lda #1 + sax.z __6 // (i&1)?i+3:i*4 - // [3] if((byte) 0!=(byte~) main::$0) goto main::@2 -- vbuc1_neq_vbuaa_then_la1 - cmp #0 + // [3] if((byte) 0!=(byte~) main::$6) goto main::@2 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z __6 bne __b2 // main::@3 // [4] (byte~) main::$2 ← (byte) main::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 @@ -721,54 +714,51 @@ main: { bne !+ inc.z screen+1 !: - // i&1 - // [8] (byte~) main::$6 ← (byte) main::i#2 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 - txa - and #1 // (i&1)?i+3:i*4 - // [9] if((byte) 0!=(byte~) main::$6) goto main::@5 -- vbuc1_neq_vbuaa_then_la1 - cmp #0 + // [8] if((byte) 0!=(byte~) main::$6) goto main::@5 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z __6 bne __b5 // main::@6 - // [10] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 + // [9] (byte~) main::$8 ← (byte) main::i#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 txa asl asl - // [11] phi from main::@5 main::@6 to main::@7 [phi:main::@5/main::@6->main::@7] - // [11] phi (byte~) main::$11 = (byte~) main::$10 [phi:main::@5/main::@6->main::@7#0] -- register_copy + // [10] phi from main::@5 main::@6 to main::@7 [phi:main::@5/main::@6->main::@7] + // [10] phi (byte~) main::$11 = (byte~) main::$10 [phi:main::@5/main::@6->main::@7#0] -- register_copy // main::@7 __b7: // *screen++ = (i&1)?i+3:i*4 - // [12] *((byte*) main::screen#1) ← (byte~) main::$11 -- _deref_pbuz1=vbuaa + // [11] *((byte*) main::screen#1) ← (byte~) main::$11 -- _deref_pbuz1=vbuaa ldy #0 sta (screen),y // *screen++ = (i&1)?i+3:i*4; - // [13] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 -- pbuz1=_inc_pbuz1 + // [12] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 -- pbuz1=_inc_pbuz1 inc.z screen bne !+ inc.z screen+1 !: // for( byte i: 0..2) - // [14] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + // [13] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - // [15] if((byte) main::i#1!=(byte) 3) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + // [14] if((byte) main::i#1!=(byte) 3) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #3 bne __b1 // main::@return // } - // [16] return + // [15] return rts // main::@5 __b5: // (i&1)?i+3:i*4 - // [17] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 -- vbuaa=vbuxx_plus_vbuc1 + // [16] (byte~) main::$10 ← (byte) main::i#2 + (byte) 3 -- vbuaa=vbuxx_plus_vbuc1 txa clc adc #3 jmp __b7 // main::@2 __b2: - // [18] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 -- vbuaa=vbuxx_plus_vbuc1 + // [17] (byte~) main::$4 ← (byte) main::i#2 + (byte) 3 -- vbuaa=vbuxx_plus_vbuc1 txa clc adc #3 diff --git a/src/test/ref/subexpr-optimize-4.sym b/src/test/ref/subexpr-optimize-4.sym index f0137930f..7b276d6ca 100644 --- a/src/test/ref/subexpr-optimize-4.sym +++ b/src/test/ref/subexpr-optimize-4.sym @@ -1,11 +1,10 @@ (void()) main() -(byte~) main::$0 reg byte a 22.0 (byte~) main::$10 reg byte a 22.0 (byte~) main::$11 reg byte a 33.0 (byte~) main::$2 reg byte a 22.0 (byte~) main::$4 reg byte a 22.0 (byte~) main::$5 reg byte a 33.0 -(byte~) main::$6 reg byte a 22.0 +(byte~) main::$6 zp[1]:4 4.714285714285714 (byte~) main::$8 reg byte a 22.0 (label) main::@1 (label) main::@2 @@ -17,9 +16,9 @@ (label) main::@return (byte) main::i (byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.866666666666666 +(byte) main::i#2 reg byte x 5.5 (byte*) main::screen -(byte*) main::screen#1 screen zp[2]:2 4.714285714285714 +(byte*) main::screen#1 screen zp[2]:2 5.5 (byte*) main::screen#2 screen zp[2]:2 7.333333333333333 (byte*) main::screen#3 screen zp[2]:2 4.714285714285714 @@ -27,5 +26,4 @@ reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::screen#3 main::screen#2 main::screen#1 ] reg byte a [ main::$5 main::$4 main::$2 ] reg byte a [ main::$11 main::$10 main::$8 ] -reg byte a [ main::$0 ] -reg byte a [ main::$6 ] +zp[1]:4 [ main::$6 ]