From c7b137d631453971519a64639b4c84960f126f7f Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Sat, 30 Dec 2017 11:55:28 +0100 Subject: [PATCH] Added working test for signed multiplication. Refactored AsmFragment synthesis away from relying on vwuc. --- .../kickc/fragment/AsmFragmentManager.java | 64 +- ...asm => _deref_pbuc1=_dec__deref_pbuc1.asm} | 0 ...asm => _deref_pbuc1=_inc__deref_pbuc1.asm} | 0 ...vwuc1=vbuaa.asm => _deref_pbuc1=vbuaa.asm} | 0 ...vwuc1=vbuc2.asm => _deref_pbuc1=vbuc2.asm} | 0 ...vwuc1=vbuxx.asm => _deref_pbuc1=vbuxx.asm} | 0 ...vwuc1=vbuyy.asm => _deref_pbuc1=vbuyy.asm} | 0 ...vwuc1=vbuz1.asm => _deref_pbuc1=vbuz1.asm} | 0 ...uaa.asm => pbuc1_derefidx_vbuaa=vbuaa.asm} | 0 ...uc2.asm => pbuc1_derefidx_vbuaa=vbuc2.asm} | 0 ...uxx.asm => pbuc1_derefidx_vbuaa=vbuxx.asm} | 0 ...uyy.asm => pbuc1_derefidx_vbuaa=vbuyy.asm} | 0 ...uz1.asm => pbuc1_derefidx_vbuaa=vbuz1.asm} | 0 ...uc3.asm => pbuc1_derefidx_vbuc2=vbuc3.asm} | 0 ...uaa.asm => pbuc1_derefidx_vbuxx=vbuaa.asm} | 0 ...uc2.asm => pbuc1_derefidx_vbuxx=vbuc2.asm} | 0 ...uxx.asm => pbuc1_derefidx_vbuxx=vbuxx.asm} | 0 ...uyy.asm => pbuc1_derefidx_vbuxx=vbuyy.asm} | 0 ...uz1.asm => pbuc1_derefidx_vbuxx=vbuz1.asm} | 0 ...uaa.asm => pbuc1_derefidx_vbuyy=vbuaa.asm} | 0 ...uc2.asm => pbuc1_derefidx_vbuyy=vbuc2.asm} | 0 ...uxx.asm => pbuc1_derefidx_vbuyy=vbuxx.asm} | 0 ...uyy.asm => pbuc1_derefidx_vbuyy=vbuyy.asm} | 0 ...uz1.asm => pbuc1_derefidx_vbuyy=vbuz1.asm} | 0 ...saa.asm => pbuc1_derefidx_vbuz1=vbsaa.asm} | 0 ...uaa.asm => pbuc1_derefidx_vbuz1=vbuaa.asm} | 0 ...uc2.asm => pbuc1_derefidx_vbuz1=vbuc2.asm} | 0 ...uxx.asm => pbuc1_derefidx_vbuz1=vbuxx.asm} | 0 ...uyy.asm => pbuc1_derefidx_vbuz1=vbuyy.asm} | 0 ...uz1.asm => pbuc1_derefidx_vbuz1=vbuz1.asm} | 0 ...uc2.asm => pbuc1_derefidx_vwuz1=vbuc2.asm} | 0 .../kickc/fragment/asm/pbuz1=pbuc1.asm | 4 + .../fragment/asm/pbuz1_neq_vwuc1_then_la1.asm | 6 - .../fragment/asm/vbsaa_ge_0_then_la1.asm | 2 + .../fragment/asm/vbsaa_le_0_then_la1.asm | 2 + .../kickc/fragment/asm/vbsxx=_dec_vbsxx.asm | 1 + .../kickc/fragment/asm/vbsxx=_inc_vbsxx.asm | 1 + .../fragment/asm/vbsxx_ge_0_then_la1.asm | 2 + .../fragment/asm/vbsxx_le_0_then_la1.asm | 2 + .../kickc/fragment/asm/vbsyy=_dec_vbsyy.asm | 1 + .../kickc/fragment/asm/vbsyy=_inc_vbsyy.asm | 1 + .../fragment/asm/vbsyy_ge_0_then_la1.asm | 2 + .../fragment/asm/vbsyy_le_0_then_la1.asm | 2 + ...deref_vwuc1.asm => vbuaa=_deref_pbuc1.asm} | 0 ..._deref_pbuz1_bor_pbuc1_derefidx_vbuyy.asm} | 0 ...uaa.asm => vbuaa=pbuc1_derefidx_vbuaa.asm} | 0 ...uxx.asm => vbuaa=pbuc1_derefidx_vbuxx.asm} | 0 ...uyy.asm => vbuaa=pbuc1_derefidx_vbuyy.asm} | 0 ...uz1.asm => vbuaa=pbuc1_derefidx_vbuz1.asm} | 0 .../asm/vbuaa=vbuaa_bor__hi_vwuz1.asm | 1 + ... vbuaa=vbuaa_bor_pbuc1_derefidx_vbuxx.asm} | 0 ... vbuaa=vbuaa_bor_pbuc1_derefidx_vbuyy.asm} | 0 .../fragment/asm/vbuaa=vbuaa_bxor_vbuz1.asm | 2 +- ...vbuaa=vbuaa_plus_pbuc1_derefidx_vbuxx.asm} | 0 ...vbuaa=vbuaa_plus_pbuc1_derefidx_vbuyy.asm} | 0 .../fragment/asm/vbuaa=vbuxx_bxor_vbuaa.asm | 2 +- .../fragment/asm/vbuaa=vbuyy_bxor_vbuaa.asm | 2 +- ... vbuaa=vbuz1_bor_pbuc1_derefidx_vbuz2.asm} | 0 ...deref_vwuc1.asm => vbuxx=_deref_pbuc1.asm} | 0 .../fragment/asm/vbuxx_le_0_then_la1.asm | 2 + .../fragment/asm/vbuxx_neq_vbuyy_then_la1.asm | 3 + ...deref_vwuc1.asm => vbuyy=_deref_pbuc1.asm} | 0 ...uxx.asm => vbuyy=pbuc1_derefidx_vbuxx.asm} | 0 .../fragment/asm/vbuyy_le_0_then_la1.asm | 2 + .../fragment/asm/vbuyy_neq_vbuxx_then_la1.asm | 3 + .../kickc/fragment/asm/vwsz1=_sword_vwuz1.asm | 1 + .../kickc/fragment/asm/vwsz1=_sword_vwuz2.asm | 4 + .../fragment/asm/vwsz1=vwsz1_minus_vbsaa.asm | 13 + .../fragment/asm/vwsz1=vwsz1_plus_vbsaa.asm | 13 + .../fragment/asm/vwsz1=vwsz1_plus_vwsz2.asm | 7 + .../fragment/asm/vwsz1=vwsz2_minus_vbsaa.asm | 13 + .../fragment/asm/vwsz1=vwsz2_plus_vbsaa.asm | 13 + .../kickc/fragment/asm/vwuz1=_word_vbsz2.asm | 4 + .../kickc/fragment/asm/vwuz1=_word_vwsz1.asm | 1 + .../fragment/asm/vwuz1=vbuaa_plus_vwuz1.asm | 6 +- ...vwuz1=vbuaa_word_pbuc1_derefidx_vbuxx.asm} | 0 ...vwuz1=vbuaa_word_pbuc1_derefidx_vbuyy.asm} | 0 ...asm => vwuz1=vbuc1_setlo__deref_pbuc2.asm} | 0 ...asm => vwuz1=vwuz1_sethi__deref_pbuc1.asm} | 0 ...asm => vwuz1=vwuz2_sethi__deref_pbuc1.asm} | 0 ...en_la1.asm => vwuz1_lt_vwuc1_then_la1.asm} | 0 ...en_la1.asm => vwuz1_lt_vwuz2_then_la1.asm} | 0 .../fragment/asm/vwuz1_neq_vwuc1_then_la1.asm | 6 +- .../kickc/model/SymbolTypeInference.java | 10 +- .../dk/camelot64/kickc/test/TestPrograms.java | 4 +- .../java/dk/camelot64/kickc/test/multiply.kc | 14 + .../java/dk/camelot64/kickc/test/print.kc | 20 +- .../dk/camelot64/kickc/test/ref/casting.log | 18 +- .../kickc/test/ref/const-identification.asm | 10 +- .../kickc/test/ref/const-identification.log | 52 +- .../kickc/test/ref/const-identification.sym | 10 +- .../dk/camelot64/kickc/test/ref/constants.cfg | 8 +- .../dk/camelot64/kickc/test/ref/constants.log | 346 +- .../dk/camelot64/kickc/test/ref/constants.sym | 2 +- .../dk/camelot64/kickc/test/ref/immzero.asm | 6 +- .../dk/camelot64/kickc/test/ref/immzero.log | 22 +- .../kickc/test/ref/incrementinarray.cfg | 8 +- .../kickc/test/ref/incrementinarray.log | 278 +- .../kickc/test/ref/incrementinarray.sym | 2 +- .../dk/camelot64/kickc/test/ref/printmsg.cfg | 8 +- .../dk/camelot64/kickc/test/ref/printmsg.log | 276 +- .../dk/camelot64/kickc/test/ref/printmsg.sym | 2 +- .../camelot64/kickc/test/ref/ptr-complex.asm | 12 +- .../camelot64/kickc/test/ref/ptr-complex.log | 36 +- .../camelot64/kickc/test/ref/signed-words.asm | 4 +- .../camelot64/kickc/test/ref/signed-words.log | 48 +- .../camelot64/kickc/test/ref/sinus-basic.asm | 2 +- .../camelot64/kickc/test/ref/sinus-basic.cfg | 12 +- .../camelot64/kickc/test/ref/sinus-basic.log | 495 +- .../camelot64/kickc/test/ref/sinus-basic.sym | 4 +- .../kickc/test/ref/sinus-sprites.asm | 6 +- .../kickc/test/ref/sinus-sprites.cfg | 8 +- .../kickc/test/ref/sinus-sprites.log | 656 +- .../kickc/test/ref/sinus-sprites.sym | 11 +- .../kickc/test/ref/test-multiply.asm | 368 +- .../kickc/test/ref/test-multiply.cfg | 611 +- .../kickc/test/ref/test-multiply.log | 10355 ++++++++++++---- .../kickc/test/ref/test-multiply.sym | 256 +- .../dk/camelot64/kickc/test/ref/zpptr.asm | 4 +- .../dk/camelot64/kickc/test/ref/zpptr.log | 12 +- .../dk/camelot64/kickc/test/test-multiply.kc | 70 +- 121 files changed, 10357 insertions(+), 3897 deletions(-) rename src/main/java/dk/camelot64/kickc/fragment/asm/{_deref_vwuc1=_dec__deref_vwuc1.asm => _deref_pbuc1=_dec__deref_pbuc1.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{_deref_vwuc1=_inc__deref_vwuc1.asm => _deref_pbuc1=_inc__deref_pbuc1.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{_deref_vwuc1=vbuaa.asm => _deref_pbuc1=vbuaa.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{_deref_vwuc1=vbuc2.asm => _deref_pbuc1=vbuc2.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{_deref_vwuc1=vbuxx.asm => _deref_pbuc1=vbuxx.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{_deref_vwuc1=vbuyy.asm => _deref_pbuc1=vbuyy.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{_deref_vwuc1=vbuz1.asm => _deref_pbuc1=vbuz1.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuaa=vbuaa.asm => pbuc1_derefidx_vbuaa=vbuaa.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuaa=vbuc2.asm => pbuc1_derefidx_vbuaa=vbuc2.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuaa=vbuxx.asm => pbuc1_derefidx_vbuaa=vbuxx.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuaa=vbuyy.asm => pbuc1_derefidx_vbuaa=vbuyy.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuaa=vbuz1.asm => pbuc1_derefidx_vbuaa=vbuz1.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuc2=vbuc3.asm => pbuc1_derefidx_vbuc2=vbuc3.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuxx=vbuaa.asm => pbuc1_derefidx_vbuxx=vbuaa.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuxx=vbuc2.asm => pbuc1_derefidx_vbuxx=vbuc2.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuxx=vbuxx.asm => pbuc1_derefidx_vbuxx=vbuxx.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuxx=vbuyy.asm => pbuc1_derefidx_vbuxx=vbuyy.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuxx=vbuz1.asm => pbuc1_derefidx_vbuxx=vbuz1.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuyy=vbuaa.asm => pbuc1_derefidx_vbuyy=vbuaa.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuyy=vbuc2.asm => pbuc1_derefidx_vbuyy=vbuc2.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuyy=vbuxx.asm => pbuc1_derefidx_vbuyy=vbuxx.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuyy=vbuyy.asm => pbuc1_derefidx_vbuyy=vbuyy.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuyy=vbuz1.asm => pbuc1_derefidx_vbuyy=vbuz1.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuz1=vbsaa.asm => pbuc1_derefidx_vbuz1=vbsaa.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuz1=vbuaa.asm => pbuc1_derefidx_vbuz1=vbuaa.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuz1=vbuc2.asm => pbuc1_derefidx_vbuz1=vbuc2.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuz1=vbuxx.asm => pbuc1_derefidx_vbuz1=vbuxx.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuz1=vbuyy.asm => pbuc1_derefidx_vbuz1=vbuyy.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vbuz1=vbuz1.asm => pbuc1_derefidx_vbuz1=vbuz1.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuc1_derefidx_vwuz1=vbuc2.asm => pbuc1_derefidx_vwuz1=vbuc2.asm} (100%) create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/pbuz1=pbuc1.asm delete mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/pbuz1_neq_vwuc1_then_la1.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vbsaa_ge_0_then_la1.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vbsaa_le_0_then_la1.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx=_dec_vbsxx.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx=_inc_vbsxx.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx_ge_0_then_la1.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx_le_0_then_la1.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy=_dec_vbsyy.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy=_inc_vbsyy.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy_ge_0_then_la1.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy_le_0_then_la1.asm rename src/main/java/dk/camelot64/kickc/fragment/asm/{vbuaa=_deref_vwuc1.asm => vbuaa=_deref_pbuc1.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vbuaa=_deref_pbuz1_bor_vwuc1_derefidx_vbuyy.asm => vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuyy.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vbuaa=vwuc1_derefidx_vbuaa.asm => vbuaa=pbuc1_derefidx_vbuaa.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vbuaa=vwuc1_derefidx_vbuxx.asm => vbuaa=pbuc1_derefidx_vbuxx.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vbuaa=vwuc1_derefidx_vbuyy.asm => vbuaa=pbuc1_derefidx_vbuyy.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vbuaa=vwuc1_derefidx_vbuz1.asm => vbuaa=pbuc1_derefidx_vbuz1.asm} (100%) create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bor__hi_vwuz1.asm rename src/main/java/dk/camelot64/kickc/fragment/asm/{vbuaa=vbuaa_bor_vwuc1_derefidx_vbuxx.asm => vbuaa=vbuaa_bor_pbuc1_derefidx_vbuxx.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vbuaa=vbuaa_bor_vwuc1_derefidx_vbuyy.asm => vbuaa=vbuaa_bor_pbuc1_derefidx_vbuyy.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vbuaa=vbuaa_plus_vwuc1_derefidx_vbuxx.asm => vbuaa=vbuaa_plus_pbuc1_derefidx_vbuxx.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vbuaa=vbuaa_plus_vwuc1_derefidx_vbuyy.asm => vbuaa=vbuaa_plus_pbuc1_derefidx_vbuyy.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vbuaa=vbuz1_bor_vwuc1_derefidx_vbuz2.asm => vbuaa=vbuz1_bor_pbuc1_derefidx_vbuz2.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vbuxx=_deref_vwuc1.asm => vbuxx=_deref_pbuc1.asm} (100%) create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vbuxx_le_0_then_la1.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vbuxx_neq_vbuyy_then_la1.asm rename src/main/java/dk/camelot64/kickc/fragment/asm/{vbuyy=_deref_vwuc1.asm => vbuyy=_deref_pbuc1.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vbuyy=vwuc1_derefidx_vbuxx.asm => vbuyy=pbuc1_derefidx_vbuxx.asm} (100%) create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vbuyy_le_0_then_la1.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vbuyy_neq_vbuxx_then_la1.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=_sword_vwuz1.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=_sword_vwuz2.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz1_minus_vbsaa.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz1_plus_vbsaa.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz1_plus_vwsz2.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz2_minus_vbsaa.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz2_plus_vbsaa.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=_word_vbsz2.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=_word_vwsz1.asm rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuz1=vbuaa_word_vwuc1_derefidx_vbuxx.asm => vwuz1=vbuaa_word_pbuc1_derefidx_vbuxx.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuz1=vbuaa_word_vwuc1_derefidx_vbuyy.asm => vwuz1=vbuaa_word_pbuc1_derefidx_vbuyy.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuz1=vbuc1_setlo__deref_vwuc2.asm => vwuz1=vbuc1_setlo__deref_pbuc2.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuz1=vwuz1_sethi__deref_vwuc1.asm => vwuz1=vwuz1_sethi__deref_pbuc1.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{vwuz1=vwuz2_sethi__deref_vwuc1.asm => vwuz1=vwuz2_sethi__deref_pbuc1.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{pbuz1_lt_vwuc1_then_la1.asm => vwuz1_lt_vwuc1_then_la1.asm} (100%) rename src/main/java/dk/camelot64/kickc/fragment/asm/{pbuz1_lt_pbuz2_then_la1.asm => vwuz1_lt_vwuz2_then_la1.asm} (100%) diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentManager.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentManager.java index f708cea66..494178ebb 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentManager.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentManager.java @@ -120,9 +120,6 @@ public class AsmFragmentManager { List synths = new ArrayList<>(); - synths.add(new FragmentSynthesis("(.*)pbuc(.)(.*)", null, null, "$1vwuc$2$3", null, null)); - synths.add(new FragmentSynthesis("(.*)pbsc(.)(.*)", null, null, "$1vwuc$2$3", null, null)); - synths.add(new FragmentSynthesis("(.*)=(.*)_(band|bor|bxor|plus)_(vb.aa)", ".*=vb.aa_.*", null, "$1=$4_$3_$2", null, null)); synths.add(new FragmentSynthesis("(.*)=(.*)_(band|bor|bxor|plus)_(vb.xx)", ".*=vb.[ax][ax]_.*", null, "$1=$4_$3_$2", null, null)); synths.add(new FragmentSynthesis("(.*)=(.*)_(band|bor|bxor|plus)_(vb.yy)", ".*=vb.[axy][axy]_.*", null, "$1=$4_$3_$2", null, null)); @@ -133,26 +130,15 @@ public class AsmFragmentManager { synths.add(new FragmentSynthesis("vbsyy=(.*)", null, null, "vbsaa=$1", "tay\n", null)); synths.add(new FragmentSynthesis("vbuz1=(.*)", ".*=.*vb.z1.*", null, "vbuaa=$1", "sta {z1}\n", mapZ)); synths.add(new FragmentSynthesis("vbsz1=(.*)", ".*=.*vb.z1.*", null, "vbsaa=$1", "sta {z1}\n", mapZ)); - synths.add(new FragmentSynthesis("_deref_vwuc1=(.*)", null, null, "vbuaa=$1", "sta {c1}\n", mapC)); + synths.add(new FragmentSynthesis("_deref_pb(.)c1=(.*)", null, null, "vb$1aa=$2", "sta {c1}\n", mapC)); synths.add(new FragmentSynthesis("_deref_pbuz1=(.*)", ".*=.*z1.*", null, "vbuaa=$1", "ldy #0\n" + "sta ({z1}),y\n", mapZ)); synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuz1=(.*)", ".*z1.*z1.*|.*c1.*c1.*", null, "vb$1aa=$2", "ldx {z1}\n"+"sta {c1},x\n", mapZC)); - synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuz1=(.*c1.*)", ".*z1.*z1.*", null, "vb$1aa=$2", "ldx {z1}\n"+"sta {c1},x\n", mapZ)); synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuyy=(.*)", ".*c1.*c1.*", null, "vb$1aa=$2", "sta {c1},y\n", mapC)); synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuxx=(.*)", ".*c1.*c1.*", null, "vb$1aa=$2", "sta {c1},x\n", mapC)); synths.add(new FragmentSynthesis("pb(.)z1_derefidx_vbuz2=(.*)", ".*z1.*z1.*|.*z2.*z2.*", null, "vb$1aa=$2", "ldy {z2}\n"+"sta ({z1}),y\n", mapZ2)); - synths.add(new FragmentSynthesis("(.*)=vbuxx(.*)", ".*=.*vb.aa.*", "txa\n", "$1=vbuaa$2", null, null)); - synths.add(new FragmentSynthesis("(.*)=vbuyy(.*)", ".*=.*vb.aa.*", "tya\n", "$1=vbuaa$2", null, null)); - synths.add(new FragmentSynthesis("(.*)=vbuz1(.*)", ".*=.*vb.aa.*|.*z1.*z1.*", "lda {z1}\n", "$1=vbuaa$2", null, mapZ)); - synths.add(new FragmentSynthesis("(.*)=vbsz1(.*)", ".*=.*vb.aa.*|.*z1.*z1.*", "lda {z1}\n", "$1=vbsaa$2", null, mapZ)); - synths.add(new FragmentSynthesis("(.*)=vbuz2(.*)", ".*=.*vb.aa.*|.*z2.*z2.*|.*z3.*", "lda {z2}\n", "$1=vbuaa$2", null, null)); - synths.add(new FragmentSynthesis("(.*)=vbsz2(.*)", ".*=.*vb.aa.*|.*z2.*z2.*|.*z3.*", "lda {z2}\n", "$1=vbsaa$2", null, null)); - synths.add(new FragmentSynthesis("(.*)=vbuz2", ".*=.*aa.*|.*z2.*=.*", "lda {z2}\n", "$1=vbuaa", null, null)); - synths.add(new FragmentSynthesis("(.*)=vbsz2", ".*=.*aa.*|.*z2.*=.*", "lda {z2}\n", "$1=vbuaa", null, null)); - synths.add(new FragmentSynthesis("(.*)=vbuc1", ".*=.*aa.*", "lda #{c1}\n", "$1=vbuaa", null, mapC)); - synths.add(new FragmentSynthesis("(.*)=vbsc1", ".*=.*aa.*", "lda #{c1}\n", "$1=vbsaa", null, mapC)); - synths.add(new FragmentSynthesis("(.*)=_deref_vwuc1(.*)", ".*=.*aa.*", "lda {c1}\n", "$1=vbuaa$2", null, mapC)); + synths.add(new FragmentSynthesis("(.*)=_deref_pb(.)c1(.*)", ".*=.*aa.*", "lda {c1}\n", "$1=vb$2aa$3", null, mapC)); synths.add(new FragmentSynthesis("(.*)=_deref_pb(.)z1(.*)", ".*z1.*z1.*|.*=.*aa.*|.*=.*yy.*", "ldy #0\n" + "lda ({z1}),y\n", "$1=vb$2aa$3", null, mapZ)); // Convert array indexing with A register to X/Y register by prefixing tax/tay (..._derefidx_vbuaa... -> ..._derefidx_vbuxx... /... _derefidx_vbuyy... ) @@ -172,6 +158,9 @@ public class AsmFragmentManager { synths.add(new FragmentSynthesis("(.*)_derefidx_vbuz1(.*)_derefidx_vbuz1(.*)", ".*z1.*z1.*z1.*|.*yy.*", null, "$1_derefidx_vbuyy$2_derefidx_vbuyy$3", "ldy {z1}\n", mapZ)); synths.add(new FragmentSynthesis("(.*)_derefidx_vbuz2(.*)_derefidx_vbuz2(.*)", ".*z2.*z2.*z2.*|.*xx.*", null, "$1_derefidx_vbuxx$2_derefidx_vbuxx$3", "ldx {z2}\n", mapZ)); synths.add(new FragmentSynthesis("(.*)_derefidx_vbuz2(.*)_derefidx_vbuz2(.*)", ".*z2.*z2.*z2.*|.*yy.*", null, "$1_derefidx_vbuyy$2_derefidx_vbuyy$3", "ldy {z2}\n", mapZ)); + synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuz1=(.*c1.*)", ".*z1.*z1.*", null, "vb$1aa=$2", "ldx {z1}\n"+"sta {c1},x\n", mapZ)); + synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuz1=(.*z1.*)", ".*c1.*c1.*", null, "vb$1aa=$2", "ldx {z1}\n"+"sta {c1},x\n", mapC)); + // Convert X/Y-based array indexing of a constant pointer into A-register by prefixing lda cn,x / lda cn,y ( ...pb.c1_derefidx_vbuxx... / ...pb.c1_derefidx_vbuyy... -> ...vb.aa... ) synths.add(new FragmentSynthesis("(.*)=(.*)pb(.)c1_derefidx_vbuxx(.*)", ".*=.*aa.*|.*c1.*c1.*", "lda {c1},x\n", "$1=$2vb$3aa$4", null, mapC)); synths.add(new FragmentSynthesis("(.*)=(.*c1.*)pb(.)c1_derefidx_vbuxx(.*)", ".*=.*aa.*", "lda {c1},x\n", "$1=$2vb$3aa$4", null, null)); @@ -186,6 +175,14 @@ public class AsmFragmentManager { synths.add(new FragmentSynthesis("(.*)=(.*c2.*)pb(.)c2_derefidx_vbuyy(.*)", ".*=.*aa.*", "lda {c2},y\n", "$1=$2vb$3aa$4", null, null)); synths.add(new FragmentSynthesis("(.*)=(.*)pb(.)c2_derefidx_vbuyy(.*c2.*)", ".*=.*aa.*", "lda {c2},y\n", "$1=$2vb$3aa$4", null, null)); + // Convert zeropage/constants/X/Y in assignments to A-register using LDA/TXA/TYA prefix + synths.add(new FragmentSynthesis("(.*)=(.*)vbuz1(.*)", ".*z1.*=.*|.*=.*aa.*|.*z1.*z1.*", "lda {z1}\n", "$1=$2vbuaa$3", null, mapZ)); + synths.add(new FragmentSynthesis("(.*)=(.*)vbsz1(.*)", ".*z1.*=.*|.*=.*aa.*|.*z1.*z1.*", "lda {z1}\n", "$1=$2vbsaa$3", null, mapZ)); + synths.add(new FragmentSynthesis("(.*)=(.*)vbuz2(.*)", ".*z2.*=.*|.*=.*aa.*|.*z2.*z2.*|.*z3.*", "lda {z2}\n", "$1=$2vbuaa$3", null, null)); + synths.add(new FragmentSynthesis("(.*)=(.*)vbsz2(.*)", ".*z2.*=.*|.*=.*aa.*|.*z2.*z2.*|.*z3.*", "lda {z2}\n", "$1=$2vbsaa$3", null, null)); + synths.add(new FragmentSynthesis("(.*)=(.*)vbuz2(.*z3.*)", ".*z2.*=.*|.*=.*aa.*|.*z2.*z2.*|.*z3.*", "lda {z2}\n", "$1=$2vbuaa$3", null, mapZ3)); + synths.add(new FragmentSynthesis("(.*)=(.*)vbsz2(.*z3.*)", ".*z2.*=.*|.*=.*aa.*|.*z2.*z2.*|.*z3.*", "lda {z2}\n", "$1=$2vbsaa$3", null, mapZ3)); + synths.add(new FragmentSynthesis("(.*)=(.*)_vbuxx", ".*=.*[ax][ax].*xx|.*derefidx_vb.xx", "txa\n", "$1=$2_vbuaa", null, null)); synths.add(new FragmentSynthesis("(.*)=(.*)_vbsxx", ".*=.*[ax][ax].*xx|.*derefidx_vb.xx", "txa\n", "$1=$2_vbsaa", null, null)); synths.add(new FragmentSynthesis("(.*)=(.*)_vbuyy", ".*=.*[ay][ay].*yy|.*derefidx_vb.yy", "tya\n", "$1=$2_vbuaa", null, null)); @@ -200,7 +197,7 @@ public class AsmFragmentManager { synths.add(new FragmentSynthesis("vbuz1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {z1}\n", "vbuaa_$1_$2", null, mapZ)); synths.add(new FragmentSynthesis("vbsz1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {z1}\n", "vbsaa_$1_$2", null, mapZ)); - synths.add(new FragmentSynthesis("_deref_vwuc1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {c1}\n", "vbuaa_$1_$2", null, mapC)); + synths.add(new FragmentSynthesis("_deref_pb(.)c1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {c1}\n", "vb$1aa_$2_$3", null, mapC)); synths.add(new FragmentSynthesis("_deref_pb(.)z1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*|.*vb.yy.*|.*z1.*z1.*", "ldy #0\n" + "lda ({z1}),y\n", "vb$1aa_$2_$3", null, mapZ)); synths.add(new FragmentSynthesis("(.*)_derefidx_vbuz1_(lt|gt|le|ge|eq|neq)_(.*)", ".*z1.*z1.*|.*vb.yy.*", "ldy {z1}\n", "$1_derefidx_vbuyy_$2_$3", null, mapZ)); @@ -229,16 +226,14 @@ public class AsmFragmentManager { synths.add(new FragmentSynthesis("(.*)_eq_(vb.xx)_then_(.*)", ".*vb.[ax][ax].*_eq.*", null, "$2_eq_$1_then_$3", null, null)); synths.add(new FragmentSynthesis("(.*)_eq_(vb.yy)_then_(.*)", ".*vb.[axy][axy].*_eq.*", null, "$2_eq_$1_then_$3", null, null)); - synths.add(new FragmentSynthesis("p..z1=(.*)_(sethi|setlo|plus|minus)_(.*)", null, null, "vwuz1=$1_$2_$3", null, null)); - synths.add(new FragmentSynthesis("(.*)=p..z(.)_(sethi|setlo|plus|minus)_(.*)", null, null, "$1=vwuz$2_$3_$4", null, null)); - // Use unsigned ASM to synthesize signed ASM ( ...vbs... -> ...vbu... ) - synths.add(new FragmentSynthesis("(vbsz.|vbsaa|vbsxx|vbsyy)_(eq|neq)_(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)_then_(.*)", null, null, "$1_$2_$3_then_$4", null, mapSToU)); - synths.add(new FragmentSynthesis("(vbsz.|vbsaa|vbsxx|vbsyy)=(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)", null, null, "$1=$2", null, mapSToU)); - synths.add(new FragmentSynthesis("(vbsz.|vbsaa|vbsxx|vbsyy)=(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)_(plus|band|bxor|bor)_(vbsz.|csoby.|vbsaa|vbsxx|vbsyy)", null, null, "$1=$2_$3_$4", null, mapSToU)); - synths.add(new FragmentSynthesis("(vbsz.|vbsaa|vbsxx|vbsyy)=_(inc|dec)_(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)", null, null, "$1=_$2_$3", null, mapSToU)); + synths.add(new FragmentSynthesis("(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)_(eq|neq)_(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)_then_(.*)", null, null, "$1_$2_$3_then_$4", null, mapSToU)); + synths.add(new FragmentSynthesis("(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)=(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)", null, null, "$1=$2", null, mapSToU)); + synths.add(new FragmentSynthesis("(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)=(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)_(plus|band|bxor|bor)_(vbsz.|csoby.|vbsaa|vbsxx|vbsyy)", null, null, "$1=$2_$3_$4", null, mapSToU)); + synths.add(new FragmentSynthesis("(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)=_(inc|dec)_(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)", null, null, "$1=_$2_$3", null, mapSToU)); + synths.add(new FragmentSynthesis("(vwsz.|vwsc.)_(eq|neq)_(vwsz.|vwsc.)_then_(.*)", null, null, "$1_$2_$3_then_$4", null, mapSToU)); synths.add(new FragmentSynthesis("(vwsz.)=(vwsz.|vwsc.)", null, null, "$1=$2", null, mapSToU)); - synths.add(new FragmentSynthesis("(vwsz.)=(vwsz.|vwsc.)_(plus|band|bxor|bor)_(vwsz.|vwsc.)", null, null, "$1=$2_$3_$4", null, mapSToU)); + synths.add(new FragmentSynthesis("(v.sz.)=(v.s..)_(band|bxor|bor)_(v.s..)", null, null, "$1=$2_$3_$4", null, mapSToU)); synths.add(new FragmentSynthesis("(vbuz.|vbuaa|vbuxx|vbuyy)=_(lo|hi)_vws(z.|c.)", null, null, "$1=_$2_vwu$3", null, mapSToU)); // Use constant word ASM to synthesize unsigned constant byte ASM ( ...vb.c... -> vw.c... ) @@ -260,6 +255,25 @@ public class AsmFragmentManager { synths.add(new FragmentSynthesis("vb(.)aa=_inc_(.*)", null, null, "vb$1aa=$2_plus_1", null, null)); synths.add(new FragmentSynthesis("vb(.)aa=_dec_(.*)", null, null, "vb$1aa=$2_minus_1", null, null)); + // Synthesize XX/YY using AA + synths.add(new FragmentSynthesis("(.*)=(.*)vbuxx(.*)", ".*=.*aa.*|.*derefidx_vb.xx.*", "txa\n", "$1=$2vbuaa$3", null, null)); + synths.add(new FragmentSynthesis("(.*)=(.*)vbsxx(.*)", ".*=.*aa.*|.*derefidx_vb.xx.*", "txa\n", "$1=$2vbsaa$3", null, null)); + synths.add(new FragmentSynthesis("(.*)=(.*)vbuyy(.*)", ".*=.*aa.*|.*derefidx_vb.yy.*", "tya\n", "$1=$2vbuaa$3", null, null)); + synths.add(new FragmentSynthesis("(.*)=(.*)vbsyy(.*)", ".*=.*aa.*|.*derefidx_vb.yy.*", "tya\n", "$1=$2vbsaa$3", null, null)); + // Synthesize constants using AA + synths.add(new FragmentSynthesis("(.*)=(.*)vbuc1(.*)", ".*=.*aa.*|.*c1.*c1.*|.*c1_deref.*", "lda #{c1}\n", "$1=$2vbuaa$3", null, mapC)); + synths.add(new FragmentSynthesis("(.*)=(.*)vbsc1(.*)", ".*=.*aa.*|.*c1.*c1.*|.*c1_deref.*", "lda #{c1}\n", "$1=$2vbsaa$3", null, mapC)); + + // Synthesize some constant pointers as constant words + synths.add(new FragmentSynthesis("(.*)_(lt|gt|le|ge|eq|neq)_p..([cz].)_then_(.*)", null, null, "$1_$2_vwu$3_then_$4", null, null)); + synths.add(new FragmentSynthesis("p..([cz].)_(lt|gt|le|ge|eq|neq)_(.*)", null, null, "vwu$1_$2_$3", null, null)); + synths.add(new FragmentSynthesis("(.*)=p..([zc].)", null, null, "$1=vwu$2", null, null)); + synths.add(new FragmentSynthesis("(.*)=(.*)_(plus|minus|bor|bxor)_p..([cz].)", null, null, "$1=$2_$3_vwu$4", null, null)); + synths.add(new FragmentSynthesis("(.*)=p..([cz].)_(plus|minus|bor|bxor)_(.*)", null, null, "$1=vwu$2_$3_$4", null, null)); + synths.add(new FragmentSynthesis("p..([cz].)=(.*)_(sethi|setlo|plus|minus)_(.*)", null, null, "vwu$1=$2_$3_$4", null, null)); + synths.add(new FragmentSynthesis("(.*)=p..([cz].)_(sethi|setlo|plus|minus)_(.*)", null, null, "$1=vwu$2_$3_$4", null, null)); + + for (FragmentSynthesis synth : synths) { CharStream synthesized = synth.synthesize(signature, log); diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_vwuc1=_dec__deref_vwuc1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbuc1=_dec__deref_pbuc1.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/_deref_vwuc1=_dec__deref_vwuc1.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbuc1=_dec__deref_pbuc1.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_vwuc1=_inc__deref_vwuc1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbuc1=_inc__deref_pbuc1.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/_deref_vwuc1=_inc__deref_vwuc1.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbuc1=_inc__deref_pbuc1.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_vwuc1=vbuaa.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbuc1=vbuaa.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/_deref_vwuc1=vbuaa.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbuc1=vbuaa.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_vwuc1=vbuc2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbuc1=vbuc2.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/_deref_vwuc1=vbuc2.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbuc1=vbuc2.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_vwuc1=vbuxx.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbuc1=vbuxx.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/_deref_vwuc1=vbuxx.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbuc1=vbuxx.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_vwuc1=vbuyy.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbuc1=vbuyy.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/_deref_vwuc1=vbuyy.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbuc1=vbuyy.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_vwuc1=vbuz1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbuc1=vbuz1.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/_deref_vwuc1=vbuz1.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbuc1=vbuz1.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuaa=vbuaa.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuaa=vbuaa.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuaa=vbuaa.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuaa=vbuaa.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuaa=vbuc2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuaa=vbuc2.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuaa=vbuc2.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuaa=vbuc2.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuaa=vbuxx.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuaa=vbuxx.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuaa=vbuxx.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuaa=vbuxx.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuaa=vbuyy.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuaa=vbuyy.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuaa=vbuyy.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuaa=vbuyy.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuaa=vbuz1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuaa=vbuz1.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuaa=vbuz1.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuaa=vbuz1.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuc2=vbuc3.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuc2=vbuc3.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuc2=vbuc3.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuc2=vbuc3.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuxx=vbuaa.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuxx=vbuaa.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuxx=vbuaa.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuxx=vbuaa.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuxx=vbuc2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuxx=vbuc2.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuxx=vbuc2.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuxx=vbuc2.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuxx=vbuxx.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuxx=vbuxx.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuxx=vbuxx.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuxx=vbuxx.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuxx=vbuyy.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuxx=vbuyy.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuxx=vbuyy.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuxx=vbuyy.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuxx=vbuz1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuxx=vbuz1.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuxx=vbuz1.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuxx=vbuz1.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuyy=vbuaa.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuyy=vbuaa.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuyy=vbuaa.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuyy=vbuaa.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuyy=vbuc2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuyy=vbuc2.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuyy=vbuc2.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuyy=vbuc2.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuyy=vbuxx.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuyy=vbuxx.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuyy=vbuxx.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuyy=vbuxx.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuyy=vbuyy.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuyy=vbuyy.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuyy=vbuyy.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuyy=vbuyy.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuyy=vbuz1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuyy=vbuz1.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuyy=vbuz1.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuyy=vbuz1.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuz1=vbsaa.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuz1=vbsaa.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuz1=vbsaa.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuz1=vbsaa.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuz1=vbuaa.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuz1=vbuaa.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuz1=vbuaa.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuz1=vbuaa.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuz1=vbuc2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuz1=vbuc2.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuz1=vbuc2.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuz1=vbuc2.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuz1=vbuxx.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuz1=vbuxx.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuz1=vbuxx.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuz1=vbuxx.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuz1=vbuyy.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuz1=vbuyy.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuz1=vbuyy.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuz1=vbuyy.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuz1=vbuz1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuz1=vbuz1.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vbuz1=vbuz1.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vbuz1=vbuz1.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vwuz1=vbuc2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vwuz1=vbuc2.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuc1_derefidx_vwuz1=vbuc2.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/pbuc1_derefidx_vwuz1=vbuc2.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/pbuz1=pbuc1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuz1=pbuc1.asm new file mode 100644 index 000000000..8716dc864 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuz1=pbuc1.asm @@ -0,0 +1,4 @@ +lda #<{c1} +sta {z1} +lda #>{c1} +sta {z1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/pbuz1_neq_vwuc1_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbuz1_neq_vwuc1_then_la1.asm deleted file mode 100644 index cab121951..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/pbuz1_neq_vwuc1_then_la1.asm +++ /dev/null @@ -1,6 +0,0 @@ -lda {z1}+1 -cmp #>{c1} -bne {la1} -lda {z1} -cmp #<{c1} -bne {la1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbsaa_ge_0_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsaa_ge_0_then_la1.asm new file mode 100644 index 000000000..6458c0a2e --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsaa_ge_0_then_la1.asm @@ -0,0 +1,2 @@ +cmp #0 +bpl {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbsaa_le_0_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsaa_le_0_then_la1.asm new file mode 100644 index 000000000..2d230004c --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsaa_le_0_then_la1.asm @@ -0,0 +1,2 @@ +cmp #1 +bmi {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx=_dec_vbsxx.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx=_dec_vbsxx.asm new file mode 100644 index 000000000..23e2d0ff8 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx=_dec_vbsxx.asm @@ -0,0 +1 @@ +dex \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx=_inc_vbsxx.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx=_inc_vbsxx.asm new file mode 100644 index 000000000..40e44366e --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx=_inc_vbsxx.asm @@ -0,0 +1 @@ +inx \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx_ge_0_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx_ge_0_then_la1.asm new file mode 100644 index 000000000..56719d351 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx_ge_0_then_la1.asm @@ -0,0 +1,2 @@ +cpx #0 +bpl {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx_le_0_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx_le_0_then_la1.asm new file mode 100644 index 000000000..aa0168ac7 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx_le_0_then_la1.asm @@ -0,0 +1,2 @@ +cpx #1 +bmi {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy=_dec_vbsyy.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy=_dec_vbsyy.asm new file mode 100644 index 000000000..37aac7c98 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy=_dec_vbsyy.asm @@ -0,0 +1 @@ +dey \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy=_inc_vbsyy.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy=_inc_vbsyy.asm new file mode 100644 index 000000000..ee2cffde5 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy=_inc_vbsyy.asm @@ -0,0 +1 @@ +iny \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy_ge_0_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy_ge_0_then_la1.asm new file mode 100644 index 000000000..0d718c78a --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy_ge_0_then_la1.asm @@ -0,0 +1,2 @@ +cpy #0 +bpl {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy_le_0_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy_le_0_then_la1.asm new file mode 100644 index 000000000..466349041 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy_le_0_then_la1.asm @@ -0,0 +1,2 @@ +cpy #1 +bmi {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=_deref_vwuc1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=_deref_pbuc1.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=_deref_vwuc1.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=_deref_pbuc1.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=_deref_pbuz1_bor_vwuc1_derefidx_vbuyy.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuyy.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=_deref_pbuz1_bor_vwuc1_derefidx_vbuyy.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuyy.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vwuc1_derefidx_vbuaa.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=pbuc1_derefidx_vbuaa.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vwuc1_derefidx_vbuaa.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=pbuc1_derefidx_vbuaa.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vwuc1_derefidx_vbuxx.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=pbuc1_derefidx_vbuxx.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vwuc1_derefidx_vbuxx.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=pbuc1_derefidx_vbuxx.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vwuc1_derefidx_vbuyy.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=pbuc1_derefidx_vbuyy.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vwuc1_derefidx_vbuyy.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=pbuc1_derefidx_vbuyy.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vwuc1_derefidx_vbuz1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=pbuc1_derefidx_vbuz1.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vwuc1_derefidx_vbuz1.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=pbuc1_derefidx_vbuz1.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bor__hi_vwuz1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bor__hi_vwuz1.asm new file mode 100644 index 000000000..f5de39e43 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bor__hi_vwuz1.asm @@ -0,0 +1 @@ +ora {z1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bor_vwuc1_derefidx_vbuxx.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bor_pbuc1_derefidx_vbuxx.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bor_vwuc1_derefidx_vbuxx.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bor_pbuc1_derefidx_vbuxx.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bor_vwuc1_derefidx_vbuyy.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bor_pbuc1_derefidx_vbuyy.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bor_vwuc1_derefidx_vbuyy.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bor_pbuc1_derefidx_vbuyy.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bxor_vbuz1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bxor_vbuz1.asm index 2d6ab850c..12ee9823e 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bxor_vbuz1.asm +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bxor_vbuz1.asm @@ -1 +1 @@ -xor {z1} +eor {z1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_plus_vwuc1_derefidx_vbuxx.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_plus_pbuc1_derefidx_vbuxx.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_plus_vwuc1_derefidx_vbuxx.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_plus_pbuc1_derefidx_vbuxx.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_plus_vwuc1_derefidx_vbuyy.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_plus_pbuc1_derefidx_vbuyy.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_plus_vwuc1_derefidx_vbuyy.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_plus_pbuc1_derefidx_vbuyy.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuxx_bxor_vbuaa.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuxx_bxor_vbuaa.asm index f352bb223..d1e807eb9 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuxx_bxor_vbuaa.asm +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuxx_bxor_vbuaa.asm @@ -1,2 +1,2 @@ stx $ff -xor $ff \ No newline at end of file +eor $ff \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuyy_bxor_vbuaa.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuyy_bxor_vbuaa.asm index e626b0f3f..ab9973106 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuyy_bxor_vbuaa.asm +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuyy_bxor_vbuaa.asm @@ -1,2 +1,2 @@ sty $ff -xor $ff \ No newline at end of file +eor $ff \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuz1_bor_vwuc1_derefidx_vbuz2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuz1_bor_pbuc1_derefidx_vbuz2.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuz1_bor_vwuc1_derefidx_vbuz2.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuz1_bor_pbuc1_derefidx_vbuz2.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuxx=_deref_vwuc1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuxx=_deref_pbuc1.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vbuxx=_deref_vwuc1.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vbuxx=_deref_pbuc1.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuxx_le_0_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuxx_le_0_then_la1.asm new file mode 100644 index 000000000..d1d800f7b --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuxx_le_0_then_la1.asm @@ -0,0 +1,2 @@ +cpx #0 +beq {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuxx_neq_vbuyy_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuxx_neq_vbuyy_then_la1.asm new file mode 100644 index 000000000..5d8a4ca4c --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuxx_neq_vbuyy_then_la1.asm @@ -0,0 +1,3 @@ +stx $ff +cpy $ff +bne {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuyy=_deref_vwuc1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuyy=_deref_pbuc1.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vbuyy=_deref_vwuc1.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vbuyy=_deref_pbuc1.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuyy=vwuc1_derefidx_vbuxx.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuyy=pbuc1_derefidx_vbuxx.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vbuyy=vwuc1_derefidx_vbuxx.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vbuyy=pbuc1_derefidx_vbuxx.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuyy_le_0_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuyy_le_0_then_la1.asm new file mode 100644 index 000000000..9af1697e9 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuyy_le_0_then_la1.asm @@ -0,0 +1,2 @@ +cpy #0 +beq {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuyy_neq_vbuxx_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuyy_neq_vbuxx_then_la1.asm new file mode 100644 index 000000000..929f7f87a --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuyy_neq_vbuxx_then_la1.asm @@ -0,0 +1,3 @@ +sty $ff +cpx $ff +bne {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=_sword_vwuz1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=_sword_vwuz1.asm new file mode 100644 index 000000000..2f6b2d60f --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=_sword_vwuz1.asm @@ -0,0 +1 @@ +// do nothing \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=_sword_vwuz2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=_sword_vwuz2.asm new file mode 100644 index 000000000..113613e13 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=_sword_vwuz2.asm @@ -0,0 +1,4 @@ +lda {z2} +sta {z1} +lda {z2}+1 +sta {z1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz1_minus_vbsaa.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz1_minus_vbsaa.asm new file mode 100644 index 000000000..6cd0e0806 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz1_minus_vbsaa.asm @@ -0,0 +1,13 @@ +sta $fe +ora #$7f +bmi !+ +lda #0 +!: +sta $ff +sec +lda {z1} +sbc $fe +sta {z1} +lda {z1}+1 +sbc $ff +sta {z1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz1_plus_vbsaa.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz1_plus_vbsaa.asm new file mode 100644 index 000000000..9160d9cb3 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz1_plus_vbsaa.asm @@ -0,0 +1,13 @@ +sta $fe +ora #$7f +bmi !+ +lda #0 +!: +sta $ff +clc +lda {z1} +adc $fe +sta {z1} +lda {z1}+1 +adc $ff +sta {z1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz1_plus_vwsz2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz1_plus_vwsz2.asm new file mode 100644 index 000000000..ae76dfa13 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz1_plus_vwsz2.asm @@ -0,0 +1,7 @@ +clc +lda {z1} +adc {z2} +sta {z1} +lda {z1}+1 +adc {z2}+1 +sta {z1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz2_minus_vbsaa.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz2_minus_vbsaa.asm new file mode 100644 index 000000000..783341638 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz2_minus_vbsaa.asm @@ -0,0 +1,13 @@ +sta $fe +ora #$7f +bmi !+ +lda #0 +!: +sta $ff +sec +lda {z2} +sbc $fe +sta {z1} +lda {z2}+1 +sbc $ff +sta {z1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz2_plus_vbsaa.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz2_plus_vbsaa.asm new file mode 100644 index 000000000..b48021f18 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1=vwsz2_plus_vbsaa.asm @@ -0,0 +1,13 @@ +sta $fe +ora #$7f +bmi !+ +lda #0 +!: +sta $ff +clc +lda {z2} +adc $fe +sta {z1} +lda {z2}+1 +adc $ff +sta {z1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=_word_vbsz2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=_word_vbsz2.asm new file mode 100644 index 000000000..3437a13c1 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=_word_vbsz2.asm @@ -0,0 +1,4 @@ +lda {z2} +sta {z1} +lda #0 +sta {z1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=_word_vwsz1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=_word_vwsz1.asm new file mode 100644 index 000000000..2f6b2d60f --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=_word_vwsz1.asm @@ -0,0 +1 @@ +// do nothing \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vbuaa_plus_vwuz1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vbuaa_plus_vwuz1.asm index d1ff64554..1490102a1 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vbuaa_plus_vwuz1.asm +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vbuaa_plus_vwuz1.asm @@ -1,6 +1,6 @@ clc adc {z1} sta {z1} -bcc !+ -inc {z1}+1 -!: +lda #0 +adc {z1}+1 +sta {z1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vbuaa_word_vwuc1_derefidx_vbuxx.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vbuaa_word_pbuc1_derefidx_vbuxx.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vbuaa_word_vwuc1_derefidx_vbuxx.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vbuaa_word_pbuc1_derefidx_vbuxx.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vbuaa_word_vwuc1_derefidx_vbuyy.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vbuaa_word_pbuc1_derefidx_vbuyy.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vbuaa_word_vwuc1_derefidx_vbuyy.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vbuaa_word_pbuc1_derefidx_vbuyy.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vbuc1_setlo__deref_vwuc2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vbuc1_setlo__deref_pbuc2.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vbuc1_setlo__deref_vwuc2.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vbuc1_setlo__deref_pbuc2.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_sethi__deref_vwuc1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_sethi__deref_pbuc1.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_sethi__deref_vwuc1.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_sethi__deref_pbuc1.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_sethi__deref_vwuc1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_sethi__deref_pbuc1.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_sethi__deref_vwuc1.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_sethi__deref_pbuc1.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/pbuz1_lt_vwuc1_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1_lt_vwuc1_then_la1.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/pbuz1_lt_vwuc1_then_la1.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1_lt_vwuc1_then_la1.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/pbuz1_lt_pbuz2_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1_lt_vwuz2_then_la1.asm similarity index 100% rename from src/main/java/dk/camelot64/kickc/fragment/asm/pbuz1_lt_pbuz2_then_la1.asm rename to src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1_lt_vwuz2_then_la1.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1_neq_vwuc1_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1_neq_vwuc1_then_la1.asm index 382b67672..cab121951 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1_neq_vwuc1_then_la1.asm +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1_neq_vwuc1_then_la1.asm @@ -1,6 +1,6 @@ +lda {z1}+1 +cmp #>{c1} +bne {la1} lda {z1} cmp #<{c1} bne {la1} -lda {z1}+1 -cmp #>{c1} -bne {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java b/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java index 7ab944bda..a10fdcaea 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java +++ b/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java @@ -231,13 +231,13 @@ public class SymbolTypeInference { if(SymbolType.isSByte(type1) && SymbolType.isSByte(type2)) { return SymbolTypeInline.NUMERIC; } - if(SymbolType.isWord(type1) && SymbolType.isWord(type2)) { - return SymbolTypeInline.NUMERIC; + if(SymbolType.isWord(type1) && (SymbolType.isWord(type2) || SymbolType.isByte(type2))) { + return SymbolType.WORD; } - if(SymbolType.isSWord(type1) && SymbolType.isSWord(type2)) { - return SymbolTypeInline.NUMERIC; + if(SymbolType.isSWord(type1) && (SymbolType.isSWord(type2) || SymbolType.isSByte(type2))) { + return SymbolType.SWORD; } - throw new RuntimeException("Type inference case not handled " + type1 + " " + "+" + " " + type2); + throw new RuntimeException("Type inference case not handled " + type1 + " - " + type2); } diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index d763a1d59..0777fb518 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -400,8 +400,8 @@ public class TestPrograms extends TestCase { success &= helper.testOutput(fileName, ".cfg", program.getGraph().toString(program)); success &= helper.testOutput(fileName, ".log", program.getLog().toString()); if (!success) { - System.out.println("\nCOMPILE LOG"); - System.out.println(program.getLog().toString()); + //System.out.println("\nCOMPILE LOG"); + //System.out.println(program.getLog().toString()); fail("Output does not match reference!"); } } diff --git a/src/test/java/dk/camelot64/kickc/test/multiply.kc b/src/test/java/dk/camelot64/kickc/test/multiply.kc index 7672cc188..18f74a31e 100644 --- a/src/test/java/dk/camelot64/kickc/test/multiply.kc +++ b/src/test/java/dk/camelot64/kickc/test/multiply.kc @@ -47,6 +47,7 @@ void init_multiply() { } // Fast multiply two unsigned bytes to a word result +// Done in assembler to utilize fast addition A+X word multiply(byte a, byte b) { const byte* memA = $fe; const byte* memB = $ff; @@ -73,4 +74,17 @@ word multiply(byte a, byte b) { sta memB } return { *memB, *memA }; +} + +// Fast multiply of two signed bytes to a signed word +// Fixes offsets introduced by using unsigned multiplication +signed word signed_multiply(signed byte a, signed byte b) { + word m = multiply((byte)a, (byte) b); + if(a<0) { + >m = (>m)-(byte)b; + } + if(b<0) { + >m = (>m)-(byte)a; + } + return (signed word)m; } \ No newline at end of file diff --git a/src/test/java/dk/camelot64/kickc/test/print.kc b/src/test/java/dk/camelot64/kickc/test/print.kc index d36420cd2..16012fb99 100644 --- a/src/test/java/dk/camelot64/kickc/test/print.kc +++ b/src/test/java/dk/camelot64/kickc/test/print.kc @@ -17,6 +17,24 @@ void print_ln() { char_cursor = line_cursor; } +// Print a signed word as HEX +void print_sword(signed word w) { + if(w<0) { + print_char('-'); + w = -w; + } + print_word((word)w); +} + +// Print a signed byte as HEX +void print_sbyte(signed byte b) { + if(b<0) { + print_char('-'); + b = -b; + } + print_byte((byte)b); +} + // Print a word as HEX void print_word(word w) { print_byte(>w); @@ -26,7 +44,7 @@ void print_word(word w) { // Print a byte as HEX void print_byte(byte b) { // Table of hexadecimal digits - const byte[] hextab = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + const byte[] hextab = "0123456789abcdef"; print_char(hextab[b>>4]); print_char(hextab[b&$f]); } diff --git a/src/test/java/dk/camelot64/kickc/test/ref/casting.log b/src/test/java/dk/camelot64/kickc/test/ref/casting.log index c7b74e01a..2a2aaca8f 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/casting.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/casting.log @@ -63,8 +63,8 @@ proc (void()) w() w::@1: (word) w::w1 ← (word/signed word) 1300 (word) w::w2 ← (word/signed word) 1250 - (byte/signed byte/word/signed word~) w::$0 ← (word) w::w1 - (word) w::w2 - (byte~) w::$1 ← ((byte)) (byte/signed byte/word/signed word~) w::$0 + (word~) w::$0 ← (word) w::w1 - (word) w::w2 + (byte~) w::$1 ← ((byte)) (word~) w::$0 (byte) w::b ← (byte~) w::$1 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte/word~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i @@ -103,7 +103,7 @@ SYMBOLS (byte) main::b2 (signed byte) main::sb (void()) w() -(byte/signed byte/word/signed word~) w::$0 +(word~) w::$0 (byte~) w::$1 (byte/signed byte/word/signed word~) w::$2 (byte/word~) w::$3 @@ -160,8 +160,8 @@ w: scope:[w] from w::@1: scope:[w] from w w::@1 (word) w::w1 ← (word/signed word) 1300 (word) w::w2 ← (word/signed word) 1250 - (byte/signed byte/word/signed word~) w::$0 ← (word) w::w1 - (word) w::w2 - (byte~) w::$1 ← ((byte)) (byte/signed byte/word/signed word~) w::$0 + (word~) w::$0 ← (word) w::w1 - (word) w::w2 + (byte~) w::$1 ← ((byte)) (word~) w::$0 (byte) w::b ← (byte~) w::$1 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte/word~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i @@ -253,8 +253,8 @@ w::@1: scope:[w] from w w::@1 (byte) w::i#2 ← phi( w/(byte) w::i#0 w::@1/(byte) w::i#1 ) (word) w::w1#0 ← (word/signed word) 1300 (word) w::w2#0 ← (word/signed word) 1250 - (byte/signed byte/word/signed word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0 - (byte~) w::$1 ← ((byte)) (byte/signed byte/word/signed word~) w::$0 + (word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0 + (byte~) w::$1 ← ((byte)) (word~) w::$0 (byte) w::b#0 ← (byte~) w::$1 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte/word~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2 @@ -335,7 +335,7 @@ SYMBOL TABLE SSA (signed byte) main::sb (signed byte) main::sb#0 (void()) w() -(byte/signed byte/word/signed word~) w::$0 +(word~) w::$0 (byte~) w::$1 (byte/signed byte/word/signed word~) w::$2 (byte/word~) w::$3 @@ -418,7 +418,7 @@ Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) SCREEN2#0 = SCREEN#0+$0 Constant (const byte*) SCREEN3#0 = SCREEN#0+$2 Constant (const byte*) SCREEN4#0 = SCREEN#0+$4 -Constant (const byte/signed byte/word/signed word) w::$0 = w::w1#0-w::w2#0 +Constant (const word) w::$0 = w::w1#0-w::w2#0 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte) w::b#0 = ((byte))w::$0 Succesful SSA optimization Pass2ConstantIdentification diff --git a/src/test/java/dk/camelot64/kickc/test/ref/const-identification.asm b/src/test/java/dk/camelot64/kickc/test/ref/const-identification.asm index 89c3f1d7e..847720491 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/const-identification.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/const-identification.asm @@ -27,7 +27,7 @@ line: { bcs b1 sta x b2: - ldy x + ldx x jsr plot inc x lda x @@ -37,15 +37,15 @@ line: { breturn: rts b1: - ldy #x0 + ldx #x0 jsr plot jmp breturn } plot: { - ldx plots,y - lda SCREEN,x + ldy plots,x + lda SCREEN,y clc adc #1 - sta SCREEN,x + sta SCREEN,y rts } diff --git a/src/test/java/dk/camelot64/kickc/test/ref/const-identification.log b/src/test/java/dk/camelot64/kickc/test/ref/const-identification.log index d711f7101..dd53396a4 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/const-identification.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/const-identification.log @@ -733,7 +733,7 @@ Uplift Scope [line] 252.5: zp ZP_BYTE:3 [ line::x#2 line::x#1 ] Uplift Scope [main] 34.83: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [plot] best 3894 combination reg byte y [ plot::x#2 plot::x#1 ] reg byte a [ plot::$0 ] reg byte x [ plot::idx#0 ] +Uplifting [plot] best 3894 combination reg byte x [ plot::x#2 plot::x#1 ] reg byte a [ plot::$0 ] reg byte y [ plot::idx#0 ] Uplifting [line] best 3894 combination zp ZP_BYTE:3 [ line::x#2 line::x#1 ] Uplifting [main] best 3744 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 3744 combination @@ -829,8 +829,8 @@ line: { jmp b2 //SEG32 line::@2 b2: - //SEG33 [16] (byte) plot::x#1 ← (byte) line::x#2 [ line::x#2 plot::x#1 ] ( main:2::line:11 [ line::x#2 plot::x#1 ] ) -- vbuyy=vbuz1 - ldy x + //SEG33 [16] (byte) plot::x#1 ← (byte) line::x#2 [ line::x#2 plot::x#1 ] ( main:2::line:11 [ line::x#2 plot::x#1 ] ) -- vbuxx=vbuz1 + ldx x //SEG34 [17] call plot param-assignment [ line::x#2 ] ( main:2::line:11 [ line::x#2 ] ) //SEG35 [23] phi from line::@2 to plot [phi:line::@2->plot] plot_from_b2: @@ -859,21 +859,21 @@ line: { //SEG44 [22] call plot param-assignment [ ] ( main:2::line:11 [ ] ) //SEG45 [23] phi from line::@1 to plot [phi:line::@1->plot] plot_from_b1: - //SEG46 [23] phi (byte) plot::x#2 = (const byte) line::x0#0 [phi:line::@1->plot#0] -- vbuyy=vbuc1 - ldy #x0 + //SEG46 [23] phi (byte) plot::x#2 = (const byte) line::x0#0 [phi:line::@1->plot#0] -- vbuxx=vbuc1 + ldx #x0 jsr plot jmp breturn } //SEG47 plot plot: { - //SEG48 [24] (byte) plot::idx#0 ← *((const byte*) plots#0 + (byte) plot::x#2) [ plot::idx#0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 ] main:2::line:11::plot:22 [ plot::idx#0 ] ) -- vbuxx=pbuc1_derefidx_vbuyy - ldx plots,y - //SEG49 [25] (byte/word~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$0 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx_plus_1 - lda SCREEN,x + //SEG48 [24] (byte) plot::idx#0 ← *((const byte*) plots#0 + (byte) plot::x#2) [ plot::idx#0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 ] main:2::line:11::plot:22 [ plot::idx#0 ] ) -- vbuyy=pbuc1_derefidx_vbuxx + ldy plots,x + //SEG49 [25] (byte/word~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$0 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy_plus_1 + lda SCREEN,y clc adc #1 - //SEG50 [26] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte/word~) plot::$0 [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) -- pbuc1_derefidx_vbuxx=vbuaa - sta SCREEN,x + //SEG50 [26] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte/word~) plot::$0 [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) -- pbuc1_derefidx_vbuyy=vbuaa + sta SCREEN,y jmp breturn //SEG51 plot::@return breturn: @@ -958,17 +958,17 @@ FINAL SYMBOL TABLE (byte/word~) plot::$0 reg byte a 4.0 (label) plot::@return (byte) plot::idx -(byte) plot::idx#0 reg byte x 3.0 +(byte) plot::idx#0 reg byte y 3.0 (byte) plot::x -(byte) plot::x#1 reg byte y 202.0 -(byte) plot::x#2 reg byte y 103.0 +(byte) plot::x#1 reg byte x 202.0 +(byte) plot::x#2 reg byte x 103.0 (byte*) plots (const byte*) plots#0 plots = ((byte*))(word/signed word) 4096 reg byte x [ main::i#2 main::i#1 ] zp ZP_BYTE:2 [ line::x#2 line::x#1 ] -reg byte y [ plot::x#2 plot::x#1 ] -reg byte x [ plot::idx#0 ] +reg byte x [ plot::x#2 plot::x#1 ] +reg byte y [ plot::idx#0 ] reg byte a [ plot::$0 ] @@ -1035,8 +1035,8 @@ line: { //SEG31 [15] phi (byte) line::x#2 = (byte) line::x#1 [phi:line::@8->line::@2#0] -- register_copy //SEG32 line::@2 b2: - //SEG33 [16] (byte) plot::x#1 ← (byte) line::x#2 [ line::x#2 plot::x#1 ] ( main:2::line:11 [ line::x#2 plot::x#1 ] ) -- vbuyy=vbuz1 - ldy x + //SEG33 [16] (byte) plot::x#1 ← (byte) line::x#2 [ line::x#2 plot::x#1 ] ( main:2::line:11 [ line::x#2 plot::x#1 ] ) -- vbuxx=vbuz1 + ldx x //SEG34 [17] call plot param-assignment [ line::x#2 ] ( main:2::line:11 [ line::x#2 ] ) //SEG35 [23] phi from line::@2 to plot [phi:line::@2->plot] //SEG36 [23] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:line::@2->plot#0] -- register_copy @@ -1058,21 +1058,21 @@ line: { b1: //SEG44 [22] call plot param-assignment [ ] ( main:2::line:11 [ ] ) //SEG45 [23] phi from line::@1 to plot [phi:line::@1->plot] - //SEG46 [23] phi (byte) plot::x#2 = (const byte) line::x0#0 [phi:line::@1->plot#0] -- vbuyy=vbuc1 - ldy #x0 + //SEG46 [23] phi (byte) plot::x#2 = (const byte) line::x0#0 [phi:line::@1->plot#0] -- vbuxx=vbuc1 + ldx #x0 jsr plot jmp breturn } //SEG47 plot plot: { - //SEG48 [24] (byte) plot::idx#0 ← *((const byte*) plots#0 + (byte) plot::x#2) [ plot::idx#0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 ] main:2::line:11::plot:22 [ plot::idx#0 ] ) -- vbuxx=pbuc1_derefidx_vbuyy - ldx plots,y - //SEG49 [25] (byte/word~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$0 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx_plus_1 - lda SCREEN,x + //SEG48 [24] (byte) plot::idx#0 ← *((const byte*) plots#0 + (byte) plot::x#2) [ plot::idx#0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 ] main:2::line:11::plot:22 [ plot::idx#0 ] ) -- vbuyy=pbuc1_derefidx_vbuxx + ldy plots,x + //SEG49 [25] (byte/word~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$0 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy_plus_1 + lda SCREEN,y clc adc #1 - //SEG50 [26] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte/word~) plot::$0 [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) -- pbuc1_derefidx_vbuxx=vbuaa - sta SCREEN,x + //SEG50 [26] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte/word~) plot::$0 [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) -- pbuc1_derefidx_vbuyy=vbuaa + sta SCREEN,y //SEG51 plot::@return //SEG52 [27] return [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) rts diff --git a/src/test/java/dk/camelot64/kickc/test/ref/const-identification.sym b/src/test/java/dk/camelot64/kickc/test/ref/const-identification.sym index d492ef567..e626304ef 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/const-identification.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/const-identification.sym @@ -27,15 +27,15 @@ (byte/word~) plot::$0 reg byte a 4.0 (label) plot::@return (byte) plot::idx -(byte) plot::idx#0 reg byte x 3.0 +(byte) plot::idx#0 reg byte y 3.0 (byte) plot::x -(byte) plot::x#1 reg byte y 202.0 -(byte) plot::x#2 reg byte y 103.0 +(byte) plot::x#1 reg byte x 202.0 +(byte) plot::x#2 reg byte x 103.0 (byte*) plots (const byte*) plots#0 plots = ((byte*))(word/signed word) 4096 reg byte x [ main::i#2 main::i#1 ] zp ZP_BYTE:2 [ line::x#2 line::x#1 ] -reg byte y [ plot::x#2 plot::x#1 ] -reg byte x [ plot::idx#0 ] +reg byte x [ plot::x#2 plot::x#1 ] +reg byte y [ plot::idx#0 ] reg byte a [ plot::$0 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/constants.cfg b/src/test/java/dk/camelot64/kickc/test/ref/constants.cfg index 0771cf293..592cf22ef 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/constants.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/constants.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@11 -@11: scope:[] from @begin + to:@13 +@13: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @11 +@end: scope:[] from @13 [3] phi() [ ] ( ) -main: scope:[main] from @11 +main: scope:[main] from @13 [4] phi() [ ] ( main:2 [ ] ) [5] call print_cls param-assignment [ ] ( main:2 [ ] ) to:main::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/constants.log b/src/test/java/dk/camelot64/kickc/test/ref/constants.log index 5479ffe02..1d61f205c 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/constants.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/constants.log @@ -80,6 +80,24 @@ void print_ln() { char_cursor = line_cursor; } +// Print a signed word as HEX +void print_sword(signed word w) { + if(w<0) { + print_char('-'); + w = -w; + } + print_word((word)w); +} + +// Print a signed byte as HEX +void print_sbyte(signed byte b) { + if(b<0) { + print_char('-'); + b = -b; + } + print_byte((byte)b); +} + // Print a word as HEX void print_word(word w) { print_byte(>w); @@ -89,7 +107,7 @@ void print_word(word w) { // Print a byte as HEX void print_byte(byte b) { // Table of hexadecimal digits - const byte[] hextab = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + const byte[] hextab = "0123456789abcdef"; print_char(hextab[b>>4]); print_char(hextab[b&$f]); } @@ -140,6 +158,32 @@ print_ln::@1: print_ln::@return: return endproc // print_ln() +proc (void()) print_sword((signed word) print_sword::w) + (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word) 0 + (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 + if((boolean~) print_sword::$1) goto print_sword::@1 + (void~) print_sword::$2 ← call print_char (byte) '-' + (signed word~) print_sword::$3 ← - (signed word) print_sword::w + (signed word) print_sword::w ← (signed word~) print_sword::$3 +print_sword::@1: + (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w + (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 +print_sword::@return: + return +endproc // print_sword() +proc (void()) print_sbyte((signed byte) print_sbyte::b) + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + (void~) print_sbyte::$2 ← call print_char (byte) '-' + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b + (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3 +print_sbyte::@1: + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b + (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 +print_sbyte::@return: + return +endproc // print_sbyte() proc (void()) print_word((word) print_word::w) (byte~) print_word::$0 ← > (word) print_word::w (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 @@ -149,7 +193,7 @@ print_word::@return: return endproc // print_word() proc (void()) print_byte((byte) print_byte::b) - (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } + (byte[]) print_byte::hextab ← (string) "0123456789abcdef" (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 @@ -314,6 +358,16 @@ SYMBOLS (boolean~) print_ln::$1 (label) print_ln::@1 (label) print_ln::@return +(void()) print_sbyte((signed byte) print_sbyte::b) +(boolean~) print_sbyte::$0 +(boolean~) print_sbyte::$1 +(void~) print_sbyte::$2 +(signed byte~) print_sbyte::$3 +(byte~) print_sbyte::$4 +(void~) print_sbyte::$5 +(label) print_sbyte::@1 +(label) print_sbyte::@return +(signed byte) print_sbyte::b (void()) print_str((byte*) print_str::str) (boolean~) print_str::$0 (label) print_str::@1 @@ -321,6 +375,16 @@ SYMBOLS (label) print_str::@3 (label) print_str::@return (byte*) print_str::str +(void()) print_sword((signed word) print_sword::w) +(boolean~) print_sword::$0 +(boolean~) print_sword::$1 +(void~) print_sword::$2 +(signed word~) print_sword::$3 +(word~) print_sword::$4 +(void~) print_sword::$5 +(label) print_sword::@1 +(label) print_sword::@return +(signed word) print_sword::w (void()) print_word((word) print_word::w) (byte~) print_word::$0 (void~) print_word::$1 @@ -407,6 +471,44 @@ print_ln::@return: scope:[print_ln] from print_ln::@2 to:@return @2: scope:[] from @1 to:@3 +print_sword: scope:[print_sword] from + (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word) 0 + (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 + if((boolean~) print_sword::$1) goto print_sword::@1 + to:print_sword::@2 +print_sword::@1: scope:[print_sword] from print_sword print_sword::@2 + (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w + (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 + to:print_sword::@return +print_sword::@2: scope:[print_sword] from print_sword + (void~) print_sword::$2 ← call print_char (byte) '-' + (signed word~) print_sword::$3 ← - (signed word) print_sword::w + (signed word) print_sword::w ← (signed word~) print_sword::$3 + to:print_sword::@1 +print_sword::@return: scope:[print_sword] from print_sword::@1 + return + to:@return +@3: scope:[] from @2 + to:@4 +print_sbyte: scope:[print_sbyte] from + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + to:print_sbyte::@2 +print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@2 + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b + (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 + to:print_sbyte::@return +print_sbyte::@2: scope:[print_sbyte] from print_sbyte + (void~) print_sbyte::$2 ← call print_char (byte) '-' + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b + (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3 + to:print_sbyte::@1 +print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 + return + to:@return +@4: scope:[] from @3 + to:@5 print_word: scope:[print_word] from (byte~) print_word::$0 ← > (word) print_word::w (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 @@ -416,10 +518,10 @@ print_word: scope:[print_word] from print_word::@return: scope:[print_word] from print_word return to:@return -@3: scope:[] from @2 - to:@4 +@5: scope:[] from @4 + to:@6 print_byte: scope:[print_byte] from - (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } + (byte[]) print_byte::hextab ← (string) "0123456789abcdef" (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 @@ -428,8 +530,8 @@ print_byte: scope:[print_byte] from print_byte::@return: scope:[print_byte] from print_byte return to:@return -@4: scope:[] from @3 - to:@5 +@6: scope:[] from @5 + to:@7 print_char: scope:[print_char] from *((byte*) char_cursor) ← (byte) print_char::ch (byte*) char_cursor ← ++ (byte*) char_cursor @@ -437,8 +539,8 @@ print_char: scope:[print_char] from print_char::@return: scope:[print_char] from print_char return to:@return -@5: scope:[] from @4 - to:@6 +@7: scope:[] from @6 + to:@8 print_cls: scope:[print_cls] from (byte*) print_cls::sc ← ((byte*)) (word/signed word) 1024 to:print_cls::@1 @@ -454,11 +556,11 @@ print_cls::@2: scope:[print_cls] from print_cls::@1 print_cls::@return: scope:[print_cls] from print_cls::@2 return to:@return -@6: scope:[] from @5 +@8: scope:[] from @7 (byte*) BGCOL ← ((byte*)) (word) 53281 (byte) GREEN ← (byte/signed byte/word/signed word) 5 (byte) RED ← (byte/signed byte/word/signed word) 2 - to:@7 + to:@9 main: scope:[main] from (void~) main::$0 ← call print_cls *((byte*) BGCOL) ← (byte) GREEN @@ -468,8 +570,8 @@ main: scope:[main] from main::@return: scope:[main] from main return to:@return -@7: scope:[] from @6 - to:@8 +@9: scope:[] from @8 + to:@10 test_bytes: scope:[test_bytes] from (byte) test_bytes::bb ← (byte/signed byte/word/signed word) 0 (void~) test_bytes::$0 ← call assert_byte (string) "0=0@" (byte) test_bytes::bb (byte/signed byte/word/signed word) 0 @@ -484,8 +586,8 @@ test_bytes: scope:[test_bytes] from test_bytes::@return: scope:[test_bytes] from test_bytes return to:@return -@8: scope:[] from @7 - to:@9 +@10: scope:[] from @9 + to:@11 assert_byte: scope:[assert_byte] from (void~) assert_byte::$0 ← call print_str (byte*) assert_byte::msg (void~) assert_byte::$1 ← call print_str (string) " @" @@ -508,8 +610,8 @@ assert_byte::@4: scope:[assert_byte] from assert_byte::@return: scope:[assert_byte] from assert_byte::@2 return to:@return -@9: scope:[] from @8 - to:@10 +@11: scope:[] from @10 + to:@12 test_sbytes: scope:[test_sbytes] from (signed byte) test_sbytes::bb ← (byte/signed byte/word/signed word) 0 (void~) test_sbytes::$0 ← call assert_sbyte (string) "0=0@" (signed byte) test_sbytes::bb (byte/signed byte/word/signed word) 0 @@ -532,8 +634,8 @@ test_sbytes: scope:[test_sbytes] from test_sbytes::@return: scope:[test_sbytes] from test_sbytes return to:@return -@10: scope:[] from @9 - to:@11 +@12: scope:[] from @11 + to:@13 assert_sbyte: scope:[assert_sbyte] from (void~) assert_sbyte::$0 ← call print_str (byte*) assert_sbyte::msg (void~) assert_sbyte::$1 ← call print_str (string) " @" @@ -556,11 +658,13 @@ assert_sbyte::@4: scope:[assert_sbyte] from assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@2 return to:@return -@11: scope:[] from @10 +@13: scope:[] from @12 call main to:@end -@end: scope:[] from @11 +@end: scope:[] from @13 +Removing unused procedure print_sword +Removing unused procedure print_sbyte Removing unused procedure print_word Removing unused procedure print_byte Removing unused procedure print_char @@ -608,12 +712,14 @@ Removing empty block @2 Removing empty block @3 Removing empty block @4 Removing empty block @5 -Removing empty block print_cls::@2 +Removing empty block @6 Removing empty block @7 -Removing empty block @8 -Removing empty block assert_byte::@4 +Removing empty block print_cls::@2 Removing empty block @9 Removing empty block @10 +Removing empty block assert_byte::@4 +Removing empty block @11 +Removing empty block @12 Removing empty block assert_sbyte::@4 PROCEDURE MODIFY VARIABLE ANALYSIS print_str modifies char_cursor @@ -642,7 +748,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from (byte*) line_cursor#0 ← ((byte*)) (word/signed word) 1024 (byte*) char_cursor#0 ← (byte*) line_cursor#0 - to:@6 + to:@8 print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#66 assert_byte::@3/(byte*) char_cursor#67 assert_byte::@5/(byte*) char_cursor#12 assert_sbyte/(byte*) char_cursor#70 assert_sbyte::@1/(byte*) char_cursor#71 assert_sbyte::@3/(byte*) char_cursor#72 assert_sbyte::@5/(byte*) char_cursor#24 ) (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(byte*) print_str::str#3 assert_byte::@3/(byte*) print_str::str#4 assert_byte::@5/(byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(byte*) print_str::str#7 assert_sbyte::@3/(byte*) print_str::str#8 assert_sbyte::@5/(byte*) print_str::str#6 ) @@ -702,16 +808,16 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 print_cls::@return: scope:[print_cls] from print_cls::@1 return to:@return -@6: scope:[] from @begin +@8: scope:[] from @begin (byte*) line_cursor#54 ← phi( @begin/(byte*) line_cursor#0 ) (byte*) char_cursor#77 ← phi( @begin/(byte*) char_cursor#0 ) (byte*) BGCOL#0 ← ((byte*)) (word) 53281 (byte) GREEN#0 ← (byte/signed byte/word/signed word) 5 (byte) RED#0 ← (byte/signed byte/word/signed word) 2 - to:@11 -main: scope:[main] from @11 - (byte*) line_cursor#49 ← phi( @11/(byte*) line_cursor#48 ) - (byte*) char_cursor#76 ← phi( @11/(byte*) char_cursor#74 ) + to:@13 +main: scope:[main] from @13 + (byte*) line_cursor#49 ← phi( @13/(byte*) line_cursor#48 ) + (byte*) char_cursor#76 ← phi( @13/(byte*) char_cursor#74 ) call print_cls param-assignment to:main::@1 main::@1: scope:[main] from main @@ -1003,23 +1109,23 @@ assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 (byte*) line_cursor#19 ← (byte*) line_cursor#40 return to:@return -@11: scope:[] from @6 - (byte*) line_cursor#48 ← phi( @6/(byte*) line_cursor#54 ) - (byte*) char_cursor#74 ← phi( @6/(byte*) char_cursor#77 ) +@13: scope:[] from @8 + (byte*) line_cursor#48 ← phi( @8/(byte*) line_cursor#54 ) + (byte*) char_cursor#74 ← phi( @8/(byte*) char_cursor#77 ) call main param-assignment - to:@12 -@12: scope:[] from @11 - (byte*) line_cursor#41 ← phi( @11/(byte*) line_cursor#5 ) - (byte*) char_cursor#60 ← phi( @11/(byte*) char_cursor#7 ) + to:@14 +@14: scope:[] from @13 + (byte*) line_cursor#41 ← phi( @13/(byte*) line_cursor#5 ) + (byte*) char_cursor#60 ← phi( @13/(byte*) char_cursor#7 ) (byte*) char_cursor#30 ← (byte*) char_cursor#60 (byte*) line_cursor#20 ← (byte*) line_cursor#41 to:@end -@end: scope:[] from @12 +@end: scope:[] from @14 SYMBOL TABLE SSA -(label) @11 -(label) @12 -(label) @6 +(label) @13 +(label) @14 +(label) @8 (label) @begin (label) @end (byte*) BGCOL @@ -1702,7 +1808,7 @@ Constant (const byte) assert_byte::b#2 = test_bytes::bd#0 Constant (const signed byte) assert_sbyte::b#3 = test_sbytes::be#0 Succesful SSA optimization Pass2ConstantIdentification Culled Empty Block (label) print_ln::@2 -Culled Empty Block (label) @6 +Culled Empty Block (label) @8 Culled Empty Block (label) main::@3 Culled Empty Block (label) test_bytes::@3 Culled Empty Block (label) assert_byte::@7 @@ -1712,7 +1818,7 @@ Culled Empty Block (label) test_sbytes::@5 Culled Empty Block (label) assert_sbyte::@7 Culled Empty Block (label) assert_sbyte::@8 Culled Empty Block (label) assert_sbyte::@9 -Culled Empty Block (label) @12 +Culled Empty Block (label) @14 Succesful SSA optimization Pass2CullEmptyBlocks Not aliassing across scopes: print_str::str#11 print_str::str#1 Not aliassing across scopes: char_cursor#75 char_cursor#65 @@ -1842,12 +1948,12 @@ Constant inlined print_str::str#8 = (const string) assert_sbyte::str2 Constant inlined print_str::str#7 = (const string) assert_sbyte::str1 Constant inlined print_str::str#6 = (const string) assert_sbyte::str Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @11 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return +Block Sequence Planned @begin @13 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) -Block Sequence Planned @begin @11 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return print_ln::@3 test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return print_cls::@3 +Block Sequence Planned @begin @13 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return print_ln::@3 test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return print_cls::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @11 +Adding NOP phi() at start of @13 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@2 @@ -1903,9 +2009,9 @@ Coalesced [87] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 10 phi equivalence classes Culled Empty Block (label) print_ln::@3 Culled Empty Block (label) print_cls::@3 -Block Sequence Planned @begin @11 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return +Block Sequence Planned @begin @13 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @11 +Adding NOP phi() at start of @13 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@2 @@ -1934,14 +2040,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@11 -@11: scope:[] from @begin + to:@13 +@13: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @11 +@end: scope:[] from @13 [3] phi() [ ] ( ) -main: scope:[main] from @11 +main: scope:[main] from @13 [4] phi() [ ] ( main:2 [ ] ) [5] call print_cls param-assignment [ ] ( main:2 [ ] ) to:main::@1 @@ -2098,46 +2204,46 @@ print_cls::@return: scope:[print_cls] from print_cls::@1 DOMINATORS @begin dominated by @begin -@11 dominated by @11 @begin -@end dominated by @end @11 @begin -main dominated by main @11 @begin -main::@1 dominated by main main::@1 @11 @begin -main::@2 dominated by main main::@1 main::@2 @11 @begin -main::@return dominated by main::@return main main::@1 main::@2 @11 @begin -test_sbytes dominated by main test_sbytes main::@1 main::@2 @11 @begin -test_sbytes::@1 dominated by main test_sbytes main::@1 main::@2 @11 @begin test_sbytes::@1 -test_sbytes::@2 dominated by main test_sbytes main::@1 main::@2 @11 @begin test_sbytes::@1 test_sbytes::@2 -test_sbytes::@3 dominated by main test_sbytes main::@1 main::@2 @11 @begin test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 -test_sbytes::@4 dominated by main test_sbytes main::@1 main::@2 @11 @begin test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 -test_sbytes::@return dominated by test_sbytes::@return main test_sbytes main::@1 main::@2 @11 @begin test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 -assert_sbyte dominated by assert_sbyte main test_sbytes main::@1 main::@2 @11 @begin -assert_sbyte::@5 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @11 @begin assert_sbyte::@5 -assert_sbyte::@6 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @11 @begin assert_sbyte::@5 assert_sbyte::@6 -assert_sbyte::@3 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @11 @begin assert_sbyte::@5 assert_sbyte::@3 assert_sbyte::@6 -assert_sbyte::@2 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @11 @begin assert_sbyte::@5 assert_sbyte::@2 assert_sbyte::@6 -assert_sbyte::@return dominated by assert_sbyte assert_sbyte::@return main test_sbytes main::@1 main::@2 @11 @begin assert_sbyte::@5 assert_sbyte::@2 assert_sbyte::@6 -assert_sbyte::@1 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @11 @begin assert_sbyte::@5 assert_sbyte::@1 assert_sbyte::@6 -print_str dominated by main main::@1 @11 @begin print_str -print_str::@1 dominated by main print_str::@1 main::@1 @11 @begin print_str -print_str::@return dominated by print_str::@return main print_str::@1 main::@1 @11 @begin print_str -print_str::@2 dominated by main print_str::@1 print_str::@2 main::@1 @11 @begin print_str -print_ln dominated by main main::@1 @11 @begin print_ln -print_ln::@1 dominated by print_ln::@1 main main::@1 @11 @begin print_ln -print_ln::@return dominated by print_ln::@1 main print_ln::@return main::@1 @11 @begin print_ln -test_bytes dominated by test_bytes main main::@1 @11 @begin -test_bytes::@1 dominated by test_bytes main main::@1 @11 @begin test_bytes::@1 -test_bytes::@2 dominated by test_bytes main main::@1 @11 @begin test_bytes::@2 test_bytes::@1 -test_bytes::@return dominated by test_bytes main main::@1 @11 @begin test_bytes::@2 test_bytes::@1 test_bytes::@return -assert_byte dominated by test_bytes main main::@1 @11 @begin assert_byte -assert_byte::@5 dominated by test_bytes main assert_byte::@5 main::@1 @11 @begin assert_byte -assert_byte::@6 dominated by test_bytes main assert_byte::@5 assert_byte::@6 main::@1 @11 @begin assert_byte -assert_byte::@3 dominated by test_bytes assert_byte::@3 main assert_byte::@5 assert_byte::@6 main::@1 @11 @begin assert_byte -assert_byte::@2 dominated by test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@2 main::@1 @11 @begin assert_byte -assert_byte::@return dominated by test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@2 main::@1 assert_byte::@return @11 @begin assert_byte -assert_byte::@1 dominated by test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@1 main::@1 @11 @begin assert_byte -print_cls dominated by main @11 @begin print_cls -print_cls::@1 dominated by main @11 @begin print_cls::@1 print_cls -print_cls::@return dominated by main print_cls::@return @11 @begin print_cls::@1 print_cls +@13 dominated by @13 @begin +@end dominated by @end @13 @begin +main dominated by main @13 @begin +main::@1 dominated by main main::@1 @13 @begin +main::@2 dominated by main main::@1 main::@2 @13 @begin +main::@return dominated by main::@return main main::@1 main::@2 @13 @begin +test_sbytes dominated by main test_sbytes main::@1 main::@2 @13 @begin +test_sbytes::@1 dominated by main test_sbytes main::@1 main::@2 @13 @begin test_sbytes::@1 +test_sbytes::@2 dominated by main test_sbytes main::@1 main::@2 @13 @begin test_sbytes::@1 test_sbytes::@2 +test_sbytes::@3 dominated by main test_sbytes main::@1 main::@2 @13 @begin test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 +test_sbytes::@4 dominated by main test_sbytes main::@1 main::@2 @13 @begin test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 +test_sbytes::@return dominated by test_sbytes::@return main test_sbytes main::@1 main::@2 @13 @begin test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 +assert_sbyte dominated by assert_sbyte main test_sbytes main::@1 main::@2 @13 @begin +assert_sbyte::@5 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @13 @begin assert_sbyte::@5 +assert_sbyte::@6 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @13 @begin assert_sbyte::@5 assert_sbyte::@6 +assert_sbyte::@3 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @13 @begin assert_sbyte::@5 assert_sbyte::@3 assert_sbyte::@6 +assert_sbyte::@2 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @13 @begin assert_sbyte::@5 assert_sbyte::@2 assert_sbyte::@6 +assert_sbyte::@return dominated by assert_sbyte assert_sbyte::@return main test_sbytes main::@1 main::@2 @13 @begin assert_sbyte::@5 assert_sbyte::@2 assert_sbyte::@6 +assert_sbyte::@1 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @13 @begin assert_sbyte::@5 assert_sbyte::@1 assert_sbyte::@6 +print_str dominated by main main::@1 @13 @begin print_str +print_str::@1 dominated by main print_str::@1 main::@1 @13 @begin print_str +print_str::@return dominated by print_str::@return main print_str::@1 main::@1 @13 @begin print_str +print_str::@2 dominated by main print_str::@1 print_str::@2 main::@1 @13 @begin print_str +print_ln dominated by main main::@1 @13 @begin print_ln +print_ln::@1 dominated by print_ln::@1 main main::@1 @13 @begin print_ln +print_ln::@return dominated by print_ln::@1 main print_ln::@return main::@1 @13 @begin print_ln +test_bytes dominated by test_bytes main main::@1 @13 @begin +test_bytes::@1 dominated by test_bytes main main::@1 @13 @begin test_bytes::@1 +test_bytes::@2 dominated by test_bytes main main::@1 @13 @begin test_bytes::@2 test_bytes::@1 +test_bytes::@return dominated by test_bytes main main::@1 @13 @begin test_bytes::@2 test_bytes::@1 test_bytes::@return +assert_byte dominated by test_bytes main main::@1 @13 @begin assert_byte +assert_byte::@5 dominated by test_bytes main assert_byte::@5 main::@1 @13 @begin assert_byte +assert_byte::@6 dominated by test_bytes main assert_byte::@5 assert_byte::@6 main::@1 @13 @begin assert_byte +assert_byte::@3 dominated by test_bytes assert_byte::@3 main assert_byte::@5 assert_byte::@6 main::@1 @13 @begin assert_byte +assert_byte::@2 dominated by test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@2 main::@1 @13 @begin assert_byte +assert_byte::@return dominated by test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@2 main::@1 assert_byte::@return @13 @begin assert_byte +assert_byte::@1 dominated by test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@1 main::@1 @13 @begin assert_byte +print_cls dominated by main @13 @begin print_cls +print_cls::@1 dominated by main @13 @begin print_cls::@1 print_cls +print_cls::@return dominated by main print_cls::@return @13 @begin print_cls::@1 print_cls NATURAL LOOPS Found back edge: Loop head: print_str::@1 tails: print_str::@2 blocks: null @@ -2269,17 +2375,17 @@ INITIAL ASM .label line_cursor = $a //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] -b11_from_bbegin: - jmp b11 -//SEG4 @11 -b11: +//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] +b13_from_bbegin: + jmp b13 +//SEG4 @13 +b13: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @11 to main [phi:@11->main] -main_from_b11: +//SEG6 [4] phi from @13 to main [phi:@13->main] +main_from_b13: jsr main -//SEG7 [3] phi from @11 to @end [phi:@11->@end] -bend_from_b11: +//SEG7 [3] phi from @13 to @end [phi:@13->@end] +bend_from_b13: jmp bend //SEG8 @end bend: @@ -2906,17 +3012,17 @@ ASSEMBLER BEFORE OPTIMIZATION .label line_cursor = 7 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] -b11_from_bbegin: - jmp b11 -//SEG4 @11 -b11: +//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] +b13_from_bbegin: + jmp b13 +//SEG4 @13 +b13: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @11 to main [phi:@11->main] -main_from_b11: +//SEG6 [4] phi from @13 to main [phi:@13->main] +main_from_b13: jsr main -//SEG7 [3] phi from @11 to @end [phi:@11->@end] -bend_from_b11: +//SEG7 [3] phi from @13 to @end [phi:@13->@end] +bend_from_b13: jmp bend //SEG8 @end bend: @@ -3441,7 +3547,7 @@ print_cls: { } ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b11 +Removing instruction jmp b13 Removing instruction jmp bend Removing instruction jmp b1 Removing instruction jmp b2 @@ -3485,9 +3591,9 @@ Replacing label b2_from_b1 with b2 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b11_from_bbegin: -Removing instruction main_from_b11: -Removing instruction bend_from_b11: +Removing instruction b13_from_bbegin: +Removing instruction main_from_b13: +Removing instruction bend_from_b13: Removing instruction b2_from_b1: Removing instruction test_sbytes_from_b2: Removing instruction b1_from_test_sbytes: @@ -3518,7 +3624,7 @@ Removing instruction b1_from_b6: Removing instruction print_str_from_b1: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b11: +Removing instruction b13: Removing instruction bend: Removing instruction print_cls_from_main: Removing instruction b1: @@ -3558,7 +3664,7 @@ Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @11 +(label) @13 (label) @begin (label) @end (byte*) BGCOL @@ -3690,12 +3796,12 @@ FINAL ASSEMBLER .label char_cursor = 2 .label line_cursor = 7 //SEG2 @begin -//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] -//SEG4 @11 +//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] +//SEG4 @13 //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @11 to main [phi:@11->main] +//SEG6 [4] phi from @13 to main [phi:@13->main] jsr main -//SEG7 [3] phi from @11 to @end [phi:@11->@end] +//SEG7 [3] phi from @13 to @end [phi:@13->@end] //SEG8 @end //SEG9 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/constants.sym b/src/test/java/dk/camelot64/kickc/test/ref/constants.sym index f91bd613b..9f080281a 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/constants.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/constants.sym @@ -1,4 +1,4 @@ -(label) @11 +(label) @13 (label) @begin (label) @end (byte*) BGCOL diff --git a/src/test/java/dk/camelot64/kickc/test/ref/immzero.asm b/src/test/java/dk/camelot64/kickc/test/ref/immzero.asm index bef3b1268..8391e6d23 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/immzero.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/immzero.asm @@ -13,9 +13,9 @@ main: { clc adc w sta w - bcc !+ - inc w+1 - !: + lda #0 + adc w+1 + sta w+1 inx cpx #$b bne b1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/immzero.log b/src/test/java/dk/camelot64/kickc/test/ref/immzero.log index 0b44949e5..3421dd574 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/immzero.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/immzero.log @@ -286,9 +286,9 @@ main: { clc adc w sta w - bcc !+ - inc w+1 - !: + lda #0 + adc w+1 + sta w+1 //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::i#1 [ main::j#1 main::w#1 ] ( main:2 [ main::j#1 main::w#1 ] ) -- vbuz1=_inc_vbuz1 inc j //SEG19 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::j#1 main::w#1 ] ( main:2 [ main::j#1 main::w#1 ] ) -- vbuz1_neq_vbuc1_then_la1 @@ -313,8 +313,8 @@ REGISTER UPLIFT SCOPES Uplift Scope [main] 33: zp ZP_BYTE:2 [ main::i#1 main::j#1 ] 29.33: zp ZP_WORD:3 [ main::w#2 main::w#1 ] Uplift Scope [] -Uplifting [main] best 488 combination reg byte x [ main::i#1 main::j#1 ] zp ZP_WORD:3 [ main::w#2 main::w#1 ] -Uplifting [] best 488 combination +Uplifting [main] best 503 combination reg byte x [ main::i#1 main::j#1 ] zp ZP_WORD:3 [ main::w#2 main::w#1 ] +Uplifting [] best 503 combination Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ main::w#2 main::w#1 ] ASSEMBLER BEFORE OPTIMIZATION @@ -364,9 +364,9 @@ main: { clc adc w sta w - bcc !+ - inc w+1 - !: + lda #0 + adc w+1 + sta w+1 //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::i#1 [ main::j#1 main::w#1 ] ( main:2 [ main::j#1 main::w#1 ] ) -- vbuxx=_inc_vbuxx inx //SEG19 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::j#1 main::w#1 ] ( main:2 [ main::j#1 main::w#1 ] ) -- vbuxx_neq_vbuc1_then_la1 @@ -456,9 +456,9 @@ main: { clc adc w sta w - bcc !+ - inc w+1 - !: + lda #0 + adc w+1 + sta w+1 //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::i#1 [ main::j#1 main::w#1 ] ( main:2 [ main::j#1 main::w#1 ] ) -- vbuxx=_inc_vbuxx inx //SEG19 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::j#1 main::w#1 ] ( main:2 [ main::j#1 main::w#1 ] ) -- vbuxx_neq_vbuc1_then_la1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.cfg b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.cfg index fbeece25b..5fe1494e6 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@7 -@7: scope:[] from @begin + to:@9 +@9: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @7 +@end: scope:[] from @9 [3] phi() [ ] ( ) -main: scope:[main] from @7 +main: scope:[main] from @9 [4] phi() [ ] ( main:2 [ ] ) [5] call print_cls param-assignment [ ] ( main:2 [ ] ) to:main::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.log b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.log index 4cccde487..3ccd534a4 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.log @@ -33,6 +33,24 @@ void print_ln() { char_cursor = line_cursor; } +// Print a signed word as HEX +void print_sword(signed word w) { + if(w<0) { + print_char('-'); + w = -w; + } + print_word((word)w); +} + +// Print a signed byte as HEX +void print_sbyte(signed byte b) { + if(b<0) { + print_char('-'); + b = -b; + } + print_byte((byte)b); +} + // Print a word as HEX void print_word(word w) { print_byte(>w); @@ -42,7 +60,7 @@ void print_word(word w) { // Print a byte as HEX void print_byte(byte b) { // Table of hexadecimal digits - const byte[] hextab = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + const byte[] hextab = "0123456789abcdef"; print_char(hextab[b>>4]); print_char(hextab[b&$f]); } @@ -94,6 +112,32 @@ print_ln::@1: print_ln::@return: return endproc // print_ln() +proc (void()) print_sword((signed word) print_sword::w) + (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word) 0 + (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 + if((boolean~) print_sword::$1) goto print_sword::@1 + (void~) print_sword::$2 ← call print_char (byte) '-' + (signed word~) print_sword::$3 ← - (signed word) print_sword::w + (signed word) print_sword::w ← (signed word~) print_sword::$3 +print_sword::@1: + (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w + (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 +print_sword::@return: + return +endproc // print_sword() +proc (void()) print_sbyte((signed byte) print_sbyte::b) + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + (void~) print_sbyte::$2 ← call print_char (byte) '-' + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b + (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3 +print_sbyte::@1: + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b + (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 +print_sbyte::@return: + return +endproc // print_sbyte() proc (void()) print_word((word) print_word::w) (byte~) print_word::$0 ← > (word) print_word::w (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 @@ -103,7 +147,7 @@ print_word::@return: return endproc // print_word() proc (void()) print_byte((byte) print_byte::b) - (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } + (byte[]) print_byte::hextab ← (string) "0123456789abcdef" (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 @@ -177,6 +221,16 @@ SYMBOLS (boolean~) print_ln::$1 (label) print_ln::@1 (label) print_ln::@return +(void()) print_sbyte((signed byte) print_sbyte::b) +(boolean~) print_sbyte::$0 +(boolean~) print_sbyte::$1 +(void~) print_sbyte::$2 +(signed byte~) print_sbyte::$3 +(byte~) print_sbyte::$4 +(void~) print_sbyte::$5 +(label) print_sbyte::@1 +(label) print_sbyte::@return +(signed byte) print_sbyte::b (void()) print_str((byte*) print_str::str) (boolean~) print_str::$0 (label) print_str::@1 @@ -184,6 +238,16 @@ SYMBOLS (label) print_str::@3 (label) print_str::@return (byte*) print_str::str +(void()) print_sword((signed word) print_sword::w) +(boolean~) print_sword::$0 +(boolean~) print_sword::$1 +(void~) print_sword::$2 +(signed word~) print_sword::$3 +(word~) print_sword::$4 +(void~) print_sword::$5 +(label) print_sword::@1 +(label) print_sword::@return +(signed word) print_sword::w (void()) print_word((word) print_word::w) (byte~) print_word::$0 (void~) print_word::$1 @@ -240,6 +304,44 @@ print_ln::@return: scope:[print_ln] from print_ln::@2 to:@return @2: scope:[] from @1 to:@3 +print_sword: scope:[print_sword] from + (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word) 0 + (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 + if((boolean~) print_sword::$1) goto print_sword::@1 + to:print_sword::@2 +print_sword::@1: scope:[print_sword] from print_sword print_sword::@2 + (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w + (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 + to:print_sword::@return +print_sword::@2: scope:[print_sword] from print_sword + (void~) print_sword::$2 ← call print_char (byte) '-' + (signed word~) print_sword::$3 ← - (signed word) print_sword::w + (signed word) print_sword::w ← (signed word~) print_sword::$3 + to:print_sword::@1 +print_sword::@return: scope:[print_sword] from print_sword::@1 + return + to:@return +@3: scope:[] from @2 + to:@4 +print_sbyte: scope:[print_sbyte] from + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + to:print_sbyte::@2 +print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@2 + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b + (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 + to:print_sbyte::@return +print_sbyte::@2: scope:[print_sbyte] from print_sbyte + (void~) print_sbyte::$2 ← call print_char (byte) '-' + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b + (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3 + to:print_sbyte::@1 +print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 + return + to:@return +@4: scope:[] from @3 + to:@5 print_word: scope:[print_word] from (byte~) print_word::$0 ← > (word) print_word::w (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 @@ -249,10 +351,10 @@ print_word: scope:[print_word] from print_word::@return: scope:[print_word] from print_word return to:@return -@3: scope:[] from @2 - to:@4 +@5: scope:[] from @4 + to:@6 print_byte: scope:[print_byte] from - (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } + (byte[]) print_byte::hextab ← (string) "0123456789abcdef" (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 @@ -261,8 +363,8 @@ print_byte: scope:[print_byte] from print_byte::@return: scope:[print_byte] from print_byte return to:@return -@4: scope:[] from @3 - to:@5 +@6: scope:[] from @5 + to:@7 print_char: scope:[print_char] from *((byte*) char_cursor) ← (byte) print_char::ch (byte*) char_cursor ← ++ (byte*) char_cursor @@ -270,8 +372,8 @@ print_char: scope:[print_char] from print_char::@return: scope:[print_char] from print_char return to:@return -@5: scope:[] from @4 - to:@6 +@7: scope:[] from @6 + to:@8 print_cls: scope:[print_cls] from (byte*) print_cls::sc ← ((byte*)) (word/signed word) 1024 to:print_cls::@1 @@ -287,9 +389,9 @@ print_cls::@2: scope:[print_cls] from print_cls::@1 print_cls::@return: scope:[print_cls] from print_cls::@2 return to:@return -@6: scope:[] from @5 +@8: scope:[] from @7 (byte[]) txt ← (string) "camelot@" - to:@7 + to:@9 main: scope:[main] from (void~) main::$0 ← call print_cls (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -307,11 +409,13 @@ main::@2: scope:[main] from main::@1 main::@return: scope:[main] from main::@2 return to:@return -@7: scope:[] from @6 +@9: scope:[] from @8 call main to:@end -@end: scope:[] from @7 +@end: scope:[] from @9 +Removing unused procedure print_sword +Removing unused procedure print_sbyte Removing unused procedure print_word Removing unused procedure print_byte Removing unused procedure print_char @@ -328,6 +432,8 @@ Removing empty block @2 Removing empty block @3 Removing empty block @4 Removing empty block @5 +Removing empty block @6 +Removing empty block @7 Removing empty block print_cls::@2 Removing empty block main::@2 PROCEDURE MODIFY VARIABLE ANALYSIS @@ -347,7 +453,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from (byte*) line_cursor#0 ← ((byte*)) (word/signed word) 1024 (byte*) char_cursor#0 ← (byte*) line_cursor#0 - to:@6 + to:@8 print_str: scope:[print_str] from main::@1 (byte*) char_cursor#21 ← phi( main::@1/(byte*) char_cursor#19 ) (byte*) print_str::str#4 ← phi( main::@1/(byte*) print_str::str#1 ) @@ -407,14 +513,14 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 print_cls::@return: scope:[print_cls] from print_cls::@1 return to:@return -@6: scope:[] from @begin +@8: scope:[] from @begin (byte*) line_cursor#16 ← phi( @begin/(byte*) line_cursor#0 ) (byte*) char_cursor#23 ← phi( @begin/(byte*) char_cursor#0 ) (byte[]) txt#0 ← (const string) $0 - to:@7 -main: scope:[main] from @7 - (byte*) line_cursor#18 ← phi( @7/(byte*) line_cursor#14 ) - (byte*) char_cursor#24 ← phi( @7/(byte*) char_cursor#20 ) + to:@9 +main: scope:[main] from @9 + (byte*) line_cursor#18 ← phi( @9/(byte*) line_cursor#14 ) + (byte*) char_cursor#24 ← phi( @9/(byte*) char_cursor#20 ) call print_cls param-assignment to:main::@3 main::@3: scope:[main] from main @@ -454,24 +560,24 @@ main::@return: scope:[main] from main::@5 (byte*) line_cursor#4 ← (byte*) line_cursor#10 return to:@return -@7: scope:[] from @6 - (byte*) line_cursor#14 ← phi( @6/(byte*) line_cursor#16 ) - (byte*) char_cursor#20 ← phi( @6/(byte*) char_cursor#23 ) +@9: scope:[] from @8 + (byte*) line_cursor#14 ← phi( @8/(byte*) line_cursor#16 ) + (byte*) char_cursor#20 ← phi( @8/(byte*) char_cursor#23 ) call main param-assignment - to:@8 -@8: scope:[] from @7 - (byte*) line_cursor#11 ← phi( @7/(byte*) line_cursor#4 ) - (byte*) char_cursor#16 ← phi( @7/(byte*) char_cursor#7 ) + to:@10 +@10: scope:[] from @9 + (byte*) line_cursor#11 ← phi( @9/(byte*) line_cursor#4 ) + (byte*) char_cursor#16 ← phi( @9/(byte*) char_cursor#7 ) (byte*) char_cursor#8 ← (byte*) char_cursor#16 (byte*) line_cursor#5 ← (byte*) line_cursor#11 to:@end -@end: scope:[] from @8 +@end: scope:[] from @10 SYMBOL TABLE SSA (const string) $0 = (string) "camelot@" -(label) @6 -(label) @7 +(label) @10 (label) @8 +(label) @9 (label) @begin (label) @end (byte*) char_cursor @@ -633,9 +739,9 @@ Consolidated array index constant in *(txt#0+1) Consolidated array index constant in *(txt#0+1) Succesful SSA optimization Pass2ConstantAdditionElimination Culled Empty Block (label) print_ln::@2 -Culled Empty Block (label) @6 -Culled Empty Block (label) main::@3 Culled Empty Block (label) @8 +Culled Empty Block (label) main::@3 +Culled Empty Block (label) @10 Succesful SSA optimization Pass2CullEmptyBlocks Not aliassing across scopes: char_cursor#10 char_cursor#19 Not aliassing across scopes: line_cursor#6 line_cursor#13 @@ -658,13 +764,13 @@ Constant inlined print_cls::$0 = (word/signed word) 1024+(word/signed word) 1000 Constant inlined $0 = (const string) txt#0 Constant inlined print_cls::sc#0 = ((byte*))(word/signed word) 1024 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @7 @end main main::@1 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return +Block Sequence Planned @begin @9 @end main main::@1 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return Added new block during phi lifting main::@6(between main::@5 and main::@1) Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) -Block Sequence Planned @begin @7 @end main main::@1 main::@4 main::@5 main::@return main::@6 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return print_cls::@3 +Block Sequence Planned @begin @9 @end main main::@1 main::@4 main::@5 main::@return main::@6 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return print_cls::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @7 +Adding NOP phi() at start of @9 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@4 @@ -693,9 +799,9 @@ Coalesced [38] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 5 phi equivalence classes Culled Empty Block (label) print_ln::@3 Culled Empty Block (label) print_cls::@3 -Block Sequence Planned @begin @7 @end main main::@1 main::@4 main::@5 main::@return main::@6 print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return +Block Sequence Planned @begin @9 @end main main::@1 main::@4 main::@5 main::@return main::@6 print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @7 +Adding NOP phi() at start of @9 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@4 @@ -713,14 +819,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@7 -@7: scope:[] from @begin + to:@9 +@9: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @7 +@end: scope:[] from @9 [3] phi() [ ] ( ) -main: scope:[main] from @7 +main: scope:[main] from @9 [4] phi() [ ] ( main:2 [ ] ) [5] call print_cls param-assignment [ ] ( main:2 [ ] ) to:main::@1 @@ -787,24 +893,24 @@ print_cls::@return: scope:[print_cls] from print_cls::@1 DOMINATORS @begin dominated by @begin -@7 dominated by @begin @7 -@end dominated by @begin @end @7 -main dominated by @begin main @7 -main::@1 dominated by @begin main @7 main::@1 -main::@4 dominated by @begin main @7 main::@1 main::@4 -main::@5 dominated by @begin main @7 main::@1 main::@5 main::@4 -main::@return dominated by main::@return @begin main @7 main::@1 main::@5 main::@4 -main::@6 dominated by @begin main @7 main::@1 main::@5 main::@6 main::@4 -print_ln dominated by @begin main print_ln @7 main::@1 main::@4 -print_ln::@1 dominated by print_ln::@1 @begin main print_ln @7 main::@1 main::@4 -print_ln::@return dominated by print_ln::@1 @begin main print_ln print_ln::@return @7 main::@1 main::@4 -print_str dominated by @begin main print_str @7 main::@1 -print_str::@1 dominated by @begin main print_str::@1 print_str @7 main::@1 -print_str::@return dominated by @begin print_str::@return main print_str::@1 print_str @7 main::@1 -print_str::@2 dominated by @begin main print_str::@1 print_str::@2 print_str @7 main::@1 -print_cls dominated by @begin main print_cls @7 -print_cls::@1 dominated by @begin print_cls::@1 main print_cls @7 -print_cls::@return dominated by @begin print_cls::@1 main print_cls @7 print_cls::@return +@9 dominated by @begin @9 +@end dominated by @begin @end @9 +main dominated by @begin main @9 +main::@1 dominated by @begin main main::@1 @9 +main::@4 dominated by @begin main main::@1 @9 main::@4 +main::@5 dominated by @begin main main::@1 @9 main::@5 main::@4 +main::@return dominated by main::@return @begin main main::@1 @9 main::@5 main::@4 +main::@6 dominated by @begin main main::@1 @9 main::@5 main::@6 main::@4 +print_ln dominated by @begin main print_ln main::@1 @9 main::@4 +print_ln::@1 dominated by print_ln::@1 @begin main print_ln main::@1 @9 main::@4 +print_ln::@return dominated by print_ln::@1 @begin main print_ln print_ln::@return main::@1 @9 main::@4 +print_str dominated by @begin main print_str main::@1 @9 +print_str::@1 dominated by @begin main print_str::@1 print_str main::@1 @9 +print_str::@return dominated by @begin print_str::@return main print_str::@1 print_str main::@1 @9 +print_str::@2 dominated by @begin main print_str::@1 print_str::@2 print_str main::@1 @9 +print_cls dominated by @begin main print_cls @9 +print_cls::@1 dominated by @begin print_cls::@1 main print_cls @9 +print_cls::@return dominated by @begin print_cls::@1 main print_cls print_cls::@return @9 NATURAL LOOPS Found back edge: Loop head: main::@1 tails: main::@6 blocks: null @@ -889,17 +995,17 @@ INITIAL ASM .label line_cursor = 3 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] -b7_from_bbegin: - jmp b7 -//SEG4 @7 -b7: +//SEG3 [1] phi from @begin to @9 [phi:@begin->@9] +b9_from_bbegin: + jmp b9 +//SEG4 @9 +b9: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @7 to main [phi:@7->main] -main_from_b7: +//SEG6 [4] phi from @9 to main [phi:@9->main] +main_from_b9: jsr main -//SEG7 [3] phi from @7 to @end [phi:@7->@end] -bend_from_b7: +//SEG7 [3] phi from @9 to @end [phi:@9->@end] +bend_from_b9: jmp bend //SEG8 @end bend: @@ -1146,17 +1252,17 @@ ASSEMBLER BEFORE OPTIMIZATION .label line_cursor = 2 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] -b7_from_bbegin: - jmp b7 -//SEG4 @7 -b7: +//SEG3 [1] phi from @begin to @9 [phi:@begin->@9] +b9_from_bbegin: + jmp b9 +//SEG4 @9 +b9: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @7 to main [phi:@7->main] -main_from_b7: +//SEG6 [4] phi from @9 to main [phi:@9->main] +main_from_b9: jsr main -//SEG7 [3] phi from @7 to @end [phi:@7->@end] -bend_from_b7: +//SEG7 [3] phi from @9 to @end [phi:@9->@end] +bend_from_b9: jmp bend //SEG8 @end bend: @@ -1349,7 +1455,7 @@ print_cls: { txt: .text "camelot@" ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b7 +Removing instruction jmp b9 Removing instruction jmp bend Removing instruction jmp b1 Removing instruction jmp b4 @@ -1369,9 +1475,9 @@ Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b7_from_bbegin: -Removing instruction main_from_b7: -Removing instruction bend_from_b7: +Removing instruction b9_from_bbegin: +Removing instruction main_from_b9: +Removing instruction bend_from_b9: Removing instruction print_str_from_b1: Removing instruction b4_from_b1: Removing instruction print_ln_from_b4: @@ -1379,7 +1485,7 @@ Removing instruction b1_from_print_ln: Removing instruction b1_from_b1: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b7: +Removing instruction b9: Removing instruction bend: Removing instruction print_cls_from_main: Removing instruction b1_from_main: @@ -1398,7 +1504,7 @@ Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @7 +(label) @9 (label) @begin (label) @end (byte*) char_cursor @@ -1453,12 +1559,12 @@ FINAL ASSEMBLER .label char_cursor = 6 .label line_cursor = 2 //SEG2 @begin -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] -//SEG4 @7 +//SEG3 [1] phi from @begin to @9 [phi:@begin->@9] +//SEG4 @9 //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @7 to main [phi:@7->main] +//SEG6 [4] phi from @9 to main [phi:@9->main] jsr main -//SEG7 [3] phi from @7 to @end [phi:@7->@end] +//SEG7 [3] phi from @9 to @end [phi:@9->@end] //SEG8 @end //SEG9 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.sym b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.sym index d89d9f167..07a281fc5 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.sym @@ -1,4 +1,4 @@ -(label) @7 +(label) @9 (label) @begin (label) @end (byte*) char_cursor diff --git a/src/test/java/dk/camelot64/kickc/test/ref/printmsg.cfg b/src/test/java/dk/camelot64/kickc/test/ref/printmsg.cfg index 5bd6bc9a9..6fbf4df4c 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/printmsg.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/printmsg.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@7 -@7: scope:[] from @begin + to:@9 +@9: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @7 +@end: scope:[] from @9 [3] phi() [ ] ( ) -main: scope:[main] from @7 +main: scope:[main] from @9 [4] phi() [ ] ( main:2 [ ] ) [5] call print_str param-assignment [ char_cursor#13 ] ( main:2 [ char_cursor#13 ] ) to:main::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/printmsg.log b/src/test/java/dk/camelot64/kickc/test/ref/printmsg.log index 9f9ea4116..c5a629f92 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/printmsg.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/printmsg.log @@ -35,6 +35,24 @@ void print_ln() { char_cursor = line_cursor; } +// Print a signed word as HEX +void print_sword(signed word w) { + if(w<0) { + print_char('-'); + w = -w; + } + print_word((word)w); +} + +// Print a signed byte as HEX +void print_sbyte(signed byte b) { + if(b<0) { + print_char('-'); + b = -b; + } + print_byte((byte)b); +} + // Print a word as HEX void print_word(word w) { print_byte(>w); @@ -44,7 +62,7 @@ void print_word(word w) { // Print a byte as HEX void print_byte(byte b) { // Table of hexadecimal digits - const byte[] hextab = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + const byte[] hextab = "0123456789abcdef"; print_char(hextab[b>>4]); print_char(hextab[b&$f]); } @@ -95,6 +113,32 @@ print_ln::@1: print_ln::@return: return endproc // print_ln() +proc (void()) print_sword((signed word) print_sword::w) + (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word) 0 + (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 + if((boolean~) print_sword::$1) goto print_sword::@1 + (void~) print_sword::$2 ← call print_char (byte) '-' + (signed word~) print_sword::$3 ← - (signed word) print_sword::w + (signed word) print_sword::w ← (signed word~) print_sword::$3 +print_sword::@1: + (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w + (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 +print_sword::@return: + return +endproc // print_sword() +proc (void()) print_sbyte((signed byte) print_sbyte::b) + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + (void~) print_sbyte::$2 ← call print_char (byte) '-' + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b + (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3 +print_sbyte::@1: + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b + (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 +print_sbyte::@return: + return +endproc // print_sbyte() proc (void()) print_word((word) print_word::w) (byte~) print_word::$0 ← > (word) print_word::w (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 @@ -104,7 +148,7 @@ print_word::@return: return endproc // print_word() proc (void()) print_byte((byte) print_byte::b) - (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } + (byte[]) print_byte::hextab ← (string) "0123456789abcdef" (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 @@ -180,6 +224,16 @@ SYMBOLS (boolean~) print_ln::$1 (label) print_ln::@1 (label) print_ln::@return +(void()) print_sbyte((signed byte) print_sbyte::b) +(boolean~) print_sbyte::$0 +(boolean~) print_sbyte::$1 +(void~) print_sbyte::$2 +(signed byte~) print_sbyte::$3 +(byte~) print_sbyte::$4 +(void~) print_sbyte::$5 +(label) print_sbyte::@1 +(label) print_sbyte::@return +(signed byte) print_sbyte::b (void()) print_str((byte*) print_str::str) (boolean~) print_str::$0 (label) print_str::@1 @@ -187,6 +241,16 @@ SYMBOLS (label) print_str::@3 (label) print_str::@return (byte*) print_str::str +(void()) print_sword((signed word) print_sword::w) +(boolean~) print_sword::$0 +(boolean~) print_sword::$1 +(void~) print_sword::$2 +(signed word~) print_sword::$3 +(word~) print_sword::$4 +(void~) print_sword::$5 +(label) print_sword::@1 +(label) print_sword::@return +(signed word) print_sword::w (void()) print_word((word) print_word::w) (byte~) print_word::$0 (void~) print_word::$1 @@ -242,6 +306,44 @@ print_ln::@return: scope:[print_ln] from print_ln::@2 to:@return @2: scope:[] from @1 to:@3 +print_sword: scope:[print_sword] from + (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word) 0 + (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 + if((boolean~) print_sword::$1) goto print_sword::@1 + to:print_sword::@2 +print_sword::@1: scope:[print_sword] from print_sword print_sword::@2 + (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w + (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 + to:print_sword::@return +print_sword::@2: scope:[print_sword] from print_sword + (void~) print_sword::$2 ← call print_char (byte) '-' + (signed word~) print_sword::$3 ← - (signed word) print_sword::w + (signed word) print_sword::w ← (signed word~) print_sword::$3 + to:print_sword::@1 +print_sword::@return: scope:[print_sword] from print_sword::@1 + return + to:@return +@3: scope:[] from @2 + to:@4 +print_sbyte: scope:[print_sbyte] from + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + to:print_sbyte::@2 +print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@2 + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b + (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 + to:print_sbyte::@return +print_sbyte::@2: scope:[print_sbyte] from print_sbyte + (void~) print_sbyte::$2 ← call print_char (byte) '-' + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b + (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3 + to:print_sbyte::@1 +print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 + return + to:@return +@4: scope:[] from @3 + to:@5 print_word: scope:[print_word] from (byte~) print_word::$0 ← > (word) print_word::w (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 @@ -251,10 +353,10 @@ print_word: scope:[print_word] from print_word::@return: scope:[print_word] from print_word return to:@return -@3: scope:[] from @2 - to:@4 +@5: scope:[] from @4 + to:@6 print_byte: scope:[print_byte] from - (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } + (byte[]) print_byte::hextab ← (string) "0123456789abcdef" (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 @@ -263,8 +365,8 @@ print_byte: scope:[print_byte] from print_byte::@return: scope:[print_byte] from print_byte return to:@return -@4: scope:[] from @3 - to:@5 +@6: scope:[] from @5 + to:@7 print_char: scope:[print_char] from *((byte*) char_cursor) ← (byte) print_char::ch (byte*) char_cursor ← ++ (byte*) char_cursor @@ -272,8 +374,8 @@ print_char: scope:[print_char] from print_char::@return: scope:[print_char] from print_char return to:@return -@5: scope:[] from @4 - to:@6 +@7: scope:[] from @6 + to:@8 print_cls: scope:[print_cls] from (byte*) print_cls::sc ← ((byte*)) (word/signed word) 1024 to:print_cls::@1 @@ -289,11 +391,11 @@ print_cls::@2: scope:[print_cls] from print_cls::@1 print_cls::@return: scope:[print_cls] from print_cls::@2 return to:@return -@6: scope:[] from @5 +@8: scope:[] from @7 (byte[]) msg ← (string) "hello world! @" (byte[]) msg2 ← (string) "hello c64! @" (byte[]) msg3 ← (string) "hello 2017! @" - to:@7 + to:@9 main: scope:[main] from (void~) main::$0 ← call print_str (byte[]) msg (void~) main::$1 ← call print_ln @@ -305,13 +407,15 @@ main: scope:[main] from main::@return: scope:[main] from main return to:@return -@7: scope:[] from @6 +@9: scope:[] from @8 call main to:@end -@end: scope:[] from @7 +@end: scope:[] from @9 -Removing unused procedure print_word +Removing unused procedure print_sword +Removing unused procedure print_sbyte Removing unused procedure print_cls +Removing unused procedure print_word Removing unused procedure print_byte Removing unused procedure print_char Eliminating unused variable - keeping the call (void~) main::$0 @@ -332,6 +436,8 @@ Removing empty block @2 Removing empty block @3 Removing empty block @4 Removing empty block @5 +Removing empty block @6 +Removing empty block @7 PROCEDURE MODIFY VARIABLE ANALYSIS print_str modifies char_cursor print_ln modifies line_cursor @@ -347,7 +453,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from (byte*) line_cursor#0 ← ((byte*)) (word/signed word) 1024 (byte*) char_cursor#0 ← (byte*) line_cursor#0 - to:@6 + to:@8 print_str: scope:[print_str] from main main::@2 main::@4 (byte*) char_cursor#29 ← phi( main/(byte*) char_cursor#27 main::@2/(byte*) char_cursor#6 main::@4/(byte*) char_cursor#8 ) (byte*) print_str::str#6 ← phi( main/(byte*) print_str::str#1 main::@2/(byte*) print_str::str#2 main::@4/(byte*) print_str::str#3 ) @@ -393,16 +499,16 @@ print_ln::@return: scope:[print_ln] from print_ln::@2 (byte*) char_cursor#4 ← (byte*) char_cursor#16 return to:@return -@6: scope:[] from @begin +@8: scope:[] from @begin (byte*) line_cursor#22 ← phi( @begin/(byte*) line_cursor#0 ) (byte*) char_cursor#30 ← phi( @begin/(byte*) char_cursor#0 ) (byte[]) msg#0 ← (const string) $0 (byte[]) msg2#0 ← (const string) $1 (byte[]) msg3#0 ← (const string) $2 - to:@7 -main: scope:[main] from @7 - (byte*) line_cursor#21 ← phi( @7/(byte*) line_cursor#20 ) - (byte*) char_cursor#27 ← phi( @7/(byte*) char_cursor#28 ) + to:@9 +main: scope:[main] from @9 + (byte*) line_cursor#21 ← phi( @9/(byte*) line_cursor#20 ) + (byte*) char_cursor#27 ← phi( @9/(byte*) char_cursor#28 ) (byte*) print_str::str#1 ← (byte[]) msg#0 call print_str param-assignment to:main::@1 @@ -453,26 +559,26 @@ main::@return: scope:[main] from main::@6 (byte*) line_cursor#6 ← (byte*) line_cursor#14 return to:@return -@7: scope:[] from @6 - (byte*) line_cursor#20 ← phi( @6/(byte*) line_cursor#22 ) - (byte*) char_cursor#28 ← phi( @6/(byte*) char_cursor#30 ) +@9: scope:[] from @8 + (byte*) line_cursor#20 ← phi( @8/(byte*) line_cursor#22 ) + (byte*) char_cursor#28 ← phi( @8/(byte*) char_cursor#30 ) call main param-assignment - to:@8 -@8: scope:[] from @7 - (byte*) line_cursor#15 ← phi( @7/(byte*) line_cursor#6 ) - (byte*) char_cursor#24 ← phi( @7/(byte*) char_cursor#11 ) + to:@10 +@10: scope:[] from @9 + (byte*) line_cursor#15 ← phi( @9/(byte*) line_cursor#6 ) + (byte*) char_cursor#24 ← phi( @9/(byte*) char_cursor#11 ) (byte*) char_cursor#12 ← (byte*) char_cursor#24 (byte*) line_cursor#7 ← (byte*) line_cursor#15 to:@end -@end: scope:[] from @8 +@end: scope:[] from @10 SYMBOL TABLE SSA (const string) $0 = (string) "hello world! @" (const string) $1 = (string) "hello c64! @" (const string) $2 = (string) "hello 2017! @" -(label) @6 -(label) @7 +(label) @10 (label) @8 +(label) @9 (label) @begin (label) @end (byte*) char_cursor @@ -655,9 +761,9 @@ Constant (const string) print_str::str#2 = msg2#0 Constant (const string) print_str::str#3 = msg3#0 Succesful SSA optimization Pass2ConstantIdentification Culled Empty Block (label) print_ln::@2 -Culled Empty Block (label) @6 -Culled Empty Block (label) main::@6 Culled Empty Block (label) @8 +Culled Empty Block (label) main::@6 +Culled Empty Block (label) @10 Succesful SSA optimization Pass2CullEmptyBlocks OPTIMIZING CONTROL FLOW GRAPH Inlining constant with var siblings (const string) print_str::str#1 @@ -680,11 +786,11 @@ Constant inlined $0 = (const string) msg#0 Constant inlined $1 = (const string) msg2#0 Constant inlined $2 = (const string) msg3#0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @7 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 +Block Sequence Planned @begin @9 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) -Block Sequence Planned @begin @7 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_ln::@3 print_str print_str::@1 print_str::@return print_str::@2 +Block Sequence Planned @begin @9 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_ln::@3 print_str print_str::@1 print_str::@return print_str::@2 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @7 +Adding NOP phi() at start of @9 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@1 @@ -713,9 +819,9 @@ Coalesced [33] print_str::str#8 ← print_str::str#0 Coalesced [34] char_cursor#34 ← char_cursor#1 Coalesced down to 3 phi equivalence classes Culled Empty Block (label) print_ln::@3 -Block Sequence Planned @begin @7 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 +Block Sequence Planned @begin @9 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @7 +Adding NOP phi() at start of @9 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@1 @@ -732,14 +838,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@7 -@7: scope:[] from @begin + to:@9 +@9: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @7 +@end: scope:[] from @9 [3] phi() [ ] ( ) -main: scope:[main] from @7 +main: scope:[main] from @9 [4] phi() [ ] ( main:2 [ ] ) [5] call print_str param-assignment [ char_cursor#13 ] ( main:2 [ char_cursor#13 ] ) to:main::@1 @@ -797,22 +903,22 @@ print_str::@2: scope:[print_str] from print_str::@1 DOMINATORS @begin dominated by @begin -@7 dominated by @begin @7 -@end dominated by @begin @end @7 -main dominated by @begin main @7 -main::@1 dominated by @begin main @7 main::@1 -main::@2 dominated by @begin main @7 main::@1 main::@2 -main::@3 dominated by @begin main @7 main::@1 main::@2 main::@3 -main::@4 dominated by @begin main @7 main::@1 main::@2 main::@3 main::@4 -main::@5 dominated by @begin main @7 main::@1 main::@2 main::@5 main::@3 main::@4 -main::@return dominated by main::@return @begin main @7 main::@1 main::@2 main::@5 main::@3 main::@4 -print_ln dominated by @begin main print_ln @7 main::@1 -print_ln::@1 dominated by print_ln::@1 @begin main print_ln @7 main::@1 -print_ln::@return dominated by print_ln::@1 @begin main print_ln print_ln::@return @7 main::@1 -print_str dominated by @begin main print_str @7 -print_str::@1 dominated by @begin main print_str::@1 print_str @7 -print_str::@return dominated by @begin print_str::@return main print_str::@1 print_str @7 -print_str::@2 dominated by @begin main print_str::@1 print_str::@2 print_str @7 +@9 dominated by @begin @9 +@end dominated by @begin @end @9 +main dominated by @begin main @9 +main::@1 dominated by @begin main main::@1 @9 +main::@2 dominated by @begin main main::@1 @9 main::@2 +main::@3 dominated by @begin main main::@1 @9 main::@2 main::@3 +main::@4 dominated by @begin main main::@1 @9 main::@2 main::@3 main::@4 +main::@5 dominated by @begin main main::@1 @9 main::@2 main::@5 main::@3 main::@4 +main::@return dominated by main::@return @begin main main::@1 @9 main::@2 main::@5 main::@3 main::@4 +print_ln dominated by @begin main print_ln main::@1 @9 +print_ln::@1 dominated by print_ln::@1 @begin main print_ln main::@1 @9 +print_ln::@return dominated by print_ln::@1 @begin main print_ln print_ln::@return main::@1 @9 +print_str dominated by @begin main print_str @9 +print_str::@1 dominated by @begin main print_str::@1 print_str @9 +print_str::@return dominated by @begin print_str::@return main print_str::@1 print_str @9 +print_str::@2 dominated by @begin main print_str::@1 print_str::@2 print_str @9 NATURAL LOOPS Found back edge: Loop head: print_ln::@1 tails: print_ln::@1 blocks: null @@ -877,17 +983,17 @@ INITIAL ASM .label line_cursor = 2 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] -b7_from_bbegin: - jmp b7 -//SEG4 @7 -b7: +//SEG3 [1] phi from @begin to @9 [phi:@begin->@9] +b9_from_bbegin: + jmp b9 +//SEG4 @9 +b9: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @7 to main [phi:@7->main] -main_from_b7: +//SEG6 [4] phi from @9 to main [phi:@9->main] +main_from_b9: jsr main -//SEG7 [3] phi from @7 to @end [phi:@7->@end] -bend_from_b7: +//SEG7 [3] phi from @9 to @end [phi:@9->@end] +bend_from_b9: jmp bend //SEG8 @end bend: @@ -1091,17 +1197,17 @@ ASSEMBLER BEFORE OPTIMIZATION .label line_cursor = 2 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] -b7_from_bbegin: - jmp b7 -//SEG4 @7 -b7: +//SEG3 [1] phi from @begin to @9 [phi:@begin->@9] +b9_from_bbegin: + jmp b9 +//SEG4 @9 +b9: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @7 to main [phi:@7->main] -main_from_b7: +//SEG6 [4] phi from @9 to main [phi:@9->main] +main_from_b9: jsr main -//SEG7 [3] phi from @7 to @end [phi:@7->@end] -bend_from_b7: +//SEG7 [3] phi from @9 to @end [phi:@9->@end] +bend_from_b9: jmp bend //SEG8 @end bend: @@ -1274,7 +1380,7 @@ print_str: { msg3: .text "hello 2017! @" ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b7 +Removing instruction jmp b9 Removing instruction jmp bend Removing instruction jmp b1 Removing instruction jmp b2 @@ -1293,9 +1399,9 @@ Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b2 with b1 Removing instruction bbegin: -Removing instruction b7_from_bbegin: -Removing instruction main_from_b7: -Removing instruction bend_from_b7: +Removing instruction b9_from_bbegin: +Removing instruction main_from_b9: +Removing instruction bend_from_b9: Removing instruction b1_from_main: Removing instruction print_ln_from_b1: Removing instruction b3_from_b2: @@ -1307,7 +1413,7 @@ Removing instruction b1_from_b1: Removing instruction b1_from_print_str: Removing instruction b1_from_b2: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b7: +Removing instruction b9: Removing instruction bend: Removing instruction print_str_from_main: Removing instruction b1: @@ -1323,7 +1429,7 @@ Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE -(label) @7 +(label) @9 (label) @begin (label) @end (byte*) char_cursor @@ -1375,12 +1481,12 @@ FINAL ASSEMBLER .label char_cursor = 6 .label line_cursor = 2 //SEG2 @begin -//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] -//SEG4 @7 +//SEG3 [1] phi from @begin to @9 [phi:@begin->@9] +//SEG4 @9 //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @7 to main [phi:@7->main] +//SEG6 [4] phi from @9 to main [phi:@9->main] jsr main -//SEG7 [3] phi from @7 to @end [phi:@7->@end] +//SEG7 [3] phi from @9 to @end [phi:@9->@end] //SEG8 @end //SEG9 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/printmsg.sym b/src/test/java/dk/camelot64/kickc/test/ref/printmsg.sym index e9c8ea47b..3298ae89b 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/printmsg.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/printmsg.sym @@ -1,4 +1,4 @@ -(label) @7 +(label) @9 (label) @begin (label) @end (byte*) char_cursor diff --git a/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.asm b/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.asm index ae07174bd..36fa721bb 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.asm @@ -15,8 +15,8 @@ main: { clc adc #screen+$28 + lda #>screen+$28 + adc #0 sta _2+1 ldy #0 lda (_2),y @@ -34,15 +34,15 @@ main: { clc adc #screen+$a0 + lda #>screen+$a0 + adc #0 sta _9+1 txa clc adc #screen+$c8 + lda #>screen+$c8 + adc #0 sta _11+1 ldy #0 lda (_11),y diff --git a/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.log b/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.log index aa1f04c57..2cab837c0 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.log @@ -531,9 +531,9 @@ main: { //SEG14 main::@1 b1: //SEG15 [6] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) -- pbuz1=pbuc1_plus_vbuz2 - lda #screen+$28 adc #0 @@ -571,17 +571,17 @@ main: { //SEG26 main::@2 b2: //SEG27 [13] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:2 [ main::j#2 main::$9 ] ) -- pbuz1=pbuc1_plus_vbuz2 - lda #screen+$a0 adc #0 sta _9+1 //SEG28 [14] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:2 [ main::j#2 main::$9 main::$11 ] ) -- pbuz1=pbuc1_plus_vbuz2 - lda #screen+$c8 adc #0 @@ -694,8 +694,8 @@ main: { clc adc #screen+$28 + lda #>screen+$28 + adc #0 sta _2+1 //SEG16 [7] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=_deref_pbuz1 ldy #0 @@ -731,16 +731,16 @@ main: { clc adc #screen+$a0 + lda #>screen+$a0 + adc #0 sta _9+1 //SEG28 [14] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:2 [ main::j#2 main::$9 main::$11 ] ) -- pbuz1=pbuc1_plus_vbuxx txa clc adc #screen+$c8 + lda #>screen+$c8 + adc #0 sta _11+1 //SEG29 [15] *((byte*~) main::$9) ← *((byte*~) main::$11) [ main::j#2 ] ( main:2 [ main::j#2 ] ) -- _deref_pbuz1=_deref_pbuz2 ldy #0 @@ -866,8 +866,8 @@ main: { clc adc #screen+$28 + lda #>screen+$28 + adc #0 sta _2+1 //SEG16 [7] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=_deref_pbuz1 ldy #0 @@ -897,16 +897,16 @@ main: { clc adc #screen+$a0 + lda #>screen+$a0 + adc #0 sta _9+1 //SEG28 [14] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:2 [ main::j#2 main::$9 main::$11 ] ) -- pbuz1=pbuc1_plus_vbuxx txa clc adc #screen+$c8 + lda #>screen+$c8 + adc #0 sta _11+1 //SEG29 [15] *((byte*~) main::$9) ← *((byte*~) main::$11) [ main::j#2 ] ( main:2 [ main::j#2 ] ) -- _deref_pbuz1=_deref_pbuz2 ldy #0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/signed-words.asm b/src/test/java/dk/camelot64/kickc/test/ref/signed-words.asm index 2d7d98649..e2ed7e6f2 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/signed-words.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/signed-words.asm @@ -102,15 +102,15 @@ anim: { lda yvel_10+1 adc #>g sta yvel_10+1 - lda xpos clc + lda xpos adc xvel sta xpos lda xpos+1 adc xvel+1 sta xpos+1 - lda ypos clc + lda ypos adc yvel_10 sta ypos lda ypos+1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/signed-words.log b/src/test/java/dk/camelot64/kickc/test/ref/signed-words.log index 419e3110b..9d275929d 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/signed-words.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/signed-words.log @@ -179,8 +179,8 @@ proc (void()) anim() (signed word) ypos ← (byte/signed byte/word/signed word) 0 (signed word~) anim::$2 ← - (signed word) xvel (signed word) xvel ← (signed word~) anim::$2 - (byte/signed byte/word/signed word~) anim::$3 ← (signed word) yvel_init - (byte/signed byte/word/signed word) 10 - (signed word) yvel_init ← (byte/signed byte/word/signed word~) anim::$3 + (signed word~) anim::$3 ← (signed word) yvel_init - (byte/signed byte/word/signed word) 10 + (signed word) yvel_init ← (signed word~) anim::$3 (signed word~) anim::$4 ← - (byte/word/signed word) 200 (boolean~) anim::$5 ← (signed word) yvel_init < (signed word~) anim::$4 (boolean~) anim::$6 ← ! (boolean~) anim::$5 @@ -199,8 +199,8 @@ anim::@1: (signed word~) anim::$11 ← (signed word~) anim::$10 + (byte/word/signed word) 160 (signed word) anim::sprite_x ← (signed word~) anim::$11 (signed word~) anim::$12 ← (signed word) ypos >> (byte/signed byte/word/signed word) 5 - (byte/signed byte/word/signed word~) anim::$13 ← (byte/word/signed word) 230 - (signed word~) anim::$12 - (signed word) anim::sprite_y ← (byte/signed byte/word/signed word~) anim::$13 + (signed word~) anim::$13 ← (byte/word/signed word) 230 - (signed word~) anim::$12 + (signed word) anim::sprite_y ← (signed word~) anim::$13 (byte~) anim::$14 ← ((byte)) (signed word) anim::sprite_x *((byte*) SPRITES_XPOS + (byte/signed byte/word/signed word) 0) ← (byte~) anim::$14 (byte~) anim::$15 ← ((byte)) (signed word) anim::sprite_y @@ -244,12 +244,12 @@ SYMBOLS (signed word~) anim::$10 (signed word~) anim::$11 (signed word~) anim::$12 -(byte/signed byte/word/signed word~) anim::$13 +(signed word~) anim::$13 (byte~) anim::$14 (byte~) anim::$15 (byte~) anim::$16 (signed word~) anim::$2 -(byte/signed byte/word/signed word~) anim::$3 +(signed word~) anim::$3 (signed word~) anim::$4 (boolean~) anim::$5 (boolean~) anim::$6 @@ -410,8 +410,8 @@ anim::@1: scope:[anim] from anim anim::@2 (signed word~) anim::$11 ← (signed word~) anim::$10 + (byte/word/signed word) 160 (signed word) anim::sprite_x ← (signed word~) anim::$11 (signed word~) anim::$12 ← (signed word) ypos >> (byte/signed byte/word/signed word) 5 - (byte/signed byte/word/signed word~) anim::$13 ← (byte/word/signed word) 230 - (signed word~) anim::$12 - (signed word) anim::sprite_y ← (byte/signed byte/word/signed word~) anim::$13 + (signed word~) anim::$13 ← (byte/word/signed word) 230 - (signed word~) anim::$12 + (signed word) anim::sprite_y ← (signed word~) anim::$13 (byte~) anim::$14 ← ((byte)) (signed word) anim::sprite_x *((byte*) SPRITES_XPOS + (byte/signed byte/word/signed word) 0) ← (byte~) anim::$14 (byte~) anim::$15 ← ((byte)) (signed word) anim::sprite_y @@ -424,8 +424,8 @@ anim::@3: scope:[anim] from anim (signed word) ypos ← (byte/signed byte/word/signed word) 0 (signed word~) anim::$2 ← - (signed word) xvel (signed word) xvel ← (signed word~) anim::$2 - (byte/signed byte/word/signed word~) anim::$3 ← (signed word) yvel_init - (byte/signed byte/word/signed word) 10 - (signed word) yvel_init ← (byte/signed byte/word/signed word~) anim::$3 + (signed word~) anim::$3 ← (signed word) yvel_init - (byte/signed byte/word/signed word) 10 + (signed word) yvel_init ← (signed word~) anim::$3 (signed word~) anim::$4 ← - (byte/word/signed word) 200 (boolean~) anim::$5 ← (signed word) yvel_init < (signed word~) anim::$4 (boolean~) anim::$6 ← ! (boolean~) anim::$5 @@ -628,8 +628,8 @@ anim::@1: scope:[anim] from anim anim::@2 (signed word~) anim::$11 ← (signed word~) anim::$10 + (byte/word/signed word) 160 (signed word) anim::sprite_x#0 ← (signed word~) anim::$11 (signed word~) anim::$12 ← (signed word) ypos#3 >> (byte/signed byte/word/signed word) 5 - (byte/signed byte/word/signed word~) anim::$13 ← (byte/word/signed word) 230 - (signed word~) anim::$12 - (signed word) anim::sprite_y#0 ← (byte/signed byte/word/signed word~) anim::$13 + (signed word~) anim::$13 ← (byte/word/signed word) 230 - (signed word~) anim::$12 + (signed word) anim::sprite_y#0 ← (signed word~) anim::$13 (byte~) anim::$14 ← ((byte)) (signed word) anim::sprite_x#0 *((byte*) SPRITES_XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) anim::$14 (byte~) anim::$15 ← ((byte)) (signed word) anim::sprite_y#0 @@ -644,8 +644,8 @@ anim::@3: scope:[anim] from anim (signed word) ypos#4 ← (byte/signed byte/word/signed word) 0 (signed word~) anim::$2 ← - (signed word) xvel#9 (signed word) xvel#3 ← (signed word~) anim::$2 - (byte/signed byte/word/signed word~) anim::$3 ← (signed word) yvel_init#9 - (byte/signed byte/word/signed word) 10 - (signed word) yvel_init#3 ← (byte/signed byte/word/signed word~) anim::$3 + (signed word~) anim::$3 ← (signed word) yvel_init#9 - (byte/signed byte/word/signed word) 10 + (signed word) yvel_init#3 ← (signed word~) anim::$3 (signed word~) anim::$4 ← - (byte/word/signed word) 200 (boolean~) anim::$5 ← (signed word) yvel_init#3 < (signed word~) anim::$4 (boolean~) anim::$6 ← ! (boolean~) anim::$5 @@ -737,12 +737,12 @@ SYMBOL TABLE SSA (signed word~) anim::$10 (signed word~) anim::$11 (signed word~) anim::$12 -(byte/signed byte/word/signed word~) anim::$13 +(signed word~) anim::$13 (byte~) anim::$14 (byte~) anim::$15 (byte~) anim::$16 (signed word~) anim::$2 -(byte/signed byte/word/signed word~) anim::$3 +(signed word~) anim::$3 (signed word~) anim::$4 (boolean~) anim::$5 (boolean~) anim::$6 @@ -942,11 +942,11 @@ Alias (signed word) yvel#10 = (signed word) yvel#3 (signed word~) anim::$7 (sign Alias (signed word) xpos#10 = (signed word) xpos#3 (signed word~) anim::$8 (signed word) xpos#5 Alias (signed word) ypos#11 = (signed word) ypos#3 (signed word~) anim::$9 (signed word) ypos#5 Alias (signed word) anim::sprite_x#0 = (signed word~) anim::$11 -Alias (signed word) anim::sprite_y#0 = (byte/signed byte/word/signed word~) anim::$13 +Alias (signed word) anim::sprite_y#0 = (signed word~) anim::$13 Alias (signed word) xvel#13 = (signed word) xvel#9 Alias (signed word) yvel_init#14 = (signed word) yvel_init#9 Alias (signed word) xvel#17 = (signed word) xvel#3 (signed word~) anim::$2 -Alias (signed word) yvel_init#3 = (byte/signed byte/word/signed word~) anim::$3 +Alias (signed word) yvel_init#3 = (signed word~) anim::$3 Alias (signed word) yvel#4 = (signed word) yvel_init#10 Alias (signed word) xpos#17 = (signed word) xpos#4 Alias (signed word) ypos#17 = (signed word) ypos#4 @@ -1679,16 +1679,16 @@ anim: { adc #>g sta yvel_10+1 //SEG57 [20] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ( main:2::anim:9 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ) -- vwsz1=vwsz1_plus_vwsz2 - lda xpos clc + lda xpos adc xvel sta xpos lda xpos+1 adc xvel+1 sta xpos+1 //SEG58 [21] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ) -- vwsz1=vwsz1_plus_vwsz2 - lda ypos clc + lda ypos adc yvel_10 sta ypos lda ypos+1 @@ -2146,16 +2146,16 @@ anim: { adc #>g sta yvel_10+1 //SEG57 [20] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ( main:2::anim:9 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ) -- vwsz1=vwsz1_plus_vwsz2 - lda xpos clc + lda xpos adc xvel sta xpos lda xpos+1 adc xvel+1 sta xpos+1 //SEG58 [21] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ) -- vwsz1=vwsz1_plus_vwsz2 - lda ypos clc + lda ypos adc yvel_10 sta ypos lda ypos+1 @@ -2656,16 +2656,16 @@ anim: { adc #>g sta yvel_10+1 //SEG57 [20] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ( main:2::anim:9 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ) -- vwsz1=vwsz1_plus_vwsz2 - lda xpos clc + lda xpos adc xvel sta xpos lda xpos+1 adc xvel+1 sta xpos+1 //SEG58 [21] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ) -- vwsz1=vwsz1_plus_vwsz2 - lda ypos clc + lda ypos adc yvel_10 sta ypos lda ypos+1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.asm b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.asm index fe493c379..38b8c72c7 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.asm @@ -120,7 +120,7 @@ print_byte: { lda hextab,x jsr print_char rts - hextab: .byte '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' + hextab: .text "0123456789abcdef" } print_char: { ldy #0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.cfg b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.cfg index 24a5c6a2e..10c0dfcef 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@34 -@34: scope:[] from @begin + to:@36 +@36: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @34 +@end: scope:[] from @36 [3] phi() [ ] ( ) -main: scope:[main] from @34 +main: scope:[main] from @36 [4] phi() [ ] ( main:2 [ ] ) [5] call setFAC param-assignment [ ] ( main:2 [ ] ) to:main::@3 @@ -103,12 +103,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 [48] (byte*) char_cursor#31 ← phi( print_word/(byte*) char_cursor#32 print_word::@1/(byte*) char_cursor#10 ) [ print_byte::b#2 char_cursor#31 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 ] ) [48] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 char_cursor#31 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 ] ) [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_byte::$0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_byte::$0 ] ) - [50] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) + [50] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) [51] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::b#2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::b#2 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$2 ] ) - [53] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) + [53] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) [54] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.log b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.log index 1f2f0c573..46f71483f 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.log @@ -44,6 +44,24 @@ void print_ln() { char_cursor = line_cursor; } +// Print a signed word as HEX +void print_sword(signed word w) { + if(w<0) { + print_char('-'); + w = -w; + } + print_word((word)w); +} + +// Print a signed byte as HEX +void print_sbyte(signed byte b) { + if(b<0) { + print_char('-'); + b = -b; + } + print_byte((byte)b); +} + // Print a word as HEX void print_word(word w) { print_byte(>w); @@ -53,7 +71,7 @@ void print_word(word w) { // Print a byte as HEX void print_byte(byte b) { // Table of hexadecimal digits - const byte[] hextab = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + const byte[] hextab = "0123456789abcdef"; print_char(hextab[b>>4]); print_char(hextab[b&$f]); } @@ -383,6 +401,32 @@ print_ln::@1: print_ln::@return: return endproc // print_ln() +proc (void()) print_sword((signed word) print_sword::w) + (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word) 0 + (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 + if((boolean~) print_sword::$1) goto print_sword::@1 + (void~) print_sword::$2 ← call print_char (byte) '-' + (signed word~) print_sword::$3 ← - (signed word) print_sword::w + (signed word) print_sword::w ← (signed word~) print_sword::$3 +print_sword::@1: + (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w + (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 +print_sword::@return: + return +endproc // print_sword() +proc (void()) print_sbyte((signed byte) print_sbyte::b) + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + (void~) print_sbyte::$2 ← call print_char (byte) '-' + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b + (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3 +print_sbyte::@1: + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b + (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 +print_sbyte::@return: + return +endproc // print_sbyte() proc (void()) print_word((word) print_word::w) (byte~) print_word::$0 ← > (word) print_word::w (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 @@ -392,7 +436,7 @@ print_word::@return: return endproc // print_word() proc (void()) print_byte((byte) print_byte::b) - (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } + (byte[]) print_byte::hextab ← (string) "0123456789abcdef" (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 @@ -687,6 +731,16 @@ SYMBOLS (boolean~) print_ln::$1 (label) print_ln::@1 (label) print_ln::@return +(void()) print_sbyte((signed byte) print_sbyte::b) +(boolean~) print_sbyte::$0 +(boolean~) print_sbyte::$1 +(void~) print_sbyte::$2 +(signed byte~) print_sbyte::$3 +(byte~) print_sbyte::$4 +(void~) print_sbyte::$5 +(label) print_sbyte::@1 +(label) print_sbyte::@return +(signed byte) print_sbyte::b (void()) print_str((byte*) print_str::str) (boolean~) print_str::$0 (label) print_str::@1 @@ -694,6 +748,16 @@ SYMBOLS (label) print_str::@3 (label) print_str::@return (byte*) print_str::str +(void()) print_sword((signed word) print_sword::w) +(boolean~) print_sword::$0 +(boolean~) print_sword::$1 +(void~) print_sword::$2 +(signed word~) print_sword::$3 +(word~) print_sword::$4 +(void~) print_sword::$5 +(label) print_sword::@1 +(label) print_sword::@return +(signed word) print_sword::w (void()) print_word((word) print_word::w) (byte~) print_word::$0 (void~) print_word::$1 @@ -793,6 +857,44 @@ print_ln::@return: scope:[print_ln] from print_ln::@2 to:@return @2: scope:[] from @1 to:@3 +print_sword: scope:[print_sword] from + (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word) 0 + (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 + if((boolean~) print_sword::$1) goto print_sword::@1 + to:print_sword::@2 +print_sword::@1: scope:[print_sword] from print_sword print_sword::@2 + (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w + (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 + to:print_sword::@return +print_sword::@2: scope:[print_sword] from print_sword + (void~) print_sword::$2 ← call print_char (byte) '-' + (signed word~) print_sword::$3 ← - (signed word) print_sword::w + (signed word) print_sword::w ← (signed word~) print_sword::$3 + to:print_sword::@1 +print_sword::@return: scope:[print_sword] from print_sword::@1 + return + to:@return +@3: scope:[] from @2 + to:@4 +print_sbyte: scope:[print_sbyte] from + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + to:print_sbyte::@2 +print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@2 + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b + (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 + to:print_sbyte::@return +print_sbyte::@2: scope:[print_sbyte] from print_sbyte + (void~) print_sbyte::$2 ← call print_char (byte) '-' + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b + (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3 + to:print_sbyte::@1 +print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 + return + to:@return +@4: scope:[] from @3 + to:@5 print_word: scope:[print_word] from (byte~) print_word::$0 ← > (word) print_word::w (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 @@ -802,10 +904,10 @@ print_word: scope:[print_word] from print_word::@return: scope:[print_word] from print_word return to:@return -@3: scope:[] from @2 - to:@4 +@5: scope:[] from @4 + to:@6 print_byte: scope:[print_byte] from - (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } + (byte[]) print_byte::hextab ← (string) "0123456789abcdef" (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 @@ -814,8 +916,8 @@ print_byte: scope:[print_byte] from print_byte::@return: scope:[print_byte] from print_byte return to:@return -@4: scope:[] from @3 - to:@5 +@6: scope:[] from @5 + to:@7 print_char: scope:[print_char] from *((byte*) char_cursor) ← (byte) print_char::ch (byte*) char_cursor ← ++ (byte*) char_cursor @@ -823,8 +925,8 @@ print_char: scope:[print_char] from print_char::@return: scope:[print_char] from print_char return to:@return -@5: scope:[] from @4 - to:@6 +@7: scope:[] from @6 + to:@8 print_cls: scope:[print_cls] from (byte*) print_cls::sc ← ((byte*)) (word/signed word) 1024 to:print_cls::@1 @@ -840,10 +942,10 @@ print_cls::@2: scope:[print_cls] from print_cls::@1 print_cls::@return: scope:[print_cls] from print_cls::@2 return to:@return -@6: scope:[] from @5 +@8: scope:[] from @7 (byte*) memLo ← ((byte*)) (byte/word/signed word) 254 (byte*) memHi ← ((byte*)) (byte/word/signed word) 255 - to:@7 + to:@9 prepareMEM: scope:[prepareMEM] from (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem *((byte*) memLo) ← (byte~) prepareMEM::$0 @@ -853,8 +955,8 @@ prepareMEM: scope:[prepareMEM] from prepareMEM::@return: scope:[prepareMEM] from prepareMEM return to:@return -@7: scope:[] from @6 - to:@8 +@9: scope:[] from @8 + to:@10 setFAC: scope:[setFAC] from (byte*~) setFAC::$0 ← ((byte*)) (word) setFAC::w (void~) setFAC::$1 ← call prepareMEM (byte*~) setFAC::$0 @@ -863,8 +965,8 @@ setFAC: scope:[setFAC] from setFAC::@return: scope:[setFAC] from setFAC return to:@return -@8: scope:[] from @7 - to:@9 +@10: scope:[] from @9 + to:@11 getFAC: scope:[getFAC] from asm { jsr$b1aasty$festa$ff } (word) getFAC::w ← { *((byte*) memHi), *((byte*) memLo) } @@ -876,24 +978,24 @@ getFAC::@return: scope:[getFAC] from getFAC getFAC::@1 to:@return getFAC::@1: scope:[getFAC] from to:getFAC::@return -@9: scope:[] from @8 - to:@10 +@11: scope:[] from @10 + to:@12 setARGtoFAC: scope:[setARGtoFAC] from asm { jsr$bc0f } to:setARGtoFAC::@return setARGtoFAC::@return: scope:[setARGtoFAC] from setARGtoFAC return to:@return -@10: scope:[] from @9 - to:@11 +@12: scope:[] from @11 + to:@13 setFACtoARG: scope:[setFACtoARG] from asm { jsr$bbfc } to:setFACtoARG::@return setFACtoARG::@return: scope:[setFACtoARG] from setFACtoARG return to:@return -@11: scope:[] from @10 - to:@12 +@13: scope:[] from @12 + to:@14 setMEMtoFAC: scope:[setMEMtoFAC] from (void~) setMEMtoFAC::$0 ← call prepareMEM (byte*) setMEMtoFAC::mem asm { ldx$feldy$ffjsr$bbd4 } @@ -901,8 +1003,8 @@ setMEMtoFAC: scope:[setMEMtoFAC] from setMEMtoFAC::@return: scope:[setMEMtoFAC] from setMEMtoFAC return to:@return -@12: scope:[] from @11 - to:@13 +@14: scope:[] from @13 + to:@15 setFACtoMEM: scope:[setFACtoMEM] from (void~) setFACtoMEM::$0 ← call prepareMEM (byte*) setFACtoMEM::mem asm { lda$feldy$ffjsr$bba2 } @@ -910,24 +1012,24 @@ setFACtoMEM: scope:[setFACtoMEM] from setFACtoMEM::@return: scope:[setFACtoMEM] from setFACtoMEM return to:@return -@13: scope:[] from @12 - to:@14 +@15: scope:[] from @14 + to:@16 setFACtoPIhalf: scope:[setFACtoPIhalf] from asm { lda#$e0ldy#$e2jsr$bba2 } to:setFACtoPIhalf::@return setFACtoPIhalf::@return: scope:[setFACtoPIhalf] from setFACtoPIhalf return to:@return -@14: scope:[] from @13 - to:@15 +@16: scope:[] from @15 + to:@17 setFACto2PI: scope:[setFACto2PI] from asm { lda#$e5ldy#$e2jsr$bba2 } to:setFACto2PI::@return setFACto2PI::@return: scope:[setFACto2PI] from setFACto2PI return to:@return -@15: scope:[] from @14 - to:@16 +@17: scope:[] from @16 + to:@18 setARGtoMEM: scope:[setARGtoMEM] from (void~) setARGtoMEM::$0 ← call prepareMEM (byte*) setARGtoMEM::mem asm { lda$feldy$ffjsr$ba8c } @@ -935,8 +1037,8 @@ setARGtoMEM: scope:[setARGtoMEM] from setARGtoMEM::@return: scope:[setARGtoMEM] from setARGtoMEM return to:@return -@16: scope:[] from @15 - to:@17 +@18: scope:[] from @17 + to:@19 addMEMtoFAC: scope:[addMEMtoFAC] from (void~) addMEMtoFAC::$0 ← call prepareMEM (byte*) addMEMtoFAC::mem asm { lda$feldy$ffjsr$b867 } @@ -944,16 +1046,16 @@ addMEMtoFAC: scope:[addMEMtoFAC] from addMEMtoFAC::@return: scope:[addMEMtoFAC] from addMEMtoFAC return to:@return -@17: scope:[] from @16 - to:@18 +@19: scope:[] from @18 + to:@20 addARGtoFAC: scope:[addARGtoFAC] from asm { jsr$b86a } to:addARGtoFAC::@return addARGtoFAC::@return: scope:[addARGtoFAC] from addARGtoFAC return to:@return -@18: scope:[] from @17 - to:@19 +@20: scope:[] from @19 + to:@21 subFACfromMEM: scope:[subFACfromMEM] from (void~) subFACfromMEM::$0 ← call prepareMEM (byte*) subFACfromMEM::mem asm { lda$feldy$ffjsr$b850 } @@ -961,16 +1063,16 @@ subFACfromMEM: scope:[subFACfromMEM] from subFACfromMEM::@return: scope:[subFACfromMEM] from subFACfromMEM return to:@return -@19: scope:[] from @18 - to:@20 +@21: scope:[] from @20 + to:@22 subFACfromARG: scope:[subFACfromARG] from asm { jsr$b853 } to:subFACfromARG::@return subFACfromARG::@return: scope:[subFACfromARG] from subFACfromARG return to:@return -@20: scope:[] from @19 - to:@21 +@22: scope:[] from @21 + to:@23 divMEMbyFAC: scope:[divMEMbyFAC] from (void~) divMEMbyFAC::$0 ← call prepareMEM (byte*) divMEMbyFAC::mem asm { lda$feldy$ffjsr$bb0f } @@ -978,8 +1080,8 @@ divMEMbyFAC: scope:[divMEMbyFAC] from divMEMbyFAC::@return: scope:[divMEMbyFAC] from divMEMbyFAC return to:@return -@21: scope:[] from @20 - to:@22 +@23: scope:[] from @22 + to:@24 mulFACbyMEM: scope:[mulFACbyMEM] from (void~) mulFACbyMEM::$0 ← call prepareMEM (byte*) mulFACbyMEM::mem asm { lda$feldy$ffjsr$ba28 } @@ -987,8 +1089,8 @@ mulFACbyMEM: scope:[mulFACbyMEM] from mulFACbyMEM::@return: scope:[mulFACbyMEM] from mulFACbyMEM return to:@return -@22: scope:[] from @21 - to:@23 +@24: scope:[] from @23 + to:@25 pwrMEMbyFAC: scope:[pwrMEMbyFAC] from (void~) pwrMEMbyFAC::$0 ← call prepareMEM (byte*) pwrMEMbyFAC::mem asm { lda$feldy$ffjsr$bf78 } @@ -996,88 +1098,88 @@ pwrMEMbyFAC: scope:[pwrMEMbyFAC] from pwrMEMbyFAC::@return: scope:[pwrMEMbyFAC] from pwrMEMbyFAC return to:@return -@23: scope:[] from @22 - to:@24 +@25: scope:[] from @24 + to:@26 intFAC: scope:[intFAC] from asm { jsr$bccc } to:intFAC::@return intFAC::@return: scope:[intFAC] from intFAC return to:@return -@24: scope:[] from @23 - to:@25 +@26: scope:[] from @25 + to:@27 sinFAC: scope:[sinFAC] from asm { jsr$e26b } to:sinFAC::@return sinFAC::@return: scope:[sinFAC] from sinFAC return to:@return -@25: scope:[] from @24 - to:@26 +@27: scope:[] from @26 + to:@28 cosFAC: scope:[cosFAC] from asm { jsr$e264 } to:cosFAC::@return cosFAC::@return: scope:[cosFAC] from cosFAC return to:@return -@26: scope:[] from @25 - to:@27 +@28: scope:[] from @27 + to:@29 tanFAC: scope:[tanFAC] from asm { jsr$e2b4 } to:tanFAC::@return tanFAC::@return: scope:[tanFAC] from tanFAC return to:@return -@27: scope:[] from @26 - to:@28 +@29: scope:[] from @28 + to:@30 atnFAC: scope:[atnFAC] from asm { jsr$e303 } to:atnFAC::@return atnFAC::@return: scope:[atnFAC] from atnFAC return to:@return -@28: scope:[] from @27 - to:@29 +@30: scope:[] from @29 + to:@31 sqrFAC: scope:[sqrFAC] from asm { jsr$bf71 } to:sqrFAC::@return sqrFAC::@return: scope:[sqrFAC] from sqrFAC return to:@return -@29: scope:[] from @28 - to:@30 +@31: scope:[] from @30 + to:@32 expFAC: scope:[expFAC] from asm { jsr$bfed } to:expFAC::@return expFAC::@return: scope:[expFAC] from expFAC return to:@return -@30: scope:[] from @29 - to:@31 +@32: scope:[] from @31 + to:@33 logFAC: scope:[logFAC] from asm { jsr$b9ea } to:logFAC::@return logFAC::@return: scope:[logFAC] from logFAC return to:@return -@31: scope:[] from @30 - to:@32 +@33: scope:[] from @32 + to:@34 divFACby10: scope:[divFACby10] from asm { jsr$bafe } to:divFACby10::@return divFACby10::@return: scope:[divFACby10] from divFACby10 return to:@return -@32: scope:[] from @31 - to:@33 +@34: scope:[] from @33 + to:@35 mulFACby10: scope:[mulFACby10] from asm { jsr$bae2 } to:mulFACby10::@return mulFACby10::@return: scope:[mulFACby10] from mulFACby10 return to:@return -@33: scope:[] from @32 - to:@34 +@35: scope:[] from @34 + to:@36 main: scope:[main] from (byte[]) main::f_i ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0 } (byte[]) main::f_127 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0 } @@ -1109,12 +1211,14 @@ main::@2: scope:[main] from main::@1 main::@return: scope:[main] from main::@2 return to:@return -@34: scope:[] from @33 +@36: scope:[] from @35 call main to:@end -@end: scope:[] from @34 +@end: scope:[] from @36 Removing unused procedure print_str +Removing unused procedure print_sword +Removing unused procedure print_sbyte Removing unused procedure print_cls Removing unused procedure setARGtoFAC Removing unused procedure setFACtoARG @@ -1156,16 +1260,17 @@ Eliminating unused variable - keeping the call (void~) main::$10 Eliminating unused variable - keeping the call (void~) main::$11 Eliminating unused variable - keeping the call (void~) main::$13 Eliminating unused variable - keeping the call (void~) main::$14 +Creating constant string variable for inline (const string) print_byte::$4 "0123456789abcdef" Removing empty block @1 Removing empty block @2 Removing empty block @3 Removing empty block @4 Removing empty block @5 +Removing empty block @6 Removing empty block @7 -Removing empty block @8 -Removing empty block getFAC::@1 Removing empty block @9 Removing empty block @10 +Removing empty block getFAC::@1 Removing empty block @11 Removing empty block @12 Removing empty block @13 @@ -1189,6 +1294,8 @@ Removing empty block @30 Removing empty block @31 Removing empty block @32 Removing empty block @33 +Removing empty block @34 +Removing empty block @35 Removing empty block main::@2 PROCEDURE MODIFY VARIABLE ANALYSIS print_ln modifies line_cursor @@ -1220,7 +1327,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from (byte*) line_cursor#0 ← ((byte*)) (word/signed word) 1024 (byte*) char_cursor#0 ← (byte*) line_cursor#0 - to:@6 + to:@8 print_ln: scope:[print_ln] from main::@15 (byte*) char_cursor#29 ← phi( main::@15/(byte*) char_cursor#11 ) (byte*) line_cursor#12 ← phi( main::@15/(byte*) line_cursor#13 ) @@ -1271,7 +1378,7 @@ print_word::@return: scope:[print_word] from print_word::@2 print_byte: scope:[print_byte] from print_word print_word::@1 (byte*) char_cursor#31 ← phi( print_word/(byte*) char_cursor#30 print_word::@1/(byte*) char_cursor#3 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - (byte[]) print_byte::hextab#0 ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } + (byte[]) print_byte::hextab#0 ← (const string) print_byte::$4 (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 (byte) print_char::ch#0 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) call print_char param-assignment @@ -1304,12 +1411,12 @@ print_char::@return: scope:[print_char] from print_char (byte*) char_cursor#10 ← (byte*) char_cursor#24 return to:@return -@6: scope:[] from @begin +@8: scope:[] from @begin (byte*) line_cursor#16 ← phi( @begin/(byte*) line_cursor#0 ) (byte*) char_cursor#35 ← phi( @begin/(byte*) char_cursor#0 ) (byte*) memLo#0 ← ((byte*)) (byte/word/signed word) 254 (byte*) memHi#0 ← ((byte*)) (byte/word/signed word) 255 - to:@34 + to:@36 prepareMEM: scope:[prepareMEM] from addMEMtoFAC divMEMbyFAC mulFACbyMEM setFAC setMEMtoFAC (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(byte*) prepareMEM::mem#2 divMEMbyFAC/(byte*) prepareMEM::mem#3 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 @@ -1398,9 +1505,9 @@ divFACby10: scope:[divFACby10] from main::@3 divFACby10::@return: scope:[divFACby10] from divFACby10 return to:@return -main: scope:[main] from @34 - (byte*) line_cursor#29 ← phi( @34/(byte*) line_cursor#14 ) - (byte*) char_cursor#47 ← phi( @34/(byte*) char_cursor#33 ) +main: scope:[main] from @36 + (byte*) line_cursor#29 ← phi( @36/(byte*) line_cursor#14 ) + (byte*) char_cursor#47 ← phi( @36/(byte*) char_cursor#33 ) (byte[]) main::f_i#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0 } (byte[]) main::f_127#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0 } (byte*) main::f_2pi#0 ← ((byte*)) (word) 58085 @@ -1519,23 +1626,23 @@ main::@return: scope:[main] from main::@16 (byte*) line_cursor#4 ← (byte*) line_cursor#10 return to:@return -@34: scope:[] from @6 - (byte*) line_cursor#14 ← phi( @6/(byte*) line_cursor#16 ) - (byte*) char_cursor#33 ← phi( @6/(byte*) char_cursor#35 ) +@36: scope:[] from @8 + (byte*) line_cursor#14 ← phi( @8/(byte*) line_cursor#16 ) + (byte*) char_cursor#33 ← phi( @8/(byte*) char_cursor#35 ) call main param-assignment - to:@35 -@35: scope:[] from @34 - (byte*) line_cursor#11 ← phi( @34/(byte*) line_cursor#4 ) - (byte*) char_cursor#28 ← phi( @34/(byte*) char_cursor#13 ) + to:@37 +@37: scope:[] from @36 + (byte*) line_cursor#11 ← phi( @36/(byte*) line_cursor#4 ) + (byte*) char_cursor#28 ← phi( @36/(byte*) char_cursor#13 ) (byte*) char_cursor#14 ← (byte*) char_cursor#28 (byte*) line_cursor#5 ← (byte*) line_cursor#11 to:@end -@end: scope:[] from @35 +@end: scope:[] from @37 SYMBOL TABLE SSA -(label) @34 -(label) @35 -(label) @6 +(label) @36 +(label) @37 +(label) @8 (label) @begin (label) @end (void()) addMEMtoFAC((byte*) addMEMtoFAC::mem) @@ -1708,6 +1815,7 @@ SYMBOL TABLE SSA (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 (byte~) print_byte::$2 +(const string) print_byte::$4 = (string) "0123456789abcdef" (label) print_byte::@1 (label) print_byte::@2 (label) print_byte::@return @@ -1886,7 +1994,7 @@ Simple Condition (boolean~) print_ln::$1 if((byte*) line_cursor#1<(byte*) char_c Simple Condition (boolean~) main::$15 if((byte) main::i#1!=(byte/signed byte/word/signed word) 26) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) char_cursor#0 = ((byte*))1024 -Constant (const byte[]) print_byte::hextab#0 = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' } +Constant (const string) print_byte::hextab#0 = print_byte::$4 Constant (const byte*) memLo#0 = ((byte*))254 Constant (const byte*) memHi#0 = ((byte*))255 Constant (const byte[]) main::f_i#0 = { 0, 0, 0, 0, 0 } @@ -1911,9 +2019,9 @@ Succesful SSA optimization Pass2FixWordConstructors Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 -Culled Empty Block (label) @6 +Culled Empty Block (label) @8 Culled Empty Block (label) main::@5 -Culled Empty Block (label) @35 +Culled Empty Block (label) @37 Succesful SSA optimization Pass2CullEmptyBlocks Not aliassing across scopes: line_cursor#6 line_cursor#13 Not aliassing across scopes: print_byte::b#2 print_byte::b#0 @@ -1978,22 +2086,23 @@ Inlining constant with var siblings (const byte*) char_cursor#0 Constant inlined addMEMtoFAC::mem#0 = (const byte[]) main::f_127#0 Constant inlined setFAC::w#2 = (byte/signed byte/word/signed word) 25 Constant inlined prepareMEM::mem#2 = (const byte[]) main::f_127#0 -Constant inlined divMEMbyFAC::mem#0 = (const byte[]) main::f_i#0 Constant inlined prepareMEM::mem#3 = (const byte[]) main::f_i#0 +Constant inlined divMEMbyFAC::mem#0 = (const byte[]) main::f_i#0 Constant inlined main::i#0 = (byte/signed byte/word/signed word) 1 Constant inlined setMEMtoFAC::mem#1 = (const byte[]) main::f_i#0 Constant inlined mulFACbyMEM::mem#0 = (const byte*) main::f_2pi#0 Constant inlined char_cursor#0 = ((byte*))(word/signed word) 1024 +Constant inlined print_byte::$4 = (const string) print_byte::hextab#0 Constant inlined setMEMtoFAC::mem#0 = (const byte[]) main::f_127#0 Constant inlined mulFACbyMEM::mem#1 = (const byte[]) main::f_127#0 Constant inlined setFAC::w#0 = (word/signed word) 1275 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @34 @end main main::@3 main::@4 main::@1 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@return print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return divFACby10 divFACby10::@return +Block Sequence Planned @begin @36 @end main main::@3 main::@4 main::@1 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@return print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return divFACby10 divFACby10::@return Added new block during phi lifting main::@17(between main::@16 and main::@1) Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) -Block Sequence Planned @begin @34 @end main main::@3 main::@4 main::@1 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@return main::@17 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return divFACby10 divFACby10::@return +Block Sequence Planned @begin @36 @end main main::@3 main::@4 main::@1 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@return main::@17 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return divFACby10 divFACby10::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @34 +Adding NOP phi() at start of @36 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@3 @@ -2065,9 +2174,9 @@ Coalesced [99] prepareMEM::mem#7 ← prepareMEM::mem#0 Coalesced [105] prepareMEM::mem#8 ← prepareMEM::mem#1 Coalesced down to 9 phi equivalence classes Culled Empty Block (label) print_ln::@3 -Block Sequence Planned @begin @34 @end main main::@3 main::@4 main::@1 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@return main::@17 print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return divFACby10 divFACby10::@return +Block Sequence Planned @begin @36 @end main main::@3 main::@4 main::@1 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@return main::@17 print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return divFACby10 divFACby10::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @34 +Adding NOP phi() at start of @36 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@3 @@ -2113,14 +2222,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@34 -@34: scope:[] from @begin + to:@36 +@36: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @34 +@end: scope:[] from @36 [3] phi() [ ] ( ) -main: scope:[main] from @34 +main: scope:[main] from @36 [4] phi() [ ] ( main:2 [ ] ) [5] call setFAC param-assignment [ ] ( main:2 [ ] ) to:main::@3 @@ -2216,12 +2325,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 [48] (byte*) char_cursor#31 ← phi( print_word/(byte*) char_cursor#32 print_word::@1/(byte*) char_cursor#10 ) [ print_byte::b#2 char_cursor#31 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 ] ) [48] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 char_cursor#31 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 ] ) [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_byte::$0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_byte::$0 ] ) - [50] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) + [50] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) [51] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::b#2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::b#2 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$2 ] ) - [53] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) + [53] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) [54] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -2321,59 +2430,59 @@ divFACby10::@return: scope:[divFACby10] from divFACby10 DOMINATORS @begin dominated by @begin -@34 dominated by @34 @begin -@end dominated by @end @34 @begin -main dominated by main @34 @begin -main::@3 dominated by main main::@3 @34 @begin -main::@4 dominated by main main::@3 main::@4 @34 @begin -main::@1 dominated by main main::@1 main::@3 main::@4 @34 @begin -main::@6 dominated by main main::@1 main::@6 main::@3 main::@4 @34 @begin -main::@7 dominated by main::@7 main main::@1 main::@6 main::@3 main::@4 @34 @begin -main::@8 dominated by main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin -main::@9 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin -main::@10 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin main::@10 -main::@11 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin main::@11 main::@10 -main::@12 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin main::@11 main::@10 main::@12 -main::@13 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin main::@11 main::@10 main::@13 main::@12 -main::@14 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin main::@11 main::@10 main::@13 main::@12 main::@14 -main::@15 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin main::@11 main::@10 main::@13 main::@12 main::@15 main::@14 -main::@16 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin main::@11 main::@10 main::@16 main::@13 main::@12 main::@15 main::@14 -main::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin main::@return main::@11 main::@10 main::@16 main::@13 main::@12 main::@15 main::@14 -main::@17 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin main::@11 main::@10 main::@17 main::@16 main::@13 main::@12 main::@15 main::@14 -print_ln dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin print_ln main::@11 main::@10 main::@13 main::@12 main::@15 main::@14 -print_ln::@1 dominated by main::@9 print_ln::@1 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin print_ln main::@11 main::@10 main::@13 main::@12 main::@15 main::@14 -print_ln::@return dominated by main::@9 print_ln::@1 main::@7 main::@8 main print_ln::@return main::@1 main::@6 main::@3 main::@4 @34 @begin print_ln main::@11 main::@10 main::@13 main::@12 main::@15 main::@14 -print_word dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @34 @begin main::@11 main::@10 main::@13 main::@12 main::@14 -print_word::@1 dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @34 @begin print_word::@1 main::@11 main::@10 main::@13 main::@12 main::@14 -print_word::@return dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @34 @begin print_word::@return print_word::@1 main::@11 main::@10 main::@13 main::@12 main::@14 -print_byte dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @34 @begin main::@11 main::@10 print_byte main::@13 main::@12 main::@14 -print_byte::@1 dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @34 @begin print_byte::@1 main::@11 main::@10 print_byte main::@13 main::@12 main::@14 -print_byte::@return dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @34 @begin print_byte::@return print_byte::@1 main::@11 main::@10 print_byte main::@13 main::@12 main::@14 -print_char dominated by main::@9 main::@7 main::@8 main print_word print_char main::@1 main::@6 main::@3 main::@4 @34 @begin main::@11 main::@10 print_byte main::@13 main::@12 main::@14 -print_char::@return dominated by main::@9 main::@7 main::@8 main print_word print_char main::@1 main::@6 main::@3 main::@4 @34 print_char::@return @begin main::@11 main::@10 print_byte main::@13 main::@12 main::@14 -getFAC dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin getFAC main::@11 main::@10 main::@13 main::@12 -getFAC::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin getFAC main::@11 main::@10 main::@13 main::@12 getFAC::@return -addMEMtoFAC dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin addMEMtoFAC main::@11 main::@10 main::@12 -addMEMtoFAC::@1 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin addMEMtoFAC::@1 addMEMtoFAC main::@11 main::@10 main::@12 -addMEMtoFAC::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin addMEMtoFAC::@1 addMEMtoFAC main::@11 main::@10 addMEMtoFAC::@return main::@12 -prepareMEM dominated by main @34 @begin prepareMEM -prepareMEM::@return dominated by main @34 @begin prepareMEM::@return prepareMEM -mulFACbyMEM dominated by main mulFACbyMEM main::@1 main::@6 main::@3 main::@4 @34 @begin -mulFACbyMEM::@1 dominated by main mulFACbyMEM main::@1 main::@6 main::@3 main::@4 @34 @begin mulFACbyMEM::@1 -mulFACbyMEM::@return dominated by main mulFACbyMEM::@return mulFACbyMEM main::@1 main::@6 main::@3 main::@4 @34 @begin mulFACbyMEM::@1 -sinFAC dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin sinFAC main::@10 -sinFAC::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin sinFAC sinFAC::@return main::@10 -divMEMbyFAC dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin divMEMbyFAC -divMEMbyFAC::@1 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin divMEMbyFAC::@1 divMEMbyFAC -divMEMbyFAC::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @34 @begin divMEMbyFAC::@1 divMEMbyFAC divMEMbyFAC::@return -setFAC dominated by main @34 @begin setFAC -setFAC::@1 dominated by main @34 @begin setFAC setFAC::@1 -setFAC::@return dominated by setFAC::@return main @34 @begin setFAC setFAC::@1 -setMEMtoFAC dominated by main main::@3 main::@4 @34 @begin setMEMtoFAC -setMEMtoFAC::@1 dominated by main main::@3 main::@4 @34 @begin setMEMtoFAC setMEMtoFAC::@1 -setMEMtoFAC::@return dominated by main main::@3 main::@4 @34 @begin setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return -divFACby10 dominated by main main::@3 @34 @begin divFACby10 -divFACby10::@return dominated by divFACby10::@return main main::@3 @34 @begin divFACby10 +@36 dominated by @begin @36 +@end dominated by @end @begin @36 +main dominated by main @begin @36 +main::@3 dominated by main main::@3 @begin @36 +main::@4 dominated by main main::@3 main::@4 @begin @36 +main::@1 dominated by main main::@1 main::@3 main::@4 @begin @36 +main::@6 dominated by main main::@1 main::@6 main::@3 main::@4 @begin @36 +main::@7 dominated by main::@7 main main::@1 main::@6 main::@3 main::@4 @begin @36 +main::@8 dominated by main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 +main::@9 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 +main::@10 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 main::@10 +main::@11 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 main::@11 main::@10 +main::@12 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 main::@11 main::@10 main::@12 +main::@13 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 main::@11 main::@10 main::@13 main::@12 +main::@14 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 main::@11 main::@10 main::@13 main::@12 main::@14 +main::@15 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 main::@11 main::@10 main::@13 main::@12 main::@15 main::@14 +main::@16 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 main::@11 main::@10 main::@16 main::@13 main::@12 main::@15 main::@14 +main::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 main::@return main::@11 main::@10 main::@16 main::@13 main::@12 main::@15 main::@14 +main::@17 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 main::@11 main::@10 main::@17 main::@16 main::@13 main::@12 main::@15 main::@14 +print_ln dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 print_ln main::@11 main::@10 main::@13 main::@12 main::@15 main::@14 +print_ln::@1 dominated by main::@9 print_ln::@1 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 print_ln main::@11 main::@10 main::@13 main::@12 main::@15 main::@14 +print_ln::@return dominated by main::@9 print_ln::@1 main::@7 main::@8 main print_ln::@return main::@1 main::@6 main::@3 main::@4 @begin @36 print_ln main::@11 main::@10 main::@13 main::@12 main::@15 main::@14 +print_word dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @36 main::@11 main::@10 main::@13 main::@12 main::@14 +print_word::@1 dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @36 print_word::@1 main::@11 main::@10 main::@13 main::@12 main::@14 +print_word::@return dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @36 print_word::@return print_word::@1 main::@11 main::@10 main::@13 main::@12 main::@14 +print_byte dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @36 main::@11 main::@10 print_byte main::@13 main::@12 main::@14 +print_byte::@1 dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @36 print_byte::@1 main::@11 main::@10 print_byte main::@13 main::@12 main::@14 +print_byte::@return dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @36 print_byte::@return print_byte::@1 main::@11 main::@10 print_byte main::@13 main::@12 main::@14 +print_char dominated by main::@9 main::@7 main::@8 main print_word print_char main::@1 main::@6 main::@3 main::@4 @begin @36 main::@11 main::@10 print_byte main::@13 main::@12 main::@14 +print_char::@return dominated by main::@9 main::@7 main::@8 main print_word print_char main::@1 main::@6 main::@3 main::@4 print_char::@return @begin @36 main::@11 main::@10 print_byte main::@13 main::@12 main::@14 +getFAC dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 getFAC main::@11 main::@10 main::@13 main::@12 +getFAC::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 getFAC main::@11 main::@10 main::@13 main::@12 getFAC::@return +addMEMtoFAC dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 addMEMtoFAC main::@11 main::@10 main::@12 +addMEMtoFAC::@1 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 addMEMtoFAC::@1 addMEMtoFAC main::@11 main::@10 main::@12 +addMEMtoFAC::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 addMEMtoFAC::@1 addMEMtoFAC main::@11 main::@10 addMEMtoFAC::@return main::@12 +prepareMEM dominated by main @begin @36 prepareMEM +prepareMEM::@return dominated by main @begin @36 prepareMEM::@return prepareMEM +mulFACbyMEM dominated by main mulFACbyMEM main::@1 main::@6 main::@3 main::@4 @begin @36 +mulFACbyMEM::@1 dominated by main mulFACbyMEM main::@1 main::@6 main::@3 main::@4 @begin @36 mulFACbyMEM::@1 +mulFACbyMEM::@return dominated by main mulFACbyMEM::@return mulFACbyMEM main::@1 main::@6 main::@3 main::@4 @begin @36 mulFACbyMEM::@1 +sinFAC dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 sinFAC main::@10 +sinFAC::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 sinFAC sinFAC::@return main::@10 +divMEMbyFAC dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 divMEMbyFAC +divMEMbyFAC::@1 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 divMEMbyFAC::@1 divMEMbyFAC +divMEMbyFAC::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @36 divMEMbyFAC::@1 divMEMbyFAC divMEMbyFAC::@return +setFAC dominated by main @begin @36 setFAC +setFAC::@1 dominated by main @begin @36 setFAC setFAC::@1 +setFAC::@return dominated by setFAC::@return main @begin @36 setFAC setFAC::@1 +setMEMtoFAC dominated by main main::@3 main::@4 @begin @36 setMEMtoFAC +setMEMtoFAC::@1 dominated by main main::@3 main::@4 @begin @36 setMEMtoFAC setMEMtoFAC::@1 +setMEMtoFAC::@return dominated by main main::@3 main::@4 @begin @36 setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return +divFACby10 dominated by main main::@3 @begin @36 divFACby10 +divFACby10::@return dominated by divFACby10::@return main main::@3 @begin @36 divFACby10 NATURAL LOOPS Found back edge: Loop head: main::@1 tails: main::@17 blocks: null @@ -2535,17 +2644,17 @@ INITIAL ASM .label char_cursor = 7 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @34 [phi:@begin->@34] -b34_from_bbegin: - jmp b34 -//SEG4 @34 -b34: +//SEG3 [1] phi from @begin to @36 [phi:@begin->@36] +b36_from_bbegin: + jmp b36 +//SEG4 @36 +b36: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @34 to main [phi:@34->main] -main_from_b34: +//SEG6 [4] phi from @36 to main [phi:@36->main] +main_from_b36: jsr main -//SEG7 [3] phi from @34 to @end [phi:@34->@end] -bend_from_b34: +//SEG7 [3] phi from @36 to @end [phi:@36->@end] +bend_from_b36: jmp bend //SEG8 @end bend: @@ -2827,7 +2936,7 @@ print_byte: { lsr lsr sta _0 - //SEG107 [50] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG107 [50] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx _0 lda hextab,x sta print_char.ch @@ -2844,7 +2953,7 @@ print_byte: { lda b and #$f sta _2 - //SEG114 [53] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG114 [53] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx _2 lda hextab,x sta print_char.ch @@ -2859,7 +2968,7 @@ print_byte: { breturn: //SEG120 [55] return [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 ] ) rts - hextab: .byte '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' + hextab: .text "0123456789abcdef" } //SEG121 print_char print_char: { @@ -3188,17 +3297,17 @@ ASSEMBLER BEFORE OPTIMIZATION .label char_cursor = 5 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @34 [phi:@begin->@34] -b34_from_bbegin: - jmp b34 -//SEG4 @34 -b34: +//SEG3 [1] phi from @begin to @36 [phi:@begin->@36] +b36_from_bbegin: + jmp b36 +//SEG4 @36 +b36: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @34 to main [phi:@34->main] -main_from_b34: +//SEG6 [4] phi from @36 to main [phi:@36->main] +main_from_b36: jsr main -//SEG7 [3] phi from @34 to @end [phi:@34->@end] -bend_from_b34: +//SEG7 [3] phi from @36 to @end [phi:@36->@end] +bend_from_b36: jmp bend //SEG8 @end bend: @@ -3471,7 +3580,7 @@ print_byte: { lsr lsr tay - //SEG107 [50] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG107 [50] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda hextab,y //SEG108 [51] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::b#2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::b#2 ] ) //SEG109 [56] phi from print_byte to print_char [phi:print_byte->print_char] @@ -3485,7 +3594,7 @@ print_byte: { //SEG113 [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG114 [53] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG114 [53] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tax lda hextab,x //SEG115 [54] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 ] ) @@ -3499,7 +3608,7 @@ print_byte: { breturn: //SEG120 [55] return [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 ] ) rts - hextab: .byte '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' + hextab: .text "0123456789abcdef" } //SEG121 print_char print_char: { @@ -3690,7 +3799,7 @@ divFACby10: { } ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b34 +Removing instruction jmp b36 Removing instruction jmp bend Removing instruction jmp b3 Removing instruction jmp b4 @@ -3732,9 +3841,9 @@ Succesful ASM optimization Pass5NextJumpElimination Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b34_from_bbegin: -Removing instruction main_from_b34: -Removing instruction bend_from_b34: +Removing instruction b36_from_bbegin: +Removing instruction main_from_b36: +Removing instruction bend_from_b36: Removing instruction b3_from_main: Removing instruction b4_from_b3: Removing instruction setMEMtoFAC_from_b4: @@ -3757,7 +3866,7 @@ Removing instruction print_ln_from_b15: Removing instruction b1_from_print_ln: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b34: +Removing instruction b36: Removing instruction bend: Removing instruction setFAC_from_main: Removing instruction b3: @@ -3809,7 +3918,7 @@ Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE -(label) @34 +(label) @36 (label) @begin (label) @end (void()) addMEMtoFAC((byte*) addMEMtoFAC::mem) @@ -3892,7 +4001,7 @@ FINAL SYMBOL TABLE (byte) print_byte::b#1 reg byte x 4.0 (byte) print_byte::b#2 reg byte x 2.0 (byte[]) print_byte::hextab -(const byte[]) print_byte::hextab#0 hextab = { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } +(const string) print_byte::hextab#0 hextab = (string) "0123456789abcdef" (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch @@ -3944,12 +4053,12 @@ FINAL ASSEMBLER .label line_cursor = 3 .label char_cursor = 5 //SEG2 @begin -//SEG3 [1] phi from @begin to @34 [phi:@begin->@34] -//SEG4 @34 +//SEG3 [1] phi from @begin to @36 [phi:@begin->@36] +//SEG4 @36 //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @34 to main [phi:@34->main] +//SEG6 [4] phi from @36 to main [phi:@36->main] jsr main -//SEG7 [3] phi from @34 to @end [phi:@34->@end] +//SEG7 [3] phi from @36 to @end [phi:@36->@end] //SEG8 @end //SEG9 main main: { @@ -4157,7 +4266,7 @@ print_byte: { lsr lsr tay - //SEG107 [50] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG107 [50] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda hextab,y //SEG108 [51] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::b#2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::b#2 ] ) //SEG109 [56] phi from print_byte to print_char [phi:print_byte->print_char] @@ -4168,7 +4277,7 @@ print_byte: { //SEG113 [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG114 [53] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG114 [53] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tax lda hextab,x //SEG115 [54] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 ] ) @@ -4179,7 +4288,7 @@ print_byte: { //SEG119 print_byte::@return //SEG120 [55] return [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 ] ) rts - hextab: .byte '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' + hextab: .text "0123456789abcdef" } //SEG121 print_char print_char: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.sym index ff7c77a49..35da62a1d 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.sym @@ -1,4 +1,4 @@ -(label) @34 +(label) @36 (label) @begin (label) @end (void()) addMEMtoFAC((byte*) addMEMtoFAC::mem) @@ -81,7 +81,7 @@ (byte) print_byte::b#1 reg byte x 4.0 (byte) print_byte::b#2 reg byte x 2.0 (byte[]) print_byte::hextab -(const byte[]) print_byte::hextab#0 hextab = { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } +(const string) print_byte::hextab#0 hextab = (string) "0123456789abcdef" (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm index 197928d9b..bc6b088bc 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm @@ -37,7 +37,6 @@ main: { jmp b2 } anim: { - .label _2 = 5 .label xidx = 4 .label x = 8 .label x_msb = 5 @@ -62,8 +61,9 @@ anim: { lda #>$1e adc #0 sta x+1 - asl _2 - ora x_msb + lda x_msb + asl + ora x+1 sta x_msb lda x ldx j2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg index e38813e27..1df59d80c 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@43 -@43: scope:[] from @begin + to:@45 +@45: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @43 +@end: scope:[] from @45 [3] phi() [ ] ( ) -main: scope:[main] from @43 +main: scope:[main] from @45 [4] phi() [ ] ( main:2 [ ] ) [5] call init param-assignment [ ] ( main:2 [ ] ) to:main::@2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log index 31efbe382..65a235678 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log @@ -544,6 +544,24 @@ void print_ln() { char_cursor = line_cursor; } +// Print a signed word as HEX +void print_sword(signed word w) { + if(w<0) { + print_char('-'); + w = -w; + } + print_word((word)w); +} + +// Print a signed byte as HEX +void print_sbyte(signed byte b) { + if(b<0) { + print_char('-'); + b = -b; + } + print_byte((byte)b); +} + // Print a word as HEX void print_word(word w) { print_byte(>w); @@ -553,7 +571,7 @@ void print_word(word w) { // Print a byte as HEX void print_byte(byte b) { // Table of hexadecimal digits - const byte[] hextab = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + const byte[] hextab = "0123456789abcdef"; print_char(hextab[b>>4]); print_char(hextab[b&$f]); } @@ -793,6 +811,32 @@ print_ln::@1: print_ln::@return: return endproc // print_ln() +proc (void()) print_sword((signed word) print_sword::w) + (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word) 0 + (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 + if((boolean~) print_sword::$1) goto print_sword::@1 + (void~) print_sword::$2 ← call print_char (byte) '-' + (signed word~) print_sword::$3 ← - (signed word) print_sword::w + (signed word) print_sword::w ← (signed word~) print_sword::$3 +print_sword::@1: + (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w + (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 +print_sword::@return: + return +endproc // print_sword() +proc (void()) print_sbyte((signed byte) print_sbyte::b) + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + (void~) print_sbyte::$2 ← call print_char (byte) '-' + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b + (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3 +print_sbyte::@1: + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b + (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 +print_sbyte::@return: + return +endproc // print_sbyte() proc (void()) print_word((word) print_word::w) (byte~) print_word::$0 ← > (word) print_word::w (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 @@ -802,7 +846,7 @@ print_word::@return: return endproc // print_word() proc (void()) print_byte((byte) print_byte::b) - (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } + (byte[]) print_byte::hextab ← (string) "0123456789abcdef" (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 @@ -1341,6 +1385,16 @@ SYMBOLS (boolean~) print_ln::$1 (label) print_ln::@1 (label) print_ln::@return +(void()) print_sbyte((signed byte) print_sbyte::b) +(boolean~) print_sbyte::$0 +(boolean~) print_sbyte::$1 +(void~) print_sbyte::$2 +(signed byte~) print_sbyte::$3 +(byte~) print_sbyte::$4 +(void~) print_sbyte::$5 +(label) print_sbyte::@1 +(label) print_sbyte::@return +(signed byte) print_sbyte::b (void()) print_str((byte*) print_str::str) (boolean~) print_str::$0 (label) print_str::@1 @@ -1348,6 +1402,16 @@ SYMBOLS (label) print_str::@3 (label) print_str::@return (byte*) print_str::str +(void()) print_sword((signed word) print_sword::w) +(boolean~) print_sword::$0 +(boolean~) print_sword::$1 +(void~) print_sword::$2 +(signed word~) print_sword::$3 +(word~) print_sword::$4 +(void~) print_sword::$5 +(label) print_sword::@1 +(label) print_sword::@return +(signed word) print_sword::w (void()) print_word((word) print_word::w) (byte~) print_word::$0 (void~) print_word::$1 @@ -1740,6 +1804,44 @@ print_ln::@return: scope:[print_ln] from print_ln::@2 to:@return @29: scope:[] from @28 to:@30 +print_sword: scope:[print_sword] from + (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word) 0 + (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 + if((boolean~) print_sword::$1) goto print_sword::@1 + to:print_sword::@2 +print_sword::@1: scope:[print_sword] from print_sword print_sword::@2 + (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w + (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 + to:print_sword::@return +print_sword::@2: scope:[print_sword] from print_sword + (void~) print_sword::$2 ← call print_char (byte) '-' + (signed word~) print_sword::$3 ← - (signed word) print_sword::w + (signed word) print_sword::w ← (signed word~) print_sword::$3 + to:print_sword::@1 +print_sword::@return: scope:[print_sword] from print_sword::@1 + return + to:@return +@30: scope:[] from @29 + to:@31 +print_sbyte: scope:[print_sbyte] from + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + to:print_sbyte::@2 +print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@2 + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b + (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 + to:print_sbyte::@return +print_sbyte::@2: scope:[print_sbyte] from print_sbyte + (void~) print_sbyte::$2 ← call print_char (byte) '-' + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b + (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3 + to:print_sbyte::@1 +print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 + return + to:@return +@31: scope:[] from @30 + to:@32 print_word: scope:[print_word] from (byte~) print_word::$0 ← > (word) print_word::w (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 @@ -1749,10 +1851,10 @@ print_word: scope:[print_word] from print_word::@return: scope:[print_word] from print_word return to:@return -@30: scope:[] from @29 - to:@31 +@32: scope:[] from @31 + to:@33 print_byte: scope:[print_byte] from - (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } + (byte[]) print_byte::hextab ← (string) "0123456789abcdef" (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 @@ -1761,8 +1863,8 @@ print_byte: scope:[print_byte] from print_byte::@return: scope:[print_byte] from print_byte return to:@return -@31: scope:[] from @30 - to:@32 +@33: scope:[] from @32 + to:@34 print_char: scope:[print_char] from *((byte*) char_cursor) ← (byte) print_char::ch (byte*) char_cursor ← ++ (byte*) char_cursor @@ -1770,8 +1872,8 @@ print_char: scope:[print_char] from print_char::@return: scope:[print_char] from print_char return to:@return -@32: scope:[] from @31 - to:@33 +@34: scope:[] from @33 + to:@35 print_cls: scope:[print_cls] from (byte*) print_cls::sc ← ((byte*)) (word/signed word) 1024 to:print_cls::@1 @@ -1787,14 +1889,14 @@ print_cls::@2: scope:[print_cls] from print_cls::@1 print_cls::@return: scope:[print_cls] from print_cls::@2 return to:@return -@33: scope:[] from @32 +@35: scope:[] from @34 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 (byte) sinlen_x ← (byte/word/signed word) 221 (byte[221]) sintab_x ← { fill( 221, 0) } (byte) sinlen_y ← (byte/word/signed word) 197 (byte[197]) sintab_y ← { fill( 197, 0) } (byte*) sprites ← ((byte*)) (word/signed word) 8192 - to:@34 + to:@36 main: scope:[main] from (void~) main::$0 ← call init to:main::@1 @@ -1813,8 +1915,8 @@ main::@4: scope:[main] from main::@3 main::@return: scope:[main] from main::@4 return to:@return -@34: scope:[] from @33 - to:@35 +@36: scope:[] from @35 + to:@37 init: scope:[init] from (void~) init::$0 ← call clear_screen (byte) init::i ← (byte/signed byte/word/signed word) 0 @@ -1840,8 +1942,8 @@ init::@2: scope:[init] from init::@1 init::@return: scope:[init] from init::@2 return to:@return -@35: scope:[] from @34 - to:@36 +@37: scope:[] from @36 + to:@38 clear_screen: scope:[clear_screen] from (byte*) clear_screen::sc ← (byte*) SCREEN to:clear_screen::@1 @@ -1857,10 +1959,10 @@ clear_screen::@2: scope:[clear_screen] from clear_screen::@1 clear_screen::@return: scope:[clear_screen] from clear_screen::@2 return to:@return -@36: scope:[] from @35 +@38: scope:[] from @37 (byte*) progress_cursor ← (byte*) SCREEN (byte) progress_idx ← (byte/signed byte/word/signed word) 0 - to:@37 + to:@39 progress_init: scope:[progress_init] from (byte*) progress_cursor ← (byte*) progress_init::line (byte) progress_idx ← (byte/signed byte/word/signed word) 0 @@ -1868,8 +1970,8 @@ progress_init: scope:[progress_init] from progress_init::@return: scope:[progress_init] from progress_init return to:@return -@37: scope:[] from @36 - to:@38 +@39: scope:[] from @38 + to:@40 progress_inc: scope:[progress_inc] from (byte[]) progress_inc::progress_chars ← { (byte/signed byte/word/signed word) 32, (byte/signed byte/word/signed word) 101, (byte/signed byte/word/signed word) 116, (byte/signed byte/word/signed word) 117, (byte/signed byte/word/signed word) 97, (byte/word/signed word) 246, (byte/word/signed word) 231, (byte/word/signed word) 234, (byte/word/signed word) 224 } (byte) progress_idx ← ++ (byte) progress_idx @@ -1888,10 +1990,10 @@ progress_inc::@2: scope:[progress_inc] from progress_inc progress_inc::@return: scope:[progress_inc] from progress_inc::@1 return to:@return -@38: scope:[] from @37 +@40: scope:[] from @39 (byte) sin_idx_x ← (byte/signed byte/word/signed word) 0 (byte) sin_idx_y ← (byte/signed byte/word/signed word) 0 - to:@39 + to:@41 anim: scope:[anim] from *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL) (byte) anim::xidx ← (byte) sin_idx_x @@ -1964,8 +2066,8 @@ anim::@10: scope:[anim] from anim::@4 anim::@return: scope:[anim] from anim::@5 return to:@return -@39: scope:[] from @38 - to:@40 +@41: scope:[] from @40 + to:@42 place_sprites: scope:[place_sprites] from *((byte*) SPRITES_ENABLE) ← (byte/signed byte/word/signed word) 127 *((byte*) SPRITES_EXPAND_X) ← (byte/signed byte/word/signed word) 127 @@ -2002,8 +2104,8 @@ place_sprites::@2: scope:[place_sprites] from place_sprites::@1 place_sprites::@return: scope:[place_sprites] from place_sprites::@2 return to:@return -@40: scope:[] from @39 - to:@41 +@42: scope:[] from @41 + to:@43 gen_sprites: scope:[gen_sprites] from (byte[]) gen_sprites::cml ← (string) "camelot" (byte*) gen_sprites::spr ← (byte*) sprites @@ -2022,8 +2124,8 @@ gen_sprites::@2: scope:[gen_sprites] from gen_sprites::@1 gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@2 return to:@return -@41: scope:[] from @40 - to:@42 +@43: scope:[] from @42 + to:@44 gen_chargen_sprite: scope:[gen_chargen_sprite] from (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 @@ -2095,8 +2197,8 @@ gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 gen_chargen_sprite::@return: scope:[gen_chargen_sprite] from gen_chargen_sprite::@10 return to:@return -@42: scope:[] from @41 - to:@43 +@44: scope:[] from @43 + to:@45 gen_sintab: scope:[gen_sintab] from (byte[]) gen_sintab::f_i ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0 } (byte[]) gen_sintab::f_min ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 0 } @@ -2142,10 +2244,10 @@ gen_sintab::@2: scope:[gen_sintab] from gen_sintab::@1 gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@2 return to:@return -@43: scope:[] from @42 +@45: scope:[] from @44 call main to:@end -@end: scope:[] from @43 +@end: scope:[] from @45 Removing unused procedure setFACtoARG Removing unused procedure setFACtoMEM @@ -2166,8 +2268,10 @@ Removing unused procedure divFACby10 Removing unused procedure mulFACby10 Removing unused procedure print_str Removing unused procedure print_ln -Removing unused procedure print_word +Removing unused procedure print_sword +Removing unused procedure print_sbyte Removing unused procedure print_cls +Removing unused procedure print_word Removing unused procedure print_byte Removing unused procedure print_char Eliminating unused variable (byte*) SPRITES_PRIORITY and assignment [8] (byte*) SPRITES_PRIORITY ← ((byte*)) (word) 53275 @@ -2250,17 +2354,19 @@ Removing empty block @29 Removing empty block @30 Removing empty block @31 Removing empty block @32 -Removing empty block main::@4 +Removing empty block @33 Removing empty block @34 -Removing empty block @35 -Removing empty block clear_screen::@2 +Removing empty block main::@4 +Removing empty block @36 Removing empty block @37 +Removing empty block clear_screen::@2 Removing empty block @39 -Removing empty block place_sprites::@2 -Removing empty block @40 -Removing empty block gen_sprites::@2 Removing empty block @41 +Removing empty block place_sprites::@2 Removing empty block @42 +Removing empty block gen_sprites::@2 +Removing empty block @43 +Removing empty block @44 Removing empty block gen_sintab::@2 PROCEDURE MODIFY VARIABLE ANALYSIS main modifies progress_cursor @@ -2318,7 +2424,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte*) COLS#0 ← ((byte*)) (word) 55296 (byte*) memLo#0 ← ((byte*)) (byte/word/signed word) 254 (byte*) memHi#0 ← ((byte*)) (byte/word/signed word) 255 - to:@33 + to:@35 prepareMEM: scope:[prepareMEM] from addMEMtoFAC divMEMbyFAC mulFACbyMEM setFAC setMEMtoFAC (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(byte*) prepareMEM::mem#2 divMEMbyFAC/(byte*) prepareMEM::mem#3 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 @@ -2413,19 +2519,19 @@ sinFAC: scope:[sinFAC] from gen_sintab::@18 sinFAC::@return: scope:[sinFAC] from sinFAC return to:@return -@33: scope:[] from @begin +@35: scope:[] from @begin (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) sinlen_x#0 ← (byte/word/signed word) 221 (byte[221]) sintab_x#0 ← { fill( 221, 0) } (byte) sinlen_y#0 ← (byte/word/signed word) 197 (byte[197]) sintab_y#0 ← { fill( 197, 0) } (byte*) sprites#0 ← ((byte*)) (word/signed word) 8192 - to:@36 -main: scope:[main] from @43 - (byte) sin_idx_y#24 ← phi( @43/(byte) sin_idx_y#17 ) - (byte) sin_idx_x#26 ← phi( @43/(byte) sin_idx_x#16 ) - (byte) progress_idx#30 ← phi( @43/(byte) progress_idx#35 ) - (byte*) progress_cursor#29 ← phi( @43/(byte*) progress_cursor#35 ) + to:@38 +main: scope:[main] from @45 + (byte) sin_idx_y#24 ← phi( @45/(byte) sin_idx_y#17 ) + (byte) sin_idx_x#26 ← phi( @45/(byte) sin_idx_x#16 ) + (byte) progress_idx#30 ← phi( @45/(byte) progress_idx#35 ) + (byte*) progress_cursor#29 ← phi( @45/(byte*) progress_cursor#35 ) call init param-assignment to:main::@5 main::@5: scope:[main] from main @@ -2577,10 +2683,10 @@ clear_screen::@1: scope:[clear_screen] from clear_screen clear_screen::@1 clear_screen::@return: scope:[clear_screen] from clear_screen::@1 return to:@return -@36: scope:[] from @33 +@38: scope:[] from @35 (byte*) progress_cursor#7 ← (byte*) SCREEN#0 (byte) progress_idx#7 ← (byte/signed byte/word/signed word) 0 - to:@38 + to:@40 progress_init: scope:[progress_init] from init::@5 init::@7 (byte*) progress_init::line#2 ← phi( init::@5/(byte*) progress_init::line#0 init::@7/(byte*) progress_init::line#1 ) (byte*) progress_cursor#8 ← (byte*) progress_init::line#2 @@ -2620,12 +2726,12 @@ progress_inc::@return: scope:[progress_inc] from progress_inc::@1 (byte*) progress_cursor#11 ← (byte*) progress_cursor#25 return to:@return -@38: scope:[] from @36 - (byte) progress_idx#39 ← phi( @36/(byte) progress_idx#7 ) - (byte*) progress_cursor#39 ← phi( @36/(byte*) progress_cursor#7 ) +@40: scope:[] from @38 + (byte) progress_idx#39 ← phi( @38/(byte) progress_idx#7 ) + (byte*) progress_cursor#39 ← phi( @38/(byte*) progress_cursor#7 ) (byte) sin_idx_x#2 ← (byte/signed byte/word/signed word) 0 (byte) sin_idx_y#2 ← (byte/signed byte/word/signed word) 0 - to:@43 + to:@45 anim: scope:[anim] from main::@3 (byte) sin_idx_y#9 ← phi( main::@3/(byte) sin_idx_y#13 ) (byte) sin_idx_x#9 ← phi( main::@3/(byte) sin_idx_x#13 ) @@ -3185,31 +3291,31 @@ gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@23 (byte*) progress_cursor#13 ← (byte*) progress_cursor#27 return to:@return -@43: scope:[] from @38 - (byte) sin_idx_y#17 ← phi( @38/(byte) sin_idx_y#2 ) - (byte) sin_idx_x#16 ← phi( @38/(byte) sin_idx_x#2 ) - (byte) progress_idx#35 ← phi( @38/(byte) progress_idx#39 ) - (byte*) progress_cursor#35 ← phi( @38/(byte*) progress_cursor#39 ) +@45: scope:[] from @40 + (byte) sin_idx_y#17 ← phi( @40/(byte) sin_idx_y#2 ) + (byte) sin_idx_x#16 ← phi( @40/(byte) sin_idx_x#2 ) + (byte) progress_idx#35 ← phi( @40/(byte) progress_idx#39 ) + (byte*) progress_cursor#35 ← phi( @40/(byte*) progress_cursor#39 ) call main param-assignment - to:@44 -@44: scope:[] from @43 - (byte) sin_idx_y#12 ← phi( @43/(byte) sin_idx_y#1 ) - (byte) sin_idx_x#12 ← phi( @43/(byte) sin_idx_x#1 ) - (byte) progress_idx#29 ← phi( @43/(byte) progress_idx#1 ) - (byte*) progress_cursor#28 ← phi( @43/(byte*) progress_cursor#1 ) + to:@46 +@46: scope:[] from @45 + (byte) sin_idx_y#12 ← phi( @45/(byte) sin_idx_y#1 ) + (byte) sin_idx_x#12 ← phi( @45/(byte) sin_idx_x#1 ) + (byte) progress_idx#29 ← phi( @45/(byte) progress_idx#1 ) + (byte*) progress_cursor#28 ← phi( @45/(byte*) progress_cursor#1 ) (byte*) progress_cursor#14 ← (byte*) progress_cursor#28 (byte) progress_idx#15 ← (byte) progress_idx#29 (byte) sin_idx_x#6 ← (byte) sin_idx_x#12 (byte) sin_idx_y#6 ← (byte) sin_idx_y#12 to:@end -@end: scope:[] from @44 +@end: scope:[] from @46 SYMBOL TABLE SSA -(label) @33 -(label) @36 +(label) @35 (label) @38 -(label) @43 -(label) @44 +(label) @40 +(label) @45 +(label) @46 (label) @begin (label) @end (byte*) BORDERCOL @@ -4505,18 +4611,18 @@ Fixing word constructor with getFAC::$0 ← *(memHi#0) w= *(memLo#0) Succesful SSA optimization Pass2FixWordConstructors Eliminating unused constant (const byte) progress_idx#35 Succesful SSA optimization PassNEliminateUnusedVars -Culled Empty Block (label) @33 +Culled Empty Block (label) @35 Culled Empty Block (label) main::@5 Culled Empty Block (label) main::@1 Culled Empty Block (label) init::@3 Culled Empty Block (label) init::@10 -Culled Empty Block (label) @36 Culled Empty Block (label) @38 +Culled Empty Block (label) @40 Not culling empty block because it shares successor with its predecessor. (label) anim::@9 Not culling empty block because it shares successor with its predecessor. (label) anim::@10 Not culling empty block because it shares successor with its predecessor. (label) gen_chargen_sprite::@6 Culled Empty Block (label) gen_sintab::@13 -Culled Empty Block (label) @44 +Culled Empty Block (label) @46 Succesful SSA optimization Pass2CullEmptyBlocks Not culling empty block because it shares successor with its predecessor. (label) anim::@9 Not culling empty block because it shares successor with its predecessor. (label) anim::@10 @@ -4777,7 +4883,7 @@ Constant inlined progress_idx#11 = (byte/signed byte/word/signed word) 0 Constant inlined gen_sprites::$3 = (const string) gen_sprites::cml#0 Constant inlined anim::j2#0 = (byte/signed byte/word/signed word) 12 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @43 @end main main::@2 main::@3 main::@6 main::@return anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return +Block Sequence Planned @begin @45 @end main main::@2 main::@3 main::@6 main::@return anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return Added new block during phi lifting main::@7(between main::@6 and main::@2) Added new block during phi lifting anim::@11(between anim::@3 and anim::@1) Added new block during phi lifting anim::@12(between anim::@1 and anim::@2) @@ -4794,9 +4900,9 @@ Added new block during phi lifting gen_chargen_sprite::@12(between gen_chargen_s Added new block during phi lifting gen_chargen_sprite::@13(between gen_chargen_sprite::@5 and gen_chargen_sprite::@4) Added new block during phi lifting gen_chargen_sprite::@14(between gen_chargen_sprite::@4 and gen_chargen_sprite::@5) Added new block during phi lifting place_sprites::@3(between place_sprites::@1 and place_sprites::@1) -Block Sequence Planned @begin @43 @end main main::@2 main::@3 main::@6 main::@return main::@7 anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return anim::@15 anim::@14 anim::@11 anim::@13 anim::@12 init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return init::@11 clear_screen clear_screen::@1 clear_screen::@return clear_screen::@3 gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return gen_sintab::@24 progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return progress_inc::@3 getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_sprites::@4 gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return gen_chargen_sprite::@11 gen_chargen_sprite::@12 gen_chargen_sprite::@13 gen_chargen_sprite::@14 place_sprites place_sprites::@1 place_sprites::@return place_sprites::@3 +Block Sequence Planned @begin @45 @end main main::@2 main::@3 main::@6 main::@return main::@7 anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return anim::@15 anim::@14 anim::@11 anim::@13 anim::@12 init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return init::@11 clear_screen clear_screen::@1 clear_screen::@return clear_screen::@3 gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return gen_sintab::@24 progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return progress_inc::@3 getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_sprites::@4 gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return gen_chargen_sprite::@11 gen_chargen_sprite::@12 gen_chargen_sprite::@13 gen_chargen_sprite::@14 place_sprites place_sprites::@1 place_sprites::@return place_sprites::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @43 +Adding NOP phi() at start of @45 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@3 @@ -4976,9 +5082,9 @@ Culled Empty Block (label) gen_chargen_sprite::@12 Culled Empty Block (label) gen_chargen_sprite::@13 Culled Empty Block (label) gen_chargen_sprite::@14 Culled Empty Block (label) place_sprites::@3 -Block Sequence Planned @begin @43 @end main main::@2 main::@3 main::@6 main::@return anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@4 anim::@5 anim::@return anim::@15 anim::@14 init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return +Block Sequence Planned @begin @45 @end main main::@2 main::@3 main::@6 main::@return anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@4 anim::@5 anim::@return anim::@15 anim::@14 init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @43 +Adding NOP phi() at start of @45 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@3 @@ -5062,14 +5168,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@43 -@43: scope:[] from @begin + to:@45 +@45: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @43 +@end: scope:[] from @45 [3] phi() [ ] ( ) -main: scope:[main] from @43 +main: scope:[main] from @45 [4] phi() [ ] ( main:2 [ ] ) [5] call init param-assignment [ ] ( main:2 [ ] ) to:main::@2 @@ -5532,111 +5638,111 @@ place_sprites::@return: scope:[place_sprites] from place_sprites::@1 DOMINATORS @begin dominated by @begin -@43 dominated by @begin @43 -@end dominated by @end @begin @43 -main dominated by main @begin @43 -main::@2 dominated by main::@2 main @begin @43 -main::@3 dominated by main::@2 main::@3 main @begin @43 -main::@6 dominated by main::@2 main::@6 main::@3 main @begin @43 -main::@return dominated by main::@2 main::@6 main::@3 main::@return main @begin @43 -anim dominated by main::@2 main::@3 anim main @begin @43 -anim::@1 dominated by main::@2 main::@3 anim anim::@1 main @begin @43 -anim::@6 dominated by main::@2 main::@3 anim anim::@6 anim::@1 main @begin @43 -anim::@2 dominated by main::@2 main::@3 anim anim::@2 anim::@1 main @begin @43 -anim::@7 dominated by main::@2 main::@3 anim anim::@2 anim::@1 anim::@7 main @begin @43 -anim::@3 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 main @begin @43 -anim::@8 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@8 main @begin @43 -anim::@4 dominated by main::@2 main::@3 anim anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @43 -anim::@5 dominated by main::@2 main::@3 anim anim::@5 anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @43 -anim::@return dominated by main::@2 main::@3 anim anim::@5 anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 anim::@return main @begin @43 -anim::@15 dominated by main::@2 main::@3 anim anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @43 anim::@15 -anim::@14 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@8 main @begin @43 anim::@14 -init dominated by init main @begin @43 -init::@1 dominated by init main @begin init::@1 @43 -init::@2 dominated by init main @begin init::@2 init::@1 @43 -init::@4 dominated by init main @begin init::@2 init::@1 init::@4 @43 -init::@5 dominated by init main @begin init::@2 init::@1 init::@5 init::@4 @43 -init::@6 dominated by init main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 -init::@7 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 @43 -init::@8 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@8 @43 -init::@9 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@9 init::@8 @43 -init::@return dominated by init main @begin init::@return init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@9 init::@8 @43 -clear_screen dominated by init clear_screen main @begin @43 -clear_screen::@1 dominated by init clear_screen main @begin @43 clear_screen::@1 -clear_screen::@return dominated by init clear_screen main @begin @43 clear_screen::@1 clear_screen::@return -gen_sintab dominated by init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 -gen_sintab::@3 dominated by init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -gen_sintab::@4 dominated by init gen_sintab main gen_sintab::@4 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -gen_sintab::@5 dominated by init gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -gen_sintab::@6 dominated by init gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -gen_sintab::@7 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -gen_sintab::@8 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -gen_sintab::@9 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -gen_sintab::@10 dominated by gen_sintab::@10 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -gen_sintab::@11 dominated by gen_sintab::@10 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -gen_sintab::@12 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -gen_sintab::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@14 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@15 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@15 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@16 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@17 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@17 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@18 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@19 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@20 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@20 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@21 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@22 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@23 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@23 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@23 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 gen_sintab::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -progress_inc dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -progress_inc::@2 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@2 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -progress_inc::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -progress_inc::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 progress_inc::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -getFAC dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 getFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -getFAC::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 getFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 getFAC::@return -addMEMtoFAC dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -addMEMtoFAC::@1 dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC::@1 addMEMtoFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -addMEMtoFAC::@return dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC::@1 addMEMtoFAC addMEMtoFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -prepareMEM dominated by init prepareMEM gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 -prepareMEM::@return dominated by init prepareMEM gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 prepareMEM::@return -mulFACbyMEM dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -mulFACbyMEM::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 mulFACbyMEM::@1 gen_sintab::@3 gen_sintab::@1 -mulFACbyMEM::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM::@return mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 mulFACbyMEM::@1 gen_sintab::@3 gen_sintab::@1 -sinFAC dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init sinFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -sinFAC::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init sinFAC sinFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 gen_sintab::@1 -divMEMbyFAC dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 divMEMbyFAC gen_sintab::@3 -divMEMbyFAC::@1 dominated by init divMEMbyFAC::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 divMEMbyFAC gen_sintab::@3 -divMEMbyFAC::@return dominated by init divMEMbyFAC::@1 divMEMbyFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 divMEMbyFAC gen_sintab::@3 -setFAC dominated by init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 -setFAC::@1 dominated by init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 setFAC::@1 -setFAC::@return dominated by setFAC::@return init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 setFAC::@1 -setMEMtoFAC dominated by init setMEMtoFAC gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -setMEMtoFAC::@1 dominated by init setMEMtoFAC setMEMtoFAC::@1 gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -setMEMtoFAC::@return dominated by init setMEMtoFAC setMEMtoFAC::@1 gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 setMEMtoFAC::@return gen_sintab::@3 -subFACfromARG dominated by init subFACfromARG gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -subFACfromARG::@return dominated by init subFACfromARG gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 subFACfromARG::@return gen_sintab::@3 -setARGtoFAC dominated by setARGtoFAC init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -setARGtoFAC::@return dominated by setARGtoFAC init gen_sintab main setARGtoFAC::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @43 gen_sintab::@3 -progress_init dominated by init progress_init main @begin init::@2 init::@1 init::@5 init::@4 @43 -progress_init::@return dominated by init progress_init main @begin init::@2 init::@1 init::@5 init::@4 @43 progress_init::@return -gen_sprites dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 @43 -gen_sprites::@1 dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 @43 gen_sprites::@1 -gen_sprites::@3 dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 @43 gen_sprites::@1 gen_sprites::@3 -gen_sprites::@return dominated by init main gen_sprites::@return @begin gen_sprites init::@2 init::@1 init::@4 @43 gen_sprites::@1 gen_sprites::@3 -gen_chargen_sprite dominated by init gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 @43 gen_sprites::@1 -gen_chargen_sprite::@1 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 @43 gen_sprites::@1 -gen_chargen_sprite::@2 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 @43 gen_sprites::@1 -gen_chargen_sprite::@6 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 @43 gen_sprites::@1 -gen_chargen_sprite::@3 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 @43 gen_sprites::@1 -gen_chargen_sprite::@4 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 @43 gen_sprites::@1 -gen_chargen_sprite::@7 dominated by init gen_chargen_sprite::@7 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 @43 gen_sprites::@1 -gen_chargen_sprite::@5 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 @43 gen_sprites::@1 -gen_chargen_sprite::@8 dominated by init gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 @43 gen_sprites::@1 -gen_chargen_sprite::@9 dominated by init gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 @43 gen_sprites::@1 -gen_chargen_sprite::@10 dominated by init gen_chargen_sprite::@10 gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 @43 gen_sprites::@1 -gen_chargen_sprite::@return dominated by init gen_chargen_sprite::@10 gen_chargen_sprite::@return gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 @43 gen_sprites::@1 -place_sprites dominated by init main @begin init::@2 init::@1 @43 place_sprites -place_sprites::@1 dominated by init place_sprites::@1 main @begin init::@2 init::@1 @43 place_sprites -place_sprites::@return dominated by init place_sprites::@return place_sprites::@1 main @begin init::@2 init::@1 @43 place_sprites +@45 dominated by @begin @45 +@end dominated by @end @begin @45 +main dominated by main @begin @45 +main::@2 dominated by main::@2 main @begin @45 +main::@3 dominated by main::@2 main::@3 main @begin @45 +main::@6 dominated by main::@2 main::@6 main::@3 main @begin @45 +main::@return dominated by main::@2 main::@6 main::@3 main::@return main @begin @45 +anim dominated by main::@2 main::@3 anim main @begin @45 +anim::@1 dominated by main::@2 main::@3 anim anim::@1 main @begin @45 +anim::@6 dominated by main::@2 main::@3 anim anim::@6 anim::@1 main @begin @45 +anim::@2 dominated by main::@2 main::@3 anim anim::@2 anim::@1 main @begin @45 +anim::@7 dominated by main::@2 main::@3 anim anim::@2 anim::@1 anim::@7 main @begin @45 +anim::@3 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 main @begin @45 +anim::@8 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@8 main @begin @45 +anim::@4 dominated by main::@2 main::@3 anim anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @45 +anim::@5 dominated by main::@2 main::@3 anim anim::@5 anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @45 +anim::@return dominated by main::@2 main::@3 anim anim::@5 anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 anim::@return main @begin @45 +anim::@15 dominated by main::@2 main::@3 anim anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @45 anim::@15 +anim::@14 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@8 main @begin @45 anim::@14 +init dominated by init main @begin @45 +init::@1 dominated by init main @begin init::@1 @45 +init::@2 dominated by init main @begin init::@2 init::@1 @45 +init::@4 dominated by init main @begin init::@2 init::@1 init::@4 @45 +init::@5 dominated by init main @begin init::@2 init::@1 init::@5 init::@4 @45 +init::@6 dominated by init main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 +init::@7 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 @45 +init::@8 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@8 @45 +init::@9 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@9 init::@8 @45 +init::@return dominated by init main @begin init::@return init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@9 init::@8 @45 +clear_screen dominated by init clear_screen main @begin @45 +clear_screen::@1 dominated by init clear_screen main @begin @45 clear_screen::@1 +clear_screen::@return dominated by init clear_screen main @begin @45 clear_screen::@1 clear_screen::@return +gen_sintab dominated by init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 +gen_sintab::@3 dominated by init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +gen_sintab::@4 dominated by init gen_sintab main gen_sintab::@4 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +gen_sintab::@5 dominated by init gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +gen_sintab::@6 dominated by init gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +gen_sintab::@7 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +gen_sintab::@8 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +gen_sintab::@9 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +gen_sintab::@10 dominated by gen_sintab::@10 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +gen_sintab::@11 dominated by gen_sintab::@10 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +gen_sintab::@12 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +gen_sintab::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@14 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@15 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@15 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@16 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@17 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@17 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@18 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@19 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@20 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@20 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@21 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@22 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@23 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@23 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@23 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 gen_sintab::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +progress_inc dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +progress_inc::@2 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@2 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +progress_inc::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +progress_inc::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 progress_inc::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +getFAC dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 getFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +getFAC::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 getFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 getFAC::@return +addMEMtoFAC dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +addMEMtoFAC::@1 dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC::@1 addMEMtoFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +addMEMtoFAC::@return dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC::@1 addMEMtoFAC addMEMtoFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +prepareMEM dominated by init prepareMEM gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 +prepareMEM::@return dominated by init prepareMEM gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 prepareMEM::@return +mulFACbyMEM dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +mulFACbyMEM::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 mulFACbyMEM::@1 gen_sintab::@3 gen_sintab::@1 +mulFACbyMEM::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM::@return mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 mulFACbyMEM::@1 gen_sintab::@3 gen_sintab::@1 +sinFAC dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init sinFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +sinFAC::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init sinFAC sinFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 gen_sintab::@1 +divMEMbyFAC dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 divMEMbyFAC gen_sintab::@3 +divMEMbyFAC::@1 dominated by init divMEMbyFAC::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 divMEMbyFAC gen_sintab::@3 +divMEMbyFAC::@return dominated by init divMEMbyFAC::@1 divMEMbyFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 divMEMbyFAC gen_sintab::@3 +setFAC dominated by init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 +setFAC::@1 dominated by init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 setFAC::@1 +setFAC::@return dominated by setFAC::@return init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 setFAC::@1 +setMEMtoFAC dominated by init setMEMtoFAC gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +setMEMtoFAC::@1 dominated by init setMEMtoFAC setMEMtoFAC::@1 gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +setMEMtoFAC::@return dominated by init setMEMtoFAC setMEMtoFAC::@1 gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 setMEMtoFAC::@return gen_sintab::@3 +subFACfromARG dominated by init subFACfromARG gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +subFACfromARG::@return dominated by init subFACfromARG gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 subFACfromARG::@return gen_sintab::@3 +setARGtoFAC dominated by setARGtoFAC init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +setARGtoFAC::@return dominated by setARGtoFAC init gen_sintab main setARGtoFAC::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @45 gen_sintab::@3 +progress_init dominated by init progress_init main @begin init::@2 init::@1 init::@5 init::@4 @45 +progress_init::@return dominated by init progress_init main @begin init::@2 init::@1 init::@5 init::@4 @45 progress_init::@return +gen_sprites dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 @45 +gen_sprites::@1 dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @45 +gen_sprites::@3 dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @45 gen_sprites::@3 +gen_sprites::@return dominated by init main gen_sprites::@return @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @45 gen_sprites::@3 +gen_chargen_sprite dominated by init gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @45 +gen_chargen_sprite::@1 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @45 +gen_chargen_sprite::@2 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @45 +gen_chargen_sprite::@6 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @45 +gen_chargen_sprite::@3 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @45 +gen_chargen_sprite::@4 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @45 +gen_chargen_sprite::@7 dominated by init gen_chargen_sprite::@7 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @45 +gen_chargen_sprite::@5 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @45 +gen_chargen_sprite::@8 dominated by init gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @45 +gen_chargen_sprite::@9 dominated by init gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @45 +gen_chargen_sprite::@10 dominated by init gen_chargen_sprite::@10 gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @45 +gen_chargen_sprite::@return dominated by init gen_chargen_sprite::@10 gen_chargen_sprite::@return gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @45 +place_sprites dominated by init main @begin init::@2 init::@1 @45 place_sprites +place_sprites::@1 dominated by init place_sprites::@1 main @begin init::@2 init::@1 @45 place_sprites +place_sprites::@return dominated by init place_sprites::@return place_sprites::@1 main @begin init::@2 init::@1 @45 place_sprites NATURAL LOOPS Found back edge: Loop head: main::@2 tails: main::@2 blocks: null @@ -6120,17 +6226,17 @@ INITIAL ASM .label sin_idx_y = 3 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @43 [phi:@begin->@43] -b43_from_bbegin: - jmp b43 -//SEG4 @43 -b43: +//SEG3 [1] phi from @begin to @45 [phi:@begin->@45] +b45_from_bbegin: + jmp b45 +//SEG4 @45 +b45: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @43 to main [phi:@43->main] -main_from_b43: +//SEG6 [4] phi from @45 to main [phi:@45->main] +main_from_b45: jsr main -//SEG7 [3] phi from @43 to @end [phi:@43->@end] -bend_from_b43: +//SEG7 [3] phi from @45 to @end [phi:@45->@end] +bend_from_b45: jmp bend //SEG8 @end bend: @@ -7768,73 +7874,65 @@ Uplift Scope [progress_inc] Uplifting [gen_chargen_sprite] best 1076973 combination zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] zp ZP_WORD:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] reg byte a [ gen_chargen_sprite::$6 ] reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] reg byte a [ gen_chargen_sprite::$3 ] zp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] zp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] zp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] zp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] reg byte x [ gen_chargen_sprite::ch#0 ] zp ZP_WORD:66 [ gen_chargen_sprite::$0 ] zp ZP_WORD:68 [ gen_chargen_sprite::$1 ] zp ZP_WORD:70 [ gen_chargen_sprite::chargen#0 ] Uplift attempts [anim] 10000/77760 (limiting to 10000) -Uplifting [anim] best 1074070 combination reg byte y [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] reg byte a [ anim::$3 ] reg byte a [ anim::$5 ] reg byte a [ anim::j2#1 ] zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] zp ZP_BYTE:52 [ anim::$2 ] zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 ] zp ZP_WORD:50 [ anim::x#0 ] +Uplifting [anim] best 1073470 combination reg byte y [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] reg byte alu [ anim::$3 ] reg byte a [ anim::$5 ] reg byte a [ anim::j2#1 ] zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] reg byte a [ anim::$2 ] zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 ] zp ZP_WORD:50 [ anim::x#0 ] Limited combination testing to 10000 combinations of 77760 possible. -Uplifting [place_sprites] best 1073650 combination reg byte x [ place_sprites::j2#1 ] reg byte y [ place_sprites::j#2 place_sprites::j#1 ] zp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] reg byte x [ place_sprites::j2#3 place_sprites::j2#2 ] zp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] -Uplifting [setFAC] best 1073650 combination zp ZP_WORD:29 [ setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] -Uplifting [gen_sintab] best 1073583 combination zp ZP_WORD:58 [ gen_sintab::$23 ] reg byte a [ gen_sintab::$24 ] zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] reg byte x [ gen_sintab::max#2 ] zp ZP_BYTE:14 [ gen_sintab::length#10 ] zp ZP_BYTE:13 [ gen_sintab::min#2 ] zp ZP_WORD:15 [ gen_sintab::sintab#12 ] -Uplifting [gen_sprites] best 1073583 combination zp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] zp ZP_WORD:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] -Uplifting [clear_screen] best 1073583 combination zp ZP_WORD:10 [ clear_screen::sc#2 clear_screen::sc#1 ] -Uplifting [prepareMEM] best 1073571 combination zp ZP_WORD:23 [ prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] -Uplifting [init] best 1073421 combination reg byte x [ init::i#2 init::i#1 ] -Uplifting [getFAC] best 1073421 combination zp ZP_WORD:56 [ getFAC::return#2 ] zp ZP_WORD:61 [ getFAC::return#0 ] -Uplifting [] best 1073421 combination zp ZP_WORD:19 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] -Uplifting [setMEMtoFAC] best 1073421 combination zp ZP_WORD:31 [ setMEMtoFAC::mem#5 ] -Uplifting [addMEMtoFAC] best 1073421 combination zp ZP_WORD:21 [ addMEMtoFAC::mem#2 ] -Uplifting [divMEMbyFAC] best 1073421 combination zp ZP_WORD:27 [ divMEMbyFAC::mem#2 ] -Uplifting [mulFACbyMEM] best 1073421 combination zp ZP_WORD:25 [ mulFACbyMEM::mem#2 ] -Uplifting [setARGtoFAC] best 1073421 combination -Uplifting [subFACfromARG] best 1073421 combination -Uplifting [sinFAC] best 1073421 combination -Uplifting [main] best 1073421 combination -Uplifting [progress_init] best 1073421 combination -Uplifting [progress_inc] best 1073421 combination -MISSING FRAGMENTS - vbuz1=vbuz2_bor__hi_vwuz3 - vbuxx=vbuz1_bor__hi_vwuz2 - vbuyy=vbuz1_bor__hi_vwuz2 - vbuz1=vbuaa_bor__hi_vwuz2 - vbuxx=vbuaa_bor__hi_vwuz1 +Uplifting [place_sprites] best 1073050 combination reg byte x [ place_sprites::j2#1 ] reg byte y [ place_sprites::j#2 place_sprites::j#1 ] zp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] reg byte x [ place_sprites::j2#3 place_sprites::j2#2 ] zp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] +Uplifting [setFAC] best 1073050 combination zp ZP_WORD:29 [ setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] +Uplifting [gen_sintab] best 1072983 combination zp ZP_WORD:58 [ gen_sintab::$23 ] reg byte a [ gen_sintab::$24 ] zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] reg byte x [ gen_sintab::max#2 ] zp ZP_BYTE:14 [ gen_sintab::length#10 ] zp ZP_BYTE:13 [ gen_sintab::min#2 ] zp ZP_WORD:15 [ gen_sintab::sintab#12 ] +Uplifting [gen_sprites] best 1072983 combination zp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] zp ZP_WORD:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] +Uplifting [clear_screen] best 1072983 combination zp ZP_WORD:10 [ clear_screen::sc#2 clear_screen::sc#1 ] +Uplifting [prepareMEM] best 1072971 combination zp ZP_WORD:23 [ prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] +Uplifting [init] best 1072821 combination reg byte x [ init::i#2 init::i#1 ] +Uplifting [getFAC] best 1072821 combination zp ZP_WORD:56 [ getFAC::return#2 ] zp ZP_WORD:61 [ getFAC::return#0 ] +Uplifting [] best 1072821 combination zp ZP_WORD:19 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] +Uplifting [setMEMtoFAC] best 1072821 combination zp ZP_WORD:31 [ setMEMtoFAC::mem#5 ] +Uplifting [addMEMtoFAC] best 1072821 combination zp ZP_WORD:21 [ addMEMtoFAC::mem#2 ] +Uplifting [divMEMbyFAC] best 1072821 combination zp ZP_WORD:27 [ divMEMbyFAC::mem#2 ] +Uplifting [mulFACbyMEM] best 1072821 combination zp ZP_WORD:25 [ mulFACbyMEM::mem#2 ] +Uplifting [setARGtoFAC] best 1072821 combination +Uplifting [subFACfromARG] best 1072821 combination +Uplifting [sinFAC] best 1072821 combination +Uplifting [main] best 1072821 combination +Uplifting [progress_init] best 1072821 combination +Uplifting [progress_inc] best 1072821 combination Attempting to uplift remaining variables inzp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] -Uplifting [gen_chargen_sprite] best 1073421 combination zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] +Uplifting [gen_chargen_sprite] best 1072821 combination zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] -Uplifting [gen_chargen_sprite] best 1073421 combination zp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] +Uplifting [gen_chargen_sprite] best 1072821 combination zp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] -Uplifting [gen_chargen_sprite] best 1073421 combination zp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] +Uplifting [gen_chargen_sprite] best 1072821 combination zp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] -Uplifting [gen_chargen_sprite] best 1073421 combination zp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] +Uplifting [gen_chargen_sprite] best 1072821 combination zp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] -Uplifting [anim] best 1073421 combination zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] +Uplifting [anim] best 1072821 combination zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] -Uplifting [gen_chargen_sprite] best 1073421 combination zp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] +Uplifting [gen_chargen_sprite] best 1072821 combination zp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] -Uplifting [anim] best 1073421 combination zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] +Uplifting [anim] best 1072821 combination zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] -Uplifting [anim] best 1073421 combination zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:52 [ anim::$2 ] -Uplifting [anim] best 1073421 combination zp ZP_BYTE:52 [ anim::$2 ] +Uplifting [anim] best 1072821 combination zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 ] -Uplifting [anim] best 1073421 combination zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 ] +Uplifting [anim] best 1072821 combination zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] -Uplifting [gen_sprites] best 1073421 combination zp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] +Uplifting [gen_sprites] best 1072821 combination zp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] -Uplifting [place_sprites] best 1073421 combination zp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] +Uplifting [place_sprites] best 1072821 combination zp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] -Uplifting [gen_sintab] best 1073421 combination zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] +Uplifting [gen_sintab] best 1072821 combination zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] -Uplifting [place_sprites] best 1073421 combination zp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] +Uplifting [place_sprites] best 1072821 combination zp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] -Uplifting [place_sprites] best 1073421 combination zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] +Uplifting [place_sprites] best 1072821 combination zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] -Uplifting [] best 1073421 combination zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] +Uplifting [] best 1072821 combination zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] -Uplifting [] best 1073421 combination zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] +Uplifting [] best 1072821 combination zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] -Uplifting [] best 1073421 combination zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] +Uplifting [] best 1072821 combination zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:14 [ gen_sintab::length#10 ] -Uplifting [gen_sintab] best 1073421 combination zp ZP_BYTE:14 [ gen_sintab::length#10 ] +Uplifting [gen_sintab] best 1072821 combination zp ZP_BYTE:14 [ gen_sintab::length#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:13 [ gen_sintab::min#2 ] -Uplifting [gen_sintab] best 1073421 combination zp ZP_BYTE:13 [ gen_sintab::min#2 ] +Uplifting [gen_sintab] best 1072821 combination zp ZP_BYTE:13 [ gen_sintab::min#2 ] Coalescing zero page register [ zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] ] with [ zp ZP_BYTE:13 [ gen_sintab::min#2 ] ] Coalescing zero page register [ zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 gen_sintab::min#2 ] ] with [ zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] ] Coalescing zero page register [ zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 gen_sintab::min#2 gen_sintab::i#10 gen_sintab::i#1 ] ] with [ zp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] ] @@ -7846,7 +7944,6 @@ Coalescing zero page register [ zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::x Coalescing zero page register [ zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 progress_idx#34 progress_idx#12 progress_idx#10 ] ] with [ zp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] ] Coalescing zero page register [ zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 progress_idx#34 progress_idx#12 progress_idx#10 gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] ] with [ zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] ] Coalescing zero page register [ zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] ] with [ zp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] ] with [ zp ZP_BYTE:52 [ anim::$2 ] ] Coalescing zero page register [ zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 ] ] with [ zp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] ] Coalescing zero page register [ zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] ] with [ zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] ] Coalescing zero page register [ zp ZP_WORD:10 [ clear_screen::sc#2 clear_screen::sc#1 ] ] with [ zp ZP_WORD:15 [ gen_sintab::sintab#12 ] ] @@ -7899,17 +7996,17 @@ ASSEMBLER BEFORE OPTIMIZATION .label sin_idx_y = 3 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @43 [phi:@begin->@43] -b43_from_bbegin: - jmp b43 -//SEG4 @43 -b43: +//SEG3 [1] phi from @begin to @45 [phi:@begin->@45] +b45_from_bbegin: + jmp b45 +//SEG4 @45 +b45: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @43 to main [phi:@43->main] -main_from_b43: +//SEG6 [4] phi from @45 to main [phi:@45->main] +main_from_b45: jsr main -//SEG7 [3] phi from @43 to @end [phi:@43->@end] -bend_from_b43: +//SEG7 [3] phi from @45 to @end [phi:@45->@end] +bend_from_b45: jmp bend //SEG8 @end bend: @@ -7962,7 +8059,6 @@ main: { } //SEG28 anim anim: { - .label _2 = 5 .label xidx = 4 .label x = 8 .label x_msb = 5 @@ -8008,12 +8104,13 @@ anim: { lda #>$1e adc #0 sta x+1 - //SEG46 [17] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ) -- vbuz1=vbuz1_rol_1 - asl _2 - //SEG47 [18] (byte~) anim::$3 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ) -- vbuaa=_hi_vwuz1 - lda x+1 - //SEG48 [19] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ) -- vbuz1=vbuz1_bor_vbuaa - ora x_msb + //SEG46 [17] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ) -- vbuaa=vbuz1_rol_1 + lda x_msb + asl + //SEG47 [18] (byte~) anim::$3 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ) + // [18] anim::$3 ← > anim::x#0 // ALU + //SEG48 [19] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ) -- vbuz1=vbuaa_bor__hi_vwuz2 + ora x+1 sta x_msb //SEG49 [20] (byte~) anim::$5 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ) -- vbuaa=_lo_vwuz1 lda x @@ -9208,7 +9305,7 @@ place_sprites: { sintab_y: .fill $c5, 0 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b43 +Removing instruction jmp b45 Removing instruction jmp bend Removing instruction jmp b2 Removing instruction jmp b3 @@ -9295,7 +9392,6 @@ Removing instruction jmp b1 Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #0 -Removing instruction lda x+1 Removing instruction ldx j2 Removing instruction lda xidx Replacing instruction ldx #0 with TAX @@ -9328,9 +9424,9 @@ Replacing label b2_from_b8 with b2 Replacing label b1_from_b9 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b43_from_bbegin: -Removing instruction main_from_b43: -Removing instruction bend_from_b43: +Removing instruction b45_from_bbegin: +Removing instruction main_from_b45: +Removing instruction bend_from_b45: Removing instruction b2_from_b6: Removing instruction b3_from_b2: Removing instruction b1_from_b3: @@ -9397,7 +9493,7 @@ Removing instruction b4_from_b5: Removing instruction b5_from_b4: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b43: +Removing instruction b45: Removing instruction bend: Removing instruction init_from_main: Removing instruction b2_from_main: @@ -9525,7 +9621,7 @@ Removing instruction jmp b2 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @43 +(label) @45 (label) @begin (label) @end (byte*) BORDERCOL @@ -9560,8 +9656,8 @@ FINAL SYMBOL TABLE (byte*) addMEMtoFAC::mem (byte*) addMEMtoFAC::mem#2 mem zp ZP_WORD:12 2.0 (void()) anim() -(byte~) anim::$2 $2 zp ZP_BYTE:5 101.0 -(byte~) anim::$3 reg byte a 202.0 +(byte~) anim::$2 reg byte a 101.0 +(byte~) anim::$3 reg byte alu 202.0 (byte~) anim::$5 reg byte a 202.0 (label) anim::@1 (label) anim::@14 @@ -9843,7 +9939,7 @@ FINAL SYMBOL TABLE zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 gen_sintab::min#2 gen_sintab::i#10 gen_sintab::i#1 gen_sprites::i#2 gen_sprites::i#1 place_sprites::spr_id#2 place_sprites::spr_id#1 ] zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 gen_sintab::length#10 gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 place_sprites::spr_x#2 place_sprites::spr_x#1 ] zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 progress_idx#34 progress_idx#12 progress_idx#10 gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 place_sprites::col#2 place_sprites::col#1 ] -zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 anim::$2 ] +zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 gen_chargen_sprite::c#3 ] reg byte y [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] zp ZP_BYTE:7 [ anim::j#2 anim::j#1 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] @@ -9856,7 +9952,8 @@ reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] reg byte y [ place_sprites::j#2 place_sprites::j#1 ] reg byte x [ place_sprites::j2#3 place_sprites::j2#2 ] -reg byte a [ anim::$3 ] +reg byte a [ anim::$2 ] +reg byte alu [ anim::$3 ] reg byte a [ anim::$5 ] reg byte a [ anim::j2#1 ] reg byte a [ gen_sintab::$24 ] @@ -9897,12 +9994,12 @@ FINAL ASSEMBLER .label sin_idx_x = 2 .label sin_idx_y = 3 //SEG2 @begin -//SEG3 [1] phi from @begin to @43 [phi:@begin->@43] -//SEG4 @43 +//SEG3 [1] phi from @begin to @45 [phi:@begin->@45] +//SEG4 @45 //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @43 to main [phi:@43->main] +//SEG6 [4] phi from @45 to main [phi:@45->main] jsr main -//SEG7 [3] phi from @43 to @end [phi:@43->@end] +//SEG7 [3] phi from @45 to @end [phi:@45->@end] //SEG8 @end //SEG9 main main: { @@ -9937,7 +10034,6 @@ main: { } //SEG28 anim anim: { - .label _2 = 5 .label xidx = 4 .label x = 8 .label x_msb = 5 @@ -9979,11 +10075,13 @@ anim: { lda #>$1e adc #0 sta x+1 - //SEG46 [17] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ) -- vbuz1=vbuz1_rol_1 - asl _2 - //SEG47 [18] (byte~) anim::$3 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ) -- vbuaa=_hi_vwuz1 - //SEG48 [19] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ) -- vbuz1=vbuz1_bor_vbuaa - ora x_msb + //SEG46 [17] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ) -- vbuaa=vbuz1_rol_1 + lda x_msb + asl + //SEG47 [18] (byte~) anim::$3 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ) + // [18] anim::$3 ← > anim::x#0 // ALU + //SEG48 [19] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ) -- vbuz1=vbuaa_bor__hi_vwuz2 + ora x+1 sta x_msb //SEG49 [20] (byte~) anim::$5 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ) -- vbuaa=_lo_vwuz1 lda x diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym index 2a2959eb4..b32d37981 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym @@ -1,4 +1,4 @@ -(label) @43 +(label) @45 (label) @begin (label) @end (byte*) BORDERCOL @@ -33,8 +33,8 @@ (byte*) addMEMtoFAC::mem (byte*) addMEMtoFAC::mem#2 mem zp ZP_WORD:12 2.0 (void()) anim() -(byte~) anim::$2 $2 zp ZP_BYTE:5 101.0 -(byte~) anim::$3 reg byte a 202.0 +(byte~) anim::$2 reg byte a 101.0 +(byte~) anim::$3 reg byte alu 202.0 (byte~) anim::$5 reg byte a 202.0 (label) anim::@1 (label) anim::@14 @@ -316,7 +316,7 @@ zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 gen_sintab::min#2 gen_sintab::i#10 gen_sintab::i#1 gen_sprites::i#2 gen_sprites::i#1 place_sprites::spr_id#2 place_sprites::spr_id#1 ] zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 gen_sintab::length#10 gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 place_sprites::spr_x#2 place_sprites::spr_x#1 ] zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 progress_idx#34 progress_idx#12 progress_idx#10 gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 place_sprites::col#2 place_sprites::col#1 ] -zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 anim::$2 ] +zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 gen_chargen_sprite::c#3 ] reg byte y [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] zp ZP_BYTE:7 [ anim::j#2 anim::j#1 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] @@ -329,7 +329,8 @@ reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] reg byte y [ place_sprites::j#2 place_sprites::j#1 ] reg byte x [ place_sprites::j2#3 place_sprites::j2#2 ] -reg byte a [ anim::$3 ] +reg byte a [ anim::$2 ] +reg byte alu [ anim::$3 ] reg byte a [ anim::$5 ] reg byte a [ anim::j2#1 ] reg byte a [ gen_sintab::$24 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.asm b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.asm index 9189ea182..fd6e375e7 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.asm @@ -13,32 +13,30 @@ main: { jsr init_multiply_asm jsr multiply_tables_compare jsr multiply_results_compare + jsr signed_multiply_results_compare rts } -multiply_results_compare: { - .label ms = $a - .label ma = $c +signed_multiply_results_compare: { + .label ms = 8 + .label ma = 6 .label b = 3 .label a = 2 - lda #0 + lda #-$80 sta a b1: - lda #0 + lda #-$80 sta b b2: - ldx b - jsr slow_multiply - lda slow_multiply.return - sta ms - lda slow_multiply.return+1 - sta ms+1 - ldx a lda b - jsr multiply - lda multiply.return - sta ma - lda multiply.return+1 - sta ma+1 + tax + jsr slow_signed_multiply + lda slow_signed_multiply.return + sta ms + lda slow_signed_multiply.return+1 + sta ms+1 + lda b + tay + jsr signed_multiply lda ms cmp ma bne !+ @@ -48,49 +46,42 @@ multiply_results_compare: { !: lda #2 sta BGCOL - lda #str - sta print_str.str+1 - jsr print_str + lda a + tax + lda b + sta signed_multiply_error.b lda ms - sta print_word.w + sta signed_multiply_error.ms lda ms+1 - sta print_word.w+1 - jsr print_word - lda #str1 - sta print_str.str+1 - jsr print_str + sta signed_multiply_error.ms+1 lda ma - sta print_word.w + sta signed_multiply_error.ma lda ma+1 - sta print_word.w+1 - jsr print_word + sta signed_multiply_error.ma+1 + jsr signed_multiply_error breturn: rts b3: inc b lda b + cmp #-$80 bne b2 inc a lda a + cmp #-$80 bne b1 - lda #str2 - sta print_str.str+1 - jsr print_str - jsr print_ln lda line_cursor sta char_cursor lda line_cursor+1 sta char_cursor+1 + lda #str + sta print_str.str+1 + jsr print_str + jsr print_ln jmp breturn - str: .text "multiply mismatch slow:@" - str1: .text " / fast asm:" - str2: .text "multiply results match!@" + str: .text "signed multiply results match!@" } print_ln: { b1: @@ -133,6 +124,74 @@ print_str: { !: jmp b1 } +signed_multiply_error: { + .label b = 2 + .label ms = $a + .label ma = $c + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + lda #str + sta print_str.str+1 + jsr print_str + jsr print_sbyte + lda #str1 + sta print_str.str+1 + jsr print_str + lda b + tax + jsr print_sbyte + lda #str2 + sta print_str.str+1 + jsr print_str + lda ms + sta print_sword.w + lda ms+1 + sta print_sword.w+1 + jsr print_sword + lda #str3 + sta print_str.str+1 + jsr print_str + lda ma + sta print_sword.w + lda ma+1 + sta print_sword.w+1 + jsr print_sword + jsr print_ln + rts + str: .text "signed multiply mismatch @" + str1: .text "*@" + str2: .text " slow:@" + str3: .text " / fast asm:@" +} +print_sword: { + .label w = 6 + lda w+1 + bpl b1 + lda #'-' + jsr print_char + sec + lda w + eor #$ff + adc #0 + sta w + lda w+1 + eor #$ff + adc #0 + sta w+1 + b1: + jsr print_word + rts +} print_word: { .label w = 6 lda w+1 @@ -158,7 +217,7 @@ print_byte: { lda hextab,x jsr print_char rts - hextab: .byte '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' + hextab: .text "0123456789abcdef" } print_char: { ldy #0 @@ -169,6 +228,53 @@ print_char: { !: rts } +print_sbyte: { + cpx #0 + bpl b1 + lda #'-' + jsr print_char + txa + eor #$ff + clc + adc #1 + tax + b1: + jsr print_byte + rts +} +signed_multiply: { + .label _6 = $e + .label _12 = $e + .label m = 6 + .label return = 6 + .label a = 2 + lda a + tax + tya + jsr multiply + lda a + cmp #0 + bpl b1 + lda m+1 + sta _6 + tya + eor #$ff + sec + adc _6 + sta m+1 + b1: + cpy #0 + bpl b2 + lda m+1 + sta _12 + lda a + eor #$ff + sec + adc _12 + sta m+1 + b2: + rts +} multiply: { .const memA = $fe .const memB = $ff @@ -199,12 +305,174 @@ multiply: { sta return+1 rts } +slow_signed_multiply: { + .label m = 6 + .label return = 6 + .label a = 2 + lda a + cmp #0 + bpl b1 + lda #0 + tay + sta m + sta m+1 + b2: + txa + sta $fe + ora #$7f + bmi !+ + lda #0 + !: + sta $ff + sec + lda m + sbc $fe + sta m + lda m+1 + sbc $ff + sta m+1 + dey + cpy a + bne b2 + jmp b3 + b6: + lda #0 + sta return + sta return+1 + b3: + rts + b1: + lda a + cmp #1 + bmi b6 + lda #0 + tay + sta m + sta m+1 + b5: + txa + sta $fe + ora #$7f + bmi !+ + lda #0 + !: + sta $ff + clc + lda m + adc $fe + sta m + lda m+1 + adc $ff + sta m+1 + iny + cpy a + bne b5 + jmp b3 +} +multiply_results_compare: { + .label ms = $a + .label ma = 6 + .label b = 3 + .label a = 2 + lda #0 + sta a + b1: + lda #0 + sta b + b2: + ldx b + jsr slow_multiply + lda slow_multiply.return + sta ms + lda slow_multiply.return+1 + sta ms+1 + ldx a + lda b + jsr multiply + lda ms + cmp ma + bne !+ + lda ms+1 + cmp ma+1 + beq b3 + !: + lda #2 + sta BGCOL + ldx a + lda b + sta multiply_error.b + lda ma + sta multiply_error.ma + lda ma+1 + sta multiply_error.ma+1 + jsr multiply_error + breturn: + rts + b3: + inc b + lda b + bne b2 + inc a + lda a + bne b1 + lda #str + sta print_str.str+1 + jsr print_str + jsr print_ln + jmp breturn + str: .text "multiply results match!@" +} +multiply_error: { + .label b = 2 + .label ms = $a + .label ma = $c + lda #str + sta print_str.str+1 + jsr print_str + jsr print_byte + lda #str1 + sta print_str.str+1 + jsr print_str + ldx b + jsr print_byte + lda #str2 + sta print_str.str+1 + jsr print_str + lda ms + sta print_word.w + lda ms+1 + sta print_word.w+1 + jsr print_word + lda #str3 + sta print_str.str+1 + jsr print_str + lda ma + sta print_word.w + lda ma+1 + sta print_word.w+1 + jsr print_word + jsr print_ln + rts + str: .text "multiply mismatch @" + str1: .text "*@" + str2: .text " slow:@" + str3: .text " / fast asm:@" +} slow_multiply: { .label return = 6 .label m = 6 .label a = 2 lda a - cmp #0 beq b3 ldy #0 tya @@ -215,9 +483,9 @@ slow_multiply: { clc adc m sta m - bcc !+ - inc m+1 - !: + lda #0 + adc m+1 + sta m+1 iny cpy a bne b2 @@ -414,9 +682,9 @@ init_multiply: { clc adc sqr sta sqr - bcc !+ - inc sqr+1 - !: + lda #0 + adc sqr+1 + sta sqr+1 inc sqr1_lo bne !+ inc sqr1_lo+1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.cfg b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.cfg index 89aaf182b..bcb4d5b63 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@13 -@13: scope:[] from @begin + to:@20 +@20: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @13 +@end: scope:[] from @20 [3] phi() [ ] ( ) -main: scope:[main] from @13 +main: scope:[main] from @20 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2 [ ] ) [5] call print_cls param-assignment [ ] ( main:2 [ ] ) to:main::@1 @@ -21,283 +21,508 @@ main::@2: scope:[main] from main::@1 to:main::@3 main::@3: scope:[main] from main::@2 [10] phi() [ ] ( main:2 [ ] ) - [11] call multiply_tables_compare param-assignment [ line_cursor#17 char_cursor#20 ] ( main:2 [ line_cursor#17 char_cursor#20 ] ) + [11] call multiply_tables_compare param-assignment [ line_cursor#27 char_cursor#27 ] ( main:2 [ line_cursor#27 char_cursor#27 ] ) to:main::@4 main::@4: scope:[main] from main::@3 - [12] phi() [ line_cursor#17 char_cursor#20 ] ( main:2 [ line_cursor#17 char_cursor#20 ] ) - [13] call multiply_results_compare param-assignment [ ] ( main:2 [ ] ) + [12] phi() [ line_cursor#27 char_cursor#27 ] ( main:2 [ line_cursor#27 char_cursor#27 ] ) + [13] call multiply_results_compare param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + to:main::@5 +main::@5: scope:[main] from main::@4 + [14] phi() [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + [15] call signed_multiply_results_compare param-assignment [ ] ( main:2 [ ] ) to:main::@return -main::@return: scope:[main] from main::@4 - [14] return [ ] ( main:2 [ ] ) +main::@return: scope:[main] from main::@5 + [16] return [ ] ( main:2 [ ] ) to:@return -multiply_results_compare: scope:[multiply_results_compare] from main::@4 - [15] phi() [ line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ line_cursor#17 char_cursor#20 ] ) - to:multiply_results_compare::@1 -multiply_results_compare::@1: scope:[multiply_results_compare] from multiply_results_compare multiply_results_compare::@6 - [16] (byte) multiply_results_compare::a#5 ← phi( multiply_results_compare/(byte/signed byte/word/signed word) 0 multiply_results_compare::@6/(byte) multiply_results_compare::a#1 ) [ multiply_results_compare::a#5 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 line_cursor#17 char_cursor#20 ] ) - to:multiply_results_compare::@2 -multiply_results_compare::@2: scope:[multiply_results_compare] from multiply_results_compare::@1 multiply_results_compare::@3 - [17] (byte) multiply_results_compare::b#2 ← phi( multiply_results_compare::@1/(byte/signed byte/word/signed word) 0 multiply_results_compare::@3/(byte) multiply_results_compare::b#1 ) [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 ] ) - [18] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#5 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ) - [19] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ) - [20] call slow_multiply param-assignment [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ) - [21] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ) - to:multiply_results_compare::@8 -multiply_results_compare::@8: scope:[multiply_results_compare] from multiply_results_compare::@2 - [22] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) - [23] (byte) multiply::a#0 ← (byte) multiply_results_compare::a#5 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 line_cursor#17 char_cursor#20 ] ) - [24] (byte) multiply::b#0 ← (byte) multiply_results_compare::b#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 multiply::b#0 line_cursor#17 char_cursor#20 ] ) - [25] call multiply param-assignment [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 line_cursor#17 char_cursor#20 ] ) - [26] (word) multiply::return#2 ← (word) multiply::return#0 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#2 line_cursor#17 char_cursor#20 ] ) - to:multiply_results_compare::@9 -multiply_results_compare::@9: scope:[multiply_results_compare] from multiply_results_compare::@8 - [27] (word) multiply_results_compare::ma#0 ← (word) multiply::return#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) - [28] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) - to:multiply_results_compare::@4 -multiply_results_compare::@4: scope:[multiply_results_compare] from multiply_results_compare::@9 - [29] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) - [30] call print_str param-assignment [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) - to:multiply_results_compare::@10 -multiply_results_compare::@10: scope:[multiply_results_compare] from multiply_results_compare::@4 - [31] (word) print_word::w#2 ← (word) multiply_results_compare::ms#0 [ multiply_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ) - [32] call print_word param-assignment [ multiply_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ) - to:multiply_results_compare::@11 -multiply_results_compare::@11: scope:[multiply_results_compare] from multiply_results_compare::@10 - [33] phi() [ multiply_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ) - [34] call print_str param-assignment [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) - to:multiply_results_compare::@12 -multiply_results_compare::@12: scope:[multiply_results_compare] from multiply_results_compare::@11 - [35] (word) print_word::w#3 ← (word) multiply_results_compare::ma#0 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ) - [36] call print_word param-assignment [ char_cursor#11 line_cursor#17 ] ( main:2::multiply_results_compare:13 [ char_cursor#11 line_cursor#17 ] ) - to:multiply_results_compare::@return -multiply_results_compare::@return: scope:[multiply_results_compare] from multiply_results_compare::@12 multiply_results_compare::@14 - [37] (byte*) line_cursor#19 ← phi( multiply_results_compare::@12/(byte*) line_cursor#17 multiply_results_compare::@14/(byte*) line_cursor#1 ) [ ] ( main:2::multiply_results_compare:13 [ ] ) - [37] (byte*) char_cursor#27 ← phi( multiply_results_compare::@12/(byte*) char_cursor#11 multiply_results_compare::@14/(byte*~) char_cursor#89 ) [ ] ( main:2::multiply_results_compare:13 [ ] ) - [38] return [ ] ( main:2::multiply_results_compare:13 [ ] ) +signed_multiply_results_compare: scope:[signed_multiply_results_compare] from main::@5 + [17] phi() [ line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ line_cursor#1 ] ) + to:signed_multiply_results_compare::@1 +signed_multiply_results_compare::@1: scope:[signed_multiply_results_compare] from signed_multiply_results_compare signed_multiply_results_compare::@6 + [18] (signed byte) signed_multiply_results_compare::a#6 ← phi( signed_multiply_results_compare/-(byte/word/signed word) 128 signed_multiply_results_compare::@6/(signed byte) signed_multiply_results_compare::a#1 ) [ signed_multiply_results_compare::a#6 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 line_cursor#1 ] ) + to:signed_multiply_results_compare::@2 +signed_multiply_results_compare::@2: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@1 signed_multiply_results_compare::@3 + [19] (signed byte) signed_multiply_results_compare::b#2 ← phi( signed_multiply_results_compare::@1/-(byte/word/signed word) 128 signed_multiply_results_compare::@3/(signed byte) signed_multiply_results_compare::b#1 ) [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 ] ) + [20] (signed byte) slow_signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 line_cursor#1 ] ) + [21] (signed byte) slow_signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 slow_signed_multiply::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 slow_signed_multiply::b#0 line_cursor#1 ] ) + [22] call slow_signed_multiply param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#0 line_cursor#1 ] ) + [23] (signed word) slow_signed_multiply::return#2 ← (signed word) slow_signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ) + to:signed_multiply_results_compare::@8 +signed_multiply_results_compare::@8: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@2 + [24] (signed word) signed_multiply_results_compare::ms#0 ← (signed word) slow_signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] ) + [25] (signed byte) signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 line_cursor#1 ] ) + [26] (signed byte) signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 signed_multiply::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 signed_multiply::b#0 line_cursor#1 ] ) + [27] call signed_multiply param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#0 line_cursor#1 ] ) + [28] (signed word) signed_multiply::return#2 ← (signed word) signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#2 line_cursor#1 ] ) + to:signed_multiply_results_compare::@9 +signed_multiply_results_compare::@9: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@8 + [29] (signed word) signed_multiply_results_compare::ma#0 ← (signed word) signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) + [30] if((signed word) signed_multiply_results_compare::ms#0==(signed word) signed_multiply_results_compare::ma#0) goto signed_multiply_results_compare::@3 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) + to:signed_multiply_results_compare::@4 +signed_multiply_results_compare::@4: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@9 + [31] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) + [32] (signed byte) signed_multiply_error::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ) + [33] (signed byte) signed_multiply_error::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ) + [34] (signed word) signed_multiply_error::ms#0 ← (signed word) signed_multiply_results_compare::ms#0 [ signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 line_cursor#1 ] ) + [35] (signed word) signed_multiply_error::ma#0 ← (signed word) signed_multiply_results_compare::ma#0 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 ] ) + [36] call signed_multiply_error param-assignment [ ] ( main:2::signed_multiply_results_compare:15 [ ] ) + to:signed_multiply_results_compare::@return +signed_multiply_results_compare::@return: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@11 signed_multiply_results_compare::@4 + [37] return [ ] ( main:2::signed_multiply_results_compare:15 [ ] ) to:@return -multiply_results_compare::@3: scope:[multiply_results_compare] from multiply_results_compare::@9 - [39] (byte) multiply_results_compare::b#1 ← ++ (byte) multiply_results_compare::b#2 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) - [40] if((byte) multiply_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@2 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) - to:multiply_results_compare::@6 -multiply_results_compare::@6: scope:[multiply_results_compare] from multiply_results_compare::@3 - [41] (byte) multiply_results_compare::a#1 ← ++ (byte) multiply_results_compare::a#5 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) - [42] if((byte) multiply_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@1 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) - to:multiply_results_compare::@7 -multiply_results_compare::@7: scope:[multiply_results_compare] from multiply_results_compare::@6 - [43] phi() [ line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ line_cursor#17 char_cursor#20 ] ) - [44] call print_str param-assignment [ line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#17 char_cursor#2 ] ) - to:multiply_results_compare::@14 -multiply_results_compare::@14: scope:[multiply_results_compare] from multiply_results_compare::@7 - [45] phi() [ line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#17 char_cursor#2 ] ) - [46] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) - [47] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ char_cursor#89 line_cursor#1 ] ( main:2::multiply_results_compare:13 [ char_cursor#89 line_cursor#1 ] ) - to:multiply_results_compare::@return -print_ln: scope:[print_ln] from multiply_results_compare::@14 multiply_tables_compare::@10 - [48] (byte*) line_cursor#22 ← phi( multiply_results_compare::@14/(byte*) line_cursor#17 multiply_tables_compare::@10/((byte*))(word/signed word) 1024 ) [ line_cursor#22 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#22 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#22 char_cursor#2 ] ) +signed_multiply_results_compare::@3: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@9 + [38] (signed byte) signed_multiply_results_compare::b#1 ← ++ (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ) + [39] if((signed byte) signed_multiply_results_compare::b#1!=-(byte/word/signed word) 128) goto signed_multiply_results_compare::@2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ) + to:signed_multiply_results_compare::@6 +signed_multiply_results_compare::@6: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@3 + [40] (signed byte) signed_multiply_results_compare::a#1 ← ++ (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ) + [41] if((signed byte) signed_multiply_results_compare::a#1!=-(byte/word/signed word) 128) goto signed_multiply_results_compare::@1 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ) + to:signed_multiply_results_compare::@7 +signed_multiply_results_compare::@7: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@6 + [42] (byte*~) char_cursor#176 ← (byte*) line_cursor#1 [ char_cursor#176 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ char_cursor#176 line_cursor#1 ] ) + [43] call print_str param-assignment [ line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15 [ line_cursor#1 char_cursor#117 ] ) + to:signed_multiply_results_compare::@11 +signed_multiply_results_compare::@11: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@7 + [44] phi() [ line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15 [ line_cursor#1 char_cursor#117 ] ) + [45] call print_ln param-assignment [ ] ( main:2::signed_multiply_results_compare:15 [ ] ) + to:signed_multiply_results_compare::@return +print_ln: scope:[print_ln] from multiply_error::@8 multiply_results_compare::@11 multiply_tables_compare::@10 signed_multiply_error::@8 signed_multiply_results_compare::@11 + [46] (byte*) char_cursor#118 ← phi( multiply_error::@8/(byte*) char_cursor#17 multiply_results_compare::@11/(byte*) char_cursor#117 multiply_tables_compare::@10/(byte*) char_cursor#117 signed_multiply_error::@8/(byte*) char_cursor#17 signed_multiply_results_compare::@11/(byte*) char_cursor#117 ) [ line_cursor#40 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#40 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#40 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#40 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#40 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#40 char_cursor#118 ] ) + [46] (byte*) line_cursor#40 ← phi( multiply_error::@8/(byte*) line_cursor#27 multiply_results_compare::@11/(byte*) line_cursor#27 multiply_tables_compare::@10/((byte*))(word/signed word) 1024 signed_multiply_error::@8/(byte*) line_cursor#1 signed_multiply_results_compare::@11/(byte*) line_cursor#1 ) [ line_cursor#40 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#40 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#40 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#40 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#40 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#40 char_cursor#118 ] ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - [49] (byte*) line_cursor#11 ← phi( print_ln/(byte*) line_cursor#22 print_ln::@1/(byte*) line_cursor#1 ) [ line_cursor#11 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#11 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#11 char_cursor#2 ] ) - [50] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) - [51] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) + [47] (byte*) line_cursor#20 ← phi( print_ln/(byte*) line_cursor#40 print_ln::@1/(byte*) line_cursor#1 ) [ char_cursor#118 line_cursor#20 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ char_cursor#118 line_cursor#20 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ char_cursor#118 line_cursor#20 ] main:2::multiply_results_compare:13::print_ln:178 [ char_cursor#118 line_cursor#20 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ char_cursor#118 line_cursor#20 ] main:2::multiply_tables_compare:11::print_ln:224 [ char_cursor#118 line_cursor#20 ] ) + [48] (byte*) line_cursor#1 ← (byte*) line_cursor#20 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 char_cursor#118 ] ) + [49] if((byte*) line_cursor#1<(byte*) char_cursor#118) goto print_ln::@1 [ line_cursor#1 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 char_cursor#118 ] ) to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 - [52] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 ] ) + [50] return [ line_cursor#1 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 ] ) to:@return -print_str: scope:[print_str] from multiply_results_compare::@11 multiply_results_compare::@4 multiply_results_compare::@7 multiply_tables_compare::@3 multiply_tables_compare::@5 multiply_tables_compare::@7 - [53] (byte*) char_cursor#71 ← phi( multiply_results_compare::@11/(byte*) char_cursor#11 multiply_results_compare::@4/(byte*) char_cursor#20 multiply_results_compare::@7/(byte*) char_cursor#20 multiply_tables_compare::@3/((byte*))(word/signed word) 1024 multiply_tables_compare::@5/((byte*))(word/signed word) 1024 multiply_tables_compare::@7/(byte*) char_cursor#11 ) [ print_str::str#9 char_cursor#71 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#9 char_cursor#71 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 print_str::str#9 char_cursor#71 ] main:2::multiply_tables_compare:11::print_str:107 [ print_str::str#9 char_cursor#71 ] ) - [53] (byte*) print_str::str#9 ← phi( multiply_results_compare::@11/(const string) multiply_results_compare::str1 multiply_results_compare::@4/(const string) multiply_results_compare::str multiply_results_compare::@7/(const string) multiply_results_compare::str2 multiply_tables_compare::@3/(const string) multiply_tables_compare::str multiply_tables_compare::@5/(const string) multiply_tables_compare::str2 multiply_tables_compare::@7/(const string) multiply_tables_compare::str1 ) [ print_str::str#9 char_cursor#71 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#9 char_cursor#71 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 print_str::str#9 char_cursor#71 ] main:2::multiply_tables_compare:11::print_str:107 [ print_str::str#9 char_cursor#71 ] ) +print_str: scope:[print_str] from multiply_error multiply_error::@2 multiply_error::@4 multiply_error::@6 multiply_results_compare::@7 multiply_tables_compare::@3 multiply_tables_compare::@5 multiply_tables_compare::@7 signed_multiply_error signed_multiply_error::@2 signed_multiply_error::@4 signed_multiply_error::@6 signed_multiply_results_compare::@7 + [51] (byte*) char_cursor#135 ← phi( multiply_error/(byte*) char_cursor#27 multiply_error::@2/(byte*) char_cursor#17 multiply_error::@4/(byte*) char_cursor#17 multiply_error::@6/(byte*) char_cursor#17 multiply_results_compare::@7/(byte*) char_cursor#27 multiply_tables_compare::@3/((byte*))(word/signed word) 1024 multiply_tables_compare::@5/((byte*))(word/signed word) 1024 multiply_tables_compare::@7/(byte*) char_cursor#17 signed_multiply_error/(byte*~) char_cursor#172 signed_multiply_error::@2/(byte*) char_cursor#17 signed_multiply_error::@4/(byte*) char_cursor#17 signed_multiply_error::@6/(byte*) char_cursor#17 signed_multiply_results_compare::@7/(byte*~) char_cursor#176 ) [ print_str::str#16 char_cursor#135 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 print_str::str#16 char_cursor#135 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#16 char_cursor#135 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 print_str::str#16 char_cursor#135 ] main:2::multiply_tables_compare:11::print_str:222 [ print_str::str#16 char_cursor#135 ] ) + [51] (byte*) print_str::str#16 ← phi( multiply_error/(const string) multiply_error::str multiply_error::@2/(const string) multiply_error::str1 multiply_error::@4/(const string) multiply_error::str2 multiply_error::@6/(const string) multiply_error::str3 multiply_results_compare::@7/(const string) multiply_results_compare::str multiply_tables_compare::@3/(const string) multiply_tables_compare::str multiply_tables_compare::@5/(const string) multiply_tables_compare::str2 multiply_tables_compare::@7/(const string) multiply_tables_compare::str1 signed_multiply_error/(const string) signed_multiply_error::str signed_multiply_error::@2/(const string) signed_multiply_error::str1 signed_multiply_error::@4/(const string) signed_multiply_error::str2 signed_multiply_error::@6/(const string) signed_multiply_error::str3 signed_multiply_results_compare::@7/(const string) signed_multiply_results_compare::str ) [ print_str::str#16 char_cursor#135 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 print_str::str#16 char_cursor#135 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#16 char_cursor#135 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 print_str::str#16 char_cursor#135 ] main:2::multiply_tables_compare:11::print_str:222 [ print_str::str#16 char_cursor#135 ] ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [54] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#71 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) - [54] (byte*) print_str::str#7 ← phi( print_str/(byte*) print_str::str#9 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) - [55] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) + [52] (byte*) char_cursor#117 ← phi( print_str/(byte*) char_cursor#135 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) + [52] (byte*) print_str::str#14 ← phi( print_str/(byte*) print_str::str#16 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) + [53] if(*((byte*) print_str::str#14)!=(byte) '@') goto print_str::@2 [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [56] return [ char_cursor#2 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 ] ) + [54] return [ char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 ] ) to:@return print_str::@2: scope:[print_str] from print_str::@1 - [57] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) - [58] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#7 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 print_str::str#7 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:107 [ print_str::str#7 char_cursor#1 ] ) - [59] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:107 [ print_str::str#0 char_cursor#1 ] ) + [55] *((byte*) char_cursor#117) ← *((byte*) print_str::str#14) [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) + [56] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#117 [ print_str::str#14 char_cursor#1 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#14 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 print_str::str#14 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:222 [ print_str::str#14 char_cursor#1 ] ) + [57] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#14 [ print_str::str#0 char_cursor#1 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:222 [ print_str::str#0 char_cursor#1 ] ) to:print_str::@1 -print_word: scope:[print_word] from multiply_results_compare::@10 multiply_results_compare::@12 multiply_tables_compare::@6 multiply_tables_compare::@8 - [60] (word) print_word::w#4 ← phi( multiply_results_compare::@10/(word) print_word::w#2 multiply_results_compare::@12/(word) print_word::w#3 multiply_tables_compare::@6/(word) print_word::w#0 multiply_tables_compare::@8/(word) print_word::w#1 ) [ char_cursor#2 print_word::w#4 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 ] ) - [61] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ) - [62] call print_byte param-assignment [ char_cursor#11 print_word::w#4 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_word::w#4 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 print_word::w#4 ] ) +signed_multiply_error: scope:[signed_multiply_error] from signed_multiply_results_compare::@4 + [58] (byte*~) char_cursor#172 ← (byte*) line_cursor#1 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#172 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#172 ] ) + [59] call print_str param-assignment [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + to:signed_multiply_error::@1 +signed_multiply_error::@1: scope:[signed_multiply_error] from signed_multiply_error + [60] (signed byte) print_sbyte::b#1 ← (signed byte) signed_multiply_error::a#0 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#1 ] ) + [61] call print_sbyte param-assignment [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + to:signed_multiply_error::@2 +signed_multiply_error::@2: scope:[signed_multiply_error] from signed_multiply_error::@1 + [62] phi() [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + [63] call print_str param-assignment [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + to:signed_multiply_error::@3 +signed_multiply_error::@3: scope:[signed_multiply_error] from signed_multiply_error::@2 + [64] (signed byte) print_sbyte::b#2 ← (signed byte) signed_multiply_error::b#0 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#2 ] ) + [65] call print_sbyte param-assignment [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + to:signed_multiply_error::@4 +signed_multiply_error::@4: scope:[signed_multiply_error] from signed_multiply_error::@3 + [66] phi() [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + [67] call print_str param-assignment [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + to:signed_multiply_error::@5 +signed_multiply_error::@5: scope:[signed_multiply_error] from signed_multiply_error::@4 + [68] (signed word) print_sword::w#1 ← (signed word) signed_multiply_error::ms#0 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#1 ] ) + [69] call print_sword param-assignment [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + to:signed_multiply_error::@6 +signed_multiply_error::@6: scope:[signed_multiply_error] from signed_multiply_error::@5 + [70] phi() [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + [71] call print_str param-assignment [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + to:signed_multiply_error::@7 +signed_multiply_error::@7: scope:[signed_multiply_error] from signed_multiply_error::@6 + [72] (signed word) print_sword::w#2 ← (signed word) signed_multiply_error::ma#0 [ line_cursor#1 char_cursor#117 print_sword::w#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ line_cursor#1 char_cursor#117 print_sword::w#2 ] ) + [73] call print_sword param-assignment [ line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ line_cursor#1 char_cursor#17 ] ) + to:signed_multiply_error::@8 +signed_multiply_error::@8: scope:[signed_multiply_error] from signed_multiply_error::@7 + [74] phi() [ line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ line_cursor#1 char_cursor#17 ] ) + [75] call print_ln param-assignment [ ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ ] ) + to:signed_multiply_error::@return +signed_multiply_error::@return: scope:[signed_multiply_error] from signed_multiply_error::@8 + [76] return [ ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ ] ) + to:@return +print_sword: scope:[print_sword] from signed_multiply_error::@5 signed_multiply_error::@7 + [77] (signed word) print_sword::w#3 ← phi( signed_multiply_error::@5/(signed word) print_sword::w#1 signed_multiply_error::@7/(signed word) print_sword::w#2 ) [ char_cursor#117 print_sword::w#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#117 print_sword::w#3 ] ) + [78] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word) 0) goto print_sword::@1 [ char_cursor#117 print_sword::w#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#117 print_sword::w#3 ] ) + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword + [79] phi() [ char_cursor#117 print_sword::w#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#117 print_sword::w#3 ] ) + [80] call print_char param-assignment [ char_cursor#17 print_sword::w#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sword::w#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 print_sword::w#3 ] ) + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@2 + [81] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ char_cursor#17 print_sword::w#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sword::w#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 print_sword::w#0 ] ) + to:print_sword::@1 +print_sword::@1: scope:[print_sword] from print_sword print_sword::@4 + [82] (byte*) char_cursor#119 ← phi( print_sword/(byte*) char_cursor#117 print_sword::@4/(byte*) char_cursor#17 ) [ print_sword::w#4 char_cursor#119 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#4 char_cursor#119 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 print_sword::w#4 char_cursor#119 ] ) + [82] (signed word) print_sword::w#4 ← phi( print_sword/(signed word) print_sword::w#3 print_sword::@4/(signed word) print_sword::w#0 ) [ print_sword::w#4 char_cursor#119 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#4 char_cursor#119 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 print_sword::w#4 char_cursor#119 ] ) + [83] (word) print_word::w#0 ← ((word)) (signed word) print_sword::w#4 [ char_cursor#119 print_word::w#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#119 print_word::w#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#119 print_word::w#0 ] ) + [84] call print_word param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 ] ) + to:print_sword::@return +print_sword::@return: scope:[print_sword] from print_sword::@1 + [85] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 ] ) + to:@return +print_word: scope:[print_word] from multiply_error::@5 multiply_error::@7 multiply_tables_compare::@6 multiply_tables_compare::@8 print_sword::@1 + [86] (byte*) char_cursor#123 ← phi( multiply_error::@5/(byte*) char_cursor#117 multiply_error::@7/(byte*) char_cursor#117 multiply_tables_compare::@6/(byte*) char_cursor#117 multiply_tables_compare::@8/(byte*) char_cursor#117 print_sword::@1/(byte*) char_cursor#119 ) [ print_word::w#5 char_cursor#123 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:215 [ print_word::w#5 char_cursor#123 ] ) + [86] (word) print_word::w#5 ← phi( multiply_error::@5/(word) print_word::w#3 multiply_error::@7/(word) print_word::w#4 multiply_tables_compare::@6/(word) print_word::w#1 multiply_tables_compare::@8/(word) print_word::w#2 print_sword::@1/(word) print_word::w#0 ) [ print_word::w#5 char_cursor#123 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:215 [ print_word::w#5 char_cursor#123 ] ) + [87] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:215 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] ) + [88] call print_byte param-assignment [ char_cursor#17 print_word::w#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_word::w#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 print_word::w#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_word::w#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 print_word::w#5 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_word::w#5 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 print_word::w#5 ] ) to:print_word::@1 print_word::@1: scope:[print_word] from print_word - [63] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 print_byte::b#1 ] ) - [64] call print_byte param-assignment [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 ] ) + [89] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ char_cursor#17 print_byte::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 print_byte::b#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::b#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 print_byte::b#2 ] ) + [90] call print_byte param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 ] ) to:print_word::@return print_word::@return: scope:[print_word] from print_word::@1 - [65] return [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 ] ) + [91] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 ] ) to:@return -print_byte: scope:[print_byte] from print_word print_word::@1 - [66] (byte*) char_cursor#64 ← phi( print_word/(byte*) char_cursor#2 print_word::@1/(byte*) char_cursor#11 ) [ print_byte::b#2 char_cursor#64 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 ] ) - [66] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 char_cursor#64 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 ] ) - [67] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ) - [68] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ) - [69] call print_char param-assignment [ char_cursor#11 print_byte::b#2 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::b#2 ] ) +print_byte: scope:[print_byte] from multiply_error::@1 multiply_error::@3 print_sbyte::@1 print_word print_word::@1 + [92] (byte*) char_cursor#124 ← phi( multiply_error::@1/(byte*) char_cursor#117 multiply_error::@3/(byte*) char_cursor#117 print_sbyte::@1/(byte*) char_cursor#121 print_word/(byte*) char_cursor#123 print_word::@1/(byte*) char_cursor#17 ) [ print_byte::b#5 char_cursor#124 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 ] ) + [92] (byte) print_byte::b#5 ← phi( multiply_error::@1/(byte) print_byte::b#3 multiply_error::@3/(byte) print_byte::b#4 print_sbyte::@1/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 ) [ print_byte::b#5 char_cursor#124 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 ] ) + [93] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] ) + [94] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] ) + [95] call print_char param-assignment [ char_cursor#17 print_byte::b#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [70] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::$2 ] ) - [71] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_char::ch#1 ] ) - [72] call print_char param-assignment [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + [96] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word) 15 [ char_cursor#17 print_byte::$2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] ) + [97] (byte) print_char::ch#3 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#17 print_char::ch#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] ) + [98] call print_char param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 - [73] return [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + [99] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] ) to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 - [74] (byte*) char_cursor#41 ← phi( print_byte/(byte*) char_cursor#64 print_byte::@1/(byte*) char_cursor#11 ) [ print_char::ch#2 char_cursor#41 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ print_char::ch#2 char_cursor#41 ] ) - [74] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#41 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ print_char::ch#2 char_cursor#41 ] ) - [75] *((byte*) char_cursor#41) ← (byte) print_char::ch#2 [ char_cursor#41 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#41 ] ) - [76] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#41 [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@2 print_sword::@2 + [100] (byte*) char_cursor#75 ← phi( print_byte/(byte*) char_cursor#124 print_byte::@1/(byte*) char_cursor#17 print_sbyte::@2/(byte*) char_cursor#117 print_sword::@2/(byte*) char_cursor#117 ) [ print_char::ch#4 char_cursor#75 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 print_char::ch#4 char_cursor#75 ] ) + [100] (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sbyte::@2/(byte) '-' print_sword::@2/(byte) '-' ) [ print_char::ch#4 char_cursor#75 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 print_char::ch#4 char_cursor#75 ] ) + [101] *((byte*) char_cursor#75) ← (byte) print_char::ch#4 [ char_cursor#75 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#75 ] ) + [102] (byte*) char_cursor#17 ← ++ (byte*) char_cursor#75 [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] ) to:print_char::@return print_char::@return: scope:[print_char] from print_char - [77] return [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) + [103] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] ) to:@return -multiply: scope:[multiply] from multiply_results_compare::@8 - [78] *((const byte*) multiply::memA#0) ← (byte) multiply::a#0 [ multiply::b#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::b#0 ] ) - [79] *((const byte*) multiply::memB#0) ← (byte) multiply::b#0 [ ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) +print_sbyte: scope:[print_sbyte] from signed_multiply_error::@1 signed_multiply_error::@3 + [104] (signed byte) print_sbyte::b#3 ← phi( signed_multiply_error::@1/(signed byte) print_sbyte::b#1 signed_multiply_error::@3/(signed byte) print_sbyte::b#2 ) [ char_cursor#117 print_sbyte::b#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] ) + [105] if((signed byte) print_sbyte::b#3>=(byte/signed byte/word/signed word) 0) goto print_sbyte::@1 [ char_cursor#117 print_sbyte::b#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] ) + to:print_sbyte::@2 +print_sbyte::@2: scope:[print_sbyte] from print_sbyte + [106] phi() [ char_cursor#117 print_sbyte::b#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] ) + [107] call print_char param-assignment [ char_cursor#17 print_sbyte::b#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#3 ] ) + to:print_sbyte::@4 +print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@2 + [108] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ char_cursor#17 print_sbyte::b#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#0 ] ) + to:print_sbyte::@1 +print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@4 + [109] (byte*) char_cursor#121 ← phi( print_sbyte/(byte*) char_cursor#117 print_sbyte::@4/(byte*) char_cursor#17 ) [ char_cursor#121 print_sbyte::b#4 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#121 print_sbyte::b#4 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#121 print_sbyte::b#4 ] ) + [109] (signed byte) print_sbyte::b#4 ← phi( print_sbyte/(signed byte) print_sbyte::b#3 print_sbyte::@4/(signed byte) print_sbyte::b#0 ) [ char_cursor#121 print_sbyte::b#4 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#121 print_sbyte::b#4 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#121 print_sbyte::b#4 ] ) + [110] (byte) print_byte::b#0 ← ((byte)) (signed byte) print_sbyte::b#4 [ print_byte::b#0 char_cursor#121 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#0 char_cursor#121 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#0 char_cursor#121 ] ) + [111] call print_byte param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + to:print_sbyte::@return +print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 + [112] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + to:@return +signed_multiply: scope:[signed_multiply] from signed_multiply_results_compare::@8 + [113] (byte) multiply::a#0 ← ((byte)) (signed byte) signed_multiply::a#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 ] ) + [114] (byte) multiply::b#0 ← ((byte)) (signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 multiply::b#0 ] ) + [115] call multiply param-assignment [ signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] ) + [116] (word) multiply::return#2 ← (word) multiply::return#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::return#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#2 ] ) + to:signed_multiply::@6 +signed_multiply::@6: scope:[signed_multiply] from signed_multiply + [117] (word) signed_multiply::m#0 ← (word) multiply::return#2 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ) + [118] if((signed byte) signed_multiply::a#0>=(byte/signed byte/word/signed word) 0) goto signed_multiply::@1 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ) + to:signed_multiply::@3 +signed_multiply::@3: scope:[signed_multiply] from signed_multiply::@6 + [119] (byte~) signed_multiply::$6 ← > (word) signed_multiply::m#0 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 ] ) + [120] (byte~) signed_multiply::$7 ← ((byte)) (signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 signed_multiply::$7 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 signed_multiply::$7 ] ) + [121] (byte/signed byte/word/signed word~) signed_multiply::$16 ← (byte~) signed_multiply::$6 - (byte~) signed_multiply::$7 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$16 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$16 ] ) + [122] (word) signed_multiply::m#1 ← (word) signed_multiply::m#0 hi= (byte/signed byte/word/signed word~) signed_multiply::$16 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#1 ] ) + to:signed_multiply::@1 +signed_multiply::@1: scope:[signed_multiply] from signed_multiply::@3 signed_multiply::@6 + [123] (word) signed_multiply::m#5 ← phi( signed_multiply::@3/(word) signed_multiply::m#1 signed_multiply::@6/(word) signed_multiply::m#0 ) [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#5 ] ) + [124] if((signed byte) signed_multiply::b#0>=(byte/signed byte/word/signed word) 0) goto signed_multiply::@2 [ signed_multiply::a#0 signed_multiply::m#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::m#5 ] ) + to:signed_multiply::@4 +signed_multiply::@4: scope:[signed_multiply] from signed_multiply::@1 + [125] (byte~) signed_multiply::$12 ← > (word) signed_multiply::m#5 [ signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ) + [126] (byte~) signed_multiply::$13 ← ((byte)) (signed byte) signed_multiply::a#0 [ signed_multiply::m#5 signed_multiply::$12 signed_multiply::$13 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#5 signed_multiply::$12 signed_multiply::$13 ] ) + [127] (byte/signed byte/word/signed word~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte~) signed_multiply::$13 [ signed_multiply::m#5 signed_multiply::$17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#5 signed_multiply::$17 ] ) + [128] (word) signed_multiply::m#2 ← (word) signed_multiply::m#5 hi= (byte/signed byte/word/signed word~) signed_multiply::$17 [ signed_multiply::m#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#2 ] ) + to:signed_multiply::@2 +signed_multiply::@2: scope:[signed_multiply] from signed_multiply::@1 signed_multiply::@4 + [129] (word) signed_multiply::m#4 ← phi( signed_multiply::@1/(word) signed_multiply::m#5 signed_multiply::@4/(word) signed_multiply::m#2 ) [ signed_multiply::m#4 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#4 ] ) + [130] (signed word) signed_multiply::return#0 ← ((signed word)) (word) signed_multiply::m#4 [ signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::return#0 ] ) + to:signed_multiply::@return +signed_multiply::@return: scope:[signed_multiply] from signed_multiply::@2 + [131] return [ signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::return#0 ] ) + to:@return +multiply: scope:[multiply] from multiply_results_compare::@8 signed_multiply + [132] (byte) multiply::b#2 ← phi( multiply_results_compare::@8/(byte) multiply::b#1 signed_multiply/(byte) multiply::b#0 ) [ multiply::a#2 multiply::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#2 multiply::b#2 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#2 multiply::b#2 ] ) + [132] (byte) multiply::a#2 ← phi( multiply_results_compare::@8/(byte) multiply::a#1 signed_multiply/(byte) multiply::a#0 ) [ multiply::a#2 multiply::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#2 multiply::b#2 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#2 multiply::b#2 ] ) + [133] *((const byte*) multiply::memA#0) ← (byte) multiply::a#2 [ multiply::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::b#2 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::b#2 ] ) + [134] *((const byte*) multiply::memB#0) ← (byte) multiply::b#2 [ ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB } - [81] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::return#0 ] ) + [136] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) to:multiply::@return multiply::@return: scope:[multiply] from multiply - [82] return [ multiply::return#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::return#0 ] ) + [137] return [ multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) + to:@return +slow_signed_multiply: scope:[slow_signed_multiply] from signed_multiply_results_compare::@2 + [138] if((signed byte) slow_signed_multiply::a#0>=(byte/signed byte/word/signed word) 0) goto slow_signed_multiply::@1 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ) + to:slow_signed_multiply::@2 +slow_signed_multiply::@2: scope:[slow_signed_multiply] from slow_signed_multiply slow_signed_multiply::@2 + [139] (signed byte) slow_signed_multiply::i#2 ← phi( slow_signed_multiply::@2/(signed byte) slow_signed_multiply::i#1 slow_signed_multiply/(byte/signed byte/word/signed word) 0 ) [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#3 slow_signed_multiply::i#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#3 slow_signed_multiply::i#2 ] ) + [139] (signed word) slow_signed_multiply::m#3 ← phi( slow_signed_multiply::@2/(signed word) slow_signed_multiply::m#1 slow_signed_multiply/(byte/signed byte/word/signed word) 0 ) [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#3 slow_signed_multiply::i#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#3 slow_signed_multiply::i#2 ] ) + [140] (signed word) slow_signed_multiply::m#1 ← (signed word) slow_signed_multiply::m#3 - (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ) + [141] (signed byte) slow_signed_multiply::i#1 ← -- (signed byte) slow_signed_multiply::i#2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ) + [142] if((signed byte) slow_signed_multiply::i#1!=(signed byte) slow_signed_multiply::a#0) goto slow_signed_multiply::@2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ) + to:slow_signed_multiply::@3 +slow_signed_multiply::@3: scope:[slow_signed_multiply] from slow_signed_multiply::@1 slow_signed_multiply::@2 slow_signed_multiply::@5 + [143] (signed word) slow_signed_multiply::return#0 ← phi( slow_signed_multiply::@2/(signed word) slow_signed_multiply::m#1 slow_signed_multiply::@1/(byte/signed byte/word/signed word) 0 slow_signed_multiply::@5/(signed word) slow_signed_multiply::m#2 ) [ slow_signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::return#0 ] ) + to:slow_signed_multiply::@return +slow_signed_multiply::@return: scope:[slow_signed_multiply] from slow_signed_multiply::@3 + [144] return [ slow_signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::return#0 ] ) + to:@return +slow_signed_multiply::@1: scope:[slow_signed_multiply] from slow_signed_multiply + [145] if((signed byte) slow_signed_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_signed_multiply::@3 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ) + to:slow_signed_multiply::@5 +slow_signed_multiply::@5: scope:[slow_signed_multiply] from slow_signed_multiply::@1 slow_signed_multiply::@5 + [146] (signed byte) slow_signed_multiply::j#2 ← phi( slow_signed_multiply::@5/(signed byte) slow_signed_multiply::j#1 slow_signed_multiply::@1/(byte/signed byte/word/signed word) 0 ) [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#5 slow_signed_multiply::j#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#5 slow_signed_multiply::j#2 ] ) + [146] (signed word) slow_signed_multiply::m#5 ← phi( slow_signed_multiply::@5/(signed word) slow_signed_multiply::m#2 slow_signed_multiply::@1/(byte/signed byte/word/signed word) 0 ) [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#5 slow_signed_multiply::j#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#5 slow_signed_multiply::j#2 ] ) + [147] (signed word) slow_signed_multiply::m#2 ← (signed word) slow_signed_multiply::m#5 + (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ) + [148] (signed byte) slow_signed_multiply::j#1 ← ++ (signed byte) slow_signed_multiply::j#2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ) + [149] if((signed byte) slow_signed_multiply::j#1!=(signed byte) slow_signed_multiply::a#0) goto slow_signed_multiply::@5 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ) + to:slow_signed_multiply::@3 +multiply_results_compare: scope:[multiply_results_compare] from main::@4 + [150] phi() [ line_cursor#27 char_cursor#27 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 ] ) + to:multiply_results_compare::@1 +multiply_results_compare::@1: scope:[multiply_results_compare] from multiply_results_compare multiply_results_compare::@6 + [151] (byte) multiply_results_compare::a#6 ← phi( multiply_results_compare/(byte/signed byte/word/signed word) 0 multiply_results_compare::@6/(byte) multiply_results_compare::a#1 ) [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 ] ) + to:multiply_results_compare::@2 +multiply_results_compare::@2: scope:[multiply_results_compare] from multiply_results_compare::@1 multiply_results_compare::@3 + [152] (byte) multiply_results_compare::b#2 ← phi( multiply_results_compare::@1/(byte/signed byte/word/signed word) 0 multiply_results_compare::@3/(byte) multiply_results_compare::b#1 ) [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 ] ) + [153] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ) + [154] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) + [155] call slow_multiply param-assignment [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) + [156] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ) + to:multiply_results_compare::@8 +multiply_results_compare::@8: scope:[multiply_results_compare] from multiply_results_compare::@2 + [157] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + [158] (byte) multiply::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + [159] (byte) multiply::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + [160] call multiply param-assignment [ line_cursor#27 char_cursor#27 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + [161] (word) multiply::return#3 ← (word) multiply::return#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ) + to:multiply_results_compare::@9 +multiply_results_compare::@9: scope:[multiply_results_compare] from multiply_results_compare::@8 + [162] (word) multiply_results_compare::ma#0 ← (word) multiply::return#3 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) + [163] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) + to:multiply_results_compare::@4 +multiply_results_compare::@4: scope:[multiply_results_compare] from multiply_results_compare::@9 + [164] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) + [165] (byte) multiply_error::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 ] ) + [166] (byte) multiply_error::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 ] ) + [167] (word) multiply_error::ms#0 ← (word) multiply_results_compare::ms#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ) + [168] (word) multiply_error::ma#0 ← (word) multiply_results_compare::ma#0 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + [169] call multiply_error param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) + to:multiply_results_compare::@return +multiply_results_compare::@return: scope:[multiply_results_compare] from multiply_results_compare::@11 multiply_results_compare::@4 + [170] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) + to:@return +multiply_results_compare::@3: scope:[multiply_results_compare] from multiply_results_compare::@9 + [171] (byte) multiply_results_compare::b#1 ← ++ (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ) + [172] if((byte) multiply_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ) + to:multiply_results_compare::@6 +multiply_results_compare::@6: scope:[multiply_results_compare] from multiply_results_compare::@3 + [173] (byte) multiply_results_compare::a#1 ← ++ (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ) + [174] if((byte) multiply_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@1 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ) + to:multiply_results_compare::@7 +multiply_results_compare::@7: scope:[multiply_results_compare] from multiply_results_compare::@6 + [175] phi() [ line_cursor#27 char_cursor#27 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 ] ) + [176] call print_str param-assignment [ char_cursor#117 line_cursor#27 ] ( main:2::multiply_results_compare:13 [ char_cursor#117 line_cursor#27 ] ) + to:multiply_results_compare::@11 +multiply_results_compare::@11: scope:[multiply_results_compare] from multiply_results_compare::@7 + [177] phi() [ char_cursor#117 line_cursor#27 ] ( main:2::multiply_results_compare:13 [ char_cursor#117 line_cursor#27 ] ) + [178] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) + to:multiply_results_compare::@return +multiply_error: scope:[multiply_error] from multiply_results_compare::@4 + [179] phi() [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + [180] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + to:multiply_error::@1 +multiply_error::@1: scope:[multiply_error] from multiply_error + [181] (byte) print_byte::b#3 ← (byte) multiply_error::a#0 [ char_cursor#117 line_cursor#27 print_byte::b#3 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_byte::b#3 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + [182] call print_byte param-assignment [ char_cursor#17 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + to:multiply_error::@2 +multiply_error::@2: scope:[multiply_error] from multiply_error::@1 + [183] phi() [ char_cursor#17 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + [184] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + to:multiply_error::@3 +multiply_error::@3: scope:[multiply_error] from multiply_error::@2 + [185] (byte) print_byte::b#4 ← (byte) multiply_error::b#0 [ char_cursor#117 line_cursor#27 print_byte::b#4 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_byte::b#4 multiply_error::ms#0 multiply_error::ma#0 ] ) + [186] call print_byte param-assignment [ char_cursor#17 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ) + to:multiply_error::@4 +multiply_error::@4: scope:[multiply_error] from multiply_error::@3 + [187] phi() [ char_cursor#17 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ) + [188] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ) + to:multiply_error::@5 +multiply_error::@5: scope:[multiply_error] from multiply_error::@4 + [189] (word) print_word::w#3 ← (word) multiply_error::ms#0 [ char_cursor#117 line_cursor#27 print_word::w#3 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_word::w#3 multiply_error::ma#0 ] ) + [190] call print_word param-assignment [ char_cursor#17 line_cursor#27 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::ma#0 ] ) + to:multiply_error::@6 +multiply_error::@6: scope:[multiply_error] from multiply_error::@5 + [191] phi() [ char_cursor#17 line_cursor#27 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::ma#0 ] ) + [192] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::ma#0 ] ) + to:multiply_error::@7 +multiply_error::@7: scope:[multiply_error] from multiply_error::@6 + [193] (word) print_word::w#4 ← (word) multiply_error::ma#0 [ char_cursor#117 line_cursor#27 print_word::w#4 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_word::w#4 ] ) + [194] call print_word param-assignment [ char_cursor#17 line_cursor#27 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 ] ) + to:multiply_error::@8 +multiply_error::@8: scope:[multiply_error] from multiply_error::@7 + [195] phi() [ char_cursor#17 line_cursor#27 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 ] ) + [196] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ line_cursor#1 ] ) + to:multiply_error::@return +multiply_error::@return: scope:[multiply_error] from multiply_error::@8 + [197] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ line_cursor#1 ] ) to:@return slow_multiply: scope:[slow_multiply] from multiply_results_compare::@2 - [83] if((byte) slow_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 ] ) + [198] if((byte) slow_multiply::a#0==(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) to:slow_multiply::@2 slow_multiply::@2: scope:[slow_multiply] from slow_multiply slow_multiply::@2 - [84] (byte) slow_multiply::i#2 ← phi( slow_multiply::@2/(byte) slow_multiply::i#1 slow_multiply/(byte/signed byte/word/signed word) 0 ) [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ) - [84] (word) slow_multiply::m#3 ← phi( slow_multiply::@2/(word) slow_multiply::m#1 slow_multiply/(byte/signed byte/word/signed word) 0 ) [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ) - [85] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) - [86] (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) - [87] if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) + [199] (byte) slow_multiply::i#2 ← phi( slow_multiply::@2/(byte) slow_multiply::i#1 slow_multiply/(byte/signed byte/word/signed word) 0 ) [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ) + [199] (word) slow_multiply::m#3 ← phi( slow_multiply::@2/(word) slow_multiply::m#1 slow_multiply/(byte/signed byte/word/signed word) 0 ) [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ) + [200] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) + [201] (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) + [202] if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) to:slow_multiply::@1 slow_multiply::@1: scope:[slow_multiply] from slow_multiply slow_multiply::@2 - [88] (word) slow_multiply::return#0 ← phi( slow_multiply/(byte/signed byte/word/signed word) 0 slow_multiply::@2/(word) slow_multiply::m#1 ) [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::return#0 ] ) + [203] (word) slow_multiply::return#0 ← phi( slow_multiply/(byte/signed byte/word/signed word) 0 slow_multiply::@2/(word) slow_multiply::m#1 ) [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) to:slow_multiply::@return slow_multiply::@return: scope:[slow_multiply] from slow_multiply::@1 - [89] return [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::return#0 ] ) + [204] return [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) to:@return multiply_tables_compare: scope:[multiply_tables_compare] from main::@3 - [90] phi() [ ] ( main:2::multiply_tables_compare:11 [ ] ) + [205] phi() [ ] ( main:2::multiply_tables_compare:11 [ ] ) to:multiply_tables_compare::@1 multiply_tables_compare::@1: scope:[multiply_tables_compare] from multiply_tables_compare multiply_tables_compare::@2 - [91] (byte*) multiply_tables_compare::asm_sqr#2 ← phi( multiply_tables_compare/(const byte[512]) asm_mul_sqr1_lo#0 multiply_tables_compare::@2/(byte*) multiply_tables_compare::asm_sqr#1 ) [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) - [91] (byte*) multiply_tables_compare::kc_sqr#2 ← phi( multiply_tables_compare/(const byte[512]) mul_sqr1_lo#0 multiply_tables_compare::@2/(byte*) multiply_tables_compare::kc_sqr#1 ) [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) - [92] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) + [206] (byte*) multiply_tables_compare::asm_sqr#2 ← phi( multiply_tables_compare/(const byte[512]) asm_mul_sqr1_lo#0 multiply_tables_compare::@2/(byte*) multiply_tables_compare::asm_sqr#1 ) [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) + [206] (byte*) multiply_tables_compare::kc_sqr#2 ← phi( multiply_tables_compare/(const byte[512]) mul_sqr1_lo#0 multiply_tables_compare::@2/(byte*) multiply_tables_compare::kc_sqr#1 ) [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) + [207] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) to:multiply_tables_compare::@3 multiply_tables_compare::@3: scope:[multiply_tables_compare] from multiply_tables_compare::@1 - [93] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) - [94] call print_str param-assignment [ char_cursor#2 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) + [208] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) + [209] call print_str param-assignment [ char_cursor#117 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) to:multiply_tables_compare::@6 multiply_tables_compare::@6: scope:[multiply_tables_compare] from multiply_tables_compare::@3 - [95] (word) print_word::w#0 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#2 print_word::w#0 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 print_word::w#0 multiply_tables_compare::kc_sqr#2 ] ) - [96] call print_word param-assignment [ char_cursor#11 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#11 multiply_tables_compare::kc_sqr#2 ] ) + [210] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ) + [211] call print_word param-assignment [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ) to:multiply_tables_compare::@7 multiply_tables_compare::@7: scope:[multiply_tables_compare] from multiply_tables_compare::@6 - [97] phi() [ char_cursor#11 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#11 multiply_tables_compare::kc_sqr#2 ] ) - [98] call print_str param-assignment [ char_cursor#2 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 multiply_tables_compare::kc_sqr#2 ] ) + [212] phi() [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ) + [213] call print_str param-assignment [ char_cursor#117 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 multiply_tables_compare::kc_sqr#2 ] ) to:multiply_tables_compare::@8 multiply_tables_compare::@8: scope:[multiply_tables_compare] from multiply_tables_compare::@7 - [99] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#2 print_word::w#1 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 print_word::w#1 ] ) - [100] call print_word param-assignment [ char_cursor#11 ] ( main:2::multiply_tables_compare:11 [ char_cursor#11 ] ) + [214] (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#2 ] ) + [215] call print_word param-assignment [ char_cursor#17 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 ] ) to:multiply_tables_compare::@return multiply_tables_compare::@return: scope:[multiply_tables_compare] from multiply_tables_compare::@10 multiply_tables_compare::@8 - [101] (byte*) line_cursor#17 ← phi( multiply_tables_compare::@10/(byte*) line_cursor#1 multiply_tables_compare::@8/((byte*))(word/signed word) 1024 ) [ line_cursor#17 char_cursor#20 ] ( main:2::multiply_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) - [101] (byte*) char_cursor#20 ← phi( multiply_tables_compare::@10/(byte*~) char_cursor#100 multiply_tables_compare::@8/(byte*) char_cursor#11 ) [ line_cursor#17 char_cursor#20 ] ( main:2::multiply_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) - [102] return [ line_cursor#17 char_cursor#20 ] ( main:2::multiply_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) + [216] (byte*) line_cursor#27 ← phi( multiply_tables_compare::@10/(byte*) line_cursor#1 multiply_tables_compare::@8/((byte*))(word/signed word) 1024 ) [ line_cursor#27 char_cursor#27 ] ( main:2::multiply_tables_compare:11 [ line_cursor#27 char_cursor#27 ] ) + [216] (byte*) char_cursor#27 ← phi( multiply_tables_compare::@10/(byte*~) char_cursor#197 multiply_tables_compare::@8/(byte*) char_cursor#17 ) [ line_cursor#27 char_cursor#27 ] ( main:2::multiply_tables_compare:11 [ line_cursor#27 char_cursor#27 ] ) + [217] return [ line_cursor#27 char_cursor#27 ] ( main:2::multiply_tables_compare:11 [ line_cursor#27 char_cursor#27 ] ) to:@return multiply_tables_compare::@2: scope:[multiply_tables_compare] from multiply_tables_compare::@1 - [103] (byte*) multiply_tables_compare::asm_sqr#1 ← ++ (byte*) multiply_tables_compare::asm_sqr#2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ) - [104] (byte*) multiply_tables_compare::kc_sqr#1 ← ++ (byte*) multiply_tables_compare::kc_sqr#2 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) - [105] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) + [218] (byte*) multiply_tables_compare::asm_sqr#1 ← ++ (byte*) multiply_tables_compare::asm_sqr#2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ) + [219] (byte*) multiply_tables_compare::kc_sqr#1 ← ++ (byte*) multiply_tables_compare::kc_sqr#2 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) + [220] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) to:multiply_tables_compare::@5 multiply_tables_compare::@5: scope:[multiply_tables_compare] from multiply_tables_compare::@2 - [106] phi() [ ] ( main:2::multiply_tables_compare:11 [ ] ) - [107] call print_str param-assignment [ char_cursor#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 ] ) + [221] phi() [ ] ( main:2::multiply_tables_compare:11 [ ] ) + [222] call print_str param-assignment [ char_cursor#117 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 ] ) to:multiply_tables_compare::@10 multiply_tables_compare::@10: scope:[multiply_tables_compare] from multiply_tables_compare::@5 - [108] phi() [ char_cursor#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 ] ) - [109] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 ] ) - [110] (byte*~) char_cursor#100 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#100 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#100 ] ) + [223] phi() [ char_cursor#117 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 ] ) + [224] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 ] ) + [225] (byte*~) char_cursor#197 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#197 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#197 ] ) to:multiply_tables_compare::@return init_multiply_asm: scope:[init_multiply_asm] from main::@2 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } - [112] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) - [113] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) - [114] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) - [115] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) + [227] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) + [228] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) + [229] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) + [230] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) to:init_multiply_asm::@return init_multiply_asm::@return: scope:[init_multiply_asm] from init_multiply_asm - [116] return [ ] ( main:2::init_multiply_asm:9 [ ] ) + [231] return [ ] ( main:2::init_multiply_asm:9 [ ] ) to:@return init_multiply: scope:[init_multiply] from main::@1 - [117] phi() [ ] ( main:2::init_multiply:7 [ ] ) + [232] phi() [ ] ( main:2::init_multiply:7 [ ] ) to:init_multiply::@1 init_multiply::@1: scope:[init_multiply] from init_multiply init_multiply::@2 - [118] (byte) init_multiply::x_2#3 ← phi( init_multiply/(byte/signed byte/word/signed word) 0 init_multiply::@2/(byte) init_multiply::x_2#2 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) - [118] (byte*) init_multiply::sqr1_hi#2 ← phi( init_multiply/(const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 init_multiply::@2/(byte*) init_multiply::sqr1_hi#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) - [118] (byte*) init_multiply::sqr1_lo#2 ← phi( init_multiply/(const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 init_multiply::@2/(byte*) init_multiply::sqr1_lo#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) - [118] (word) init_multiply::sqr#4 ← phi( init_multiply/(byte/signed byte/word/signed word) 0 init_multiply::@2/(word) init_multiply::sqr#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) - [118] (byte) init_multiply::c#2 ← phi( init_multiply/(byte/signed byte/word/signed word) 0 init_multiply::@2/(byte) init_multiply::c#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) - [119] (byte) init_multiply::c#1 ← ++ (byte) init_multiply::c#2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) - [120] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word) 1 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ) - [121] if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word) 0) goto init_multiply::@2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) + [233] (byte) init_multiply::x_2#3 ← phi( init_multiply/(byte/signed byte/word/signed word) 0 init_multiply::@2/(byte) init_multiply::x_2#2 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) + [233] (byte*) init_multiply::sqr1_hi#2 ← phi( init_multiply/(const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 init_multiply::@2/(byte*) init_multiply::sqr1_hi#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) + [233] (byte*) init_multiply::sqr1_lo#2 ← phi( init_multiply/(const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 init_multiply::@2/(byte*) init_multiply::sqr1_lo#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) + [233] (word) init_multiply::sqr#4 ← phi( init_multiply/(byte/signed byte/word/signed word) 0 init_multiply::@2/(word) init_multiply::sqr#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) + [233] (byte) init_multiply::c#2 ← phi( init_multiply/(byte/signed byte/word/signed word) 0 init_multiply::@2/(byte) init_multiply::c#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) + [234] (byte) init_multiply::c#1 ← ++ (byte) init_multiply::c#2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) + [235] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word) 1 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ) + [236] if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word) 0) goto init_multiply::@2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) to:init_multiply::@5 init_multiply::@5: scope:[init_multiply] from init_multiply::@1 - [122] (byte) init_multiply::x_2#1 ← ++ (byte) init_multiply::x_2#3 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ) - [123] (word) init_multiply::sqr#2 ← ++ (word) init_multiply::sqr#4 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ) + [237] (byte) init_multiply::x_2#1 ← ++ (byte) init_multiply::x_2#3 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ) + [238] (word) init_multiply::sqr#2 ← ++ (word) init_multiply::sqr#4 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ) to:init_multiply::@2 init_multiply::@2: scope:[init_multiply] from init_multiply::@1 init_multiply::@5 - [124] (byte) init_multiply::x_2#2 ← phi( init_multiply::@1/(byte) init_multiply::x_2#3 init_multiply::@5/(byte) init_multiply::x_2#1 ) [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) - [124] (word) init_multiply::sqr#3 ← phi( init_multiply::@1/(word) init_multiply::sqr#4 init_multiply::@5/(word) init_multiply::sqr#2 ) [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) - [125] (byte~) init_multiply::$5 ← < (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ) - [126] *((byte*) init_multiply::sqr1_lo#2) ← (byte~) init_multiply::$5 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) - [127] (byte~) init_multiply::$6 ← > (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ) - [128] *((byte*) init_multiply::sqr1_hi#2) ← (byte~) init_multiply::$6 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) - [129] (byte*) init_multiply::sqr1_hi#1 ← ++ (byte*) init_multiply::sqr1_hi#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) - [130] (word) init_multiply::sqr#1 ← (word) init_multiply::sqr#3 + (byte) init_multiply::x_2#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) - [131] (byte*) init_multiply::sqr1_lo#1 ← ++ (byte*) init_multiply::sqr1_lo#2 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) - [132] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_multiply::@1 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) + [239] (byte) init_multiply::x_2#2 ← phi( init_multiply::@1/(byte) init_multiply::x_2#3 init_multiply::@5/(byte) init_multiply::x_2#1 ) [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) + [239] (word) init_multiply::sqr#3 ← phi( init_multiply::@1/(word) init_multiply::sqr#4 init_multiply::@5/(word) init_multiply::sqr#2 ) [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) + [240] (byte~) init_multiply::$5 ← < (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ) + [241] *((byte*) init_multiply::sqr1_lo#2) ← (byte~) init_multiply::$5 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) + [242] (byte~) init_multiply::$6 ← > (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ) + [243] *((byte*) init_multiply::sqr1_hi#2) ← (byte~) init_multiply::$6 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) + [244] (byte*) init_multiply::sqr1_hi#1 ← ++ (byte*) init_multiply::sqr1_hi#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) + [245] (word) init_multiply::sqr#1 ← (word) init_multiply::sqr#3 + (byte) init_multiply::x_2#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) + [246] (byte*) init_multiply::sqr1_lo#1 ← ++ (byte*) init_multiply::sqr1_lo#2 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) + [247] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_multiply::@1 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) to:init_multiply::@3 init_multiply::@3: scope:[init_multiply] from init_multiply::@2 init_multiply::@4 - [133] (byte) init_multiply::dir#2 ← phi( init_multiply::@4/(byte) init_multiply::dir#3 init_multiply::@2/(byte/word/signed word) 255 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) - [133] (byte*) init_multiply::sqr2_hi#2 ← phi( init_multiply::@4/(byte*) init_multiply::sqr2_hi#1 init_multiply::@2/(const byte[512]) mul_sqr2_hi#0 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) - [133] (byte*) init_multiply::sqr2_lo#2 ← phi( init_multiply::@4/(byte*) init_multiply::sqr2_lo#1 init_multiply::@2/(const byte[512]) mul_sqr2_lo#0 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) - [133] (byte) init_multiply::x_255#2 ← phi( init_multiply::@4/(byte) init_multiply::x_255#1 init_multiply::@2/((byte))-(byte/signed byte/word/signed word) 1 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) - [134] *((byte*) init_multiply::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) - [135] *((byte*) init_multiply::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) - [136] (byte*) init_multiply::sqr2_hi#1 ← ++ (byte*) init_multiply::sqr2_hi#2 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ) - [137] (byte) init_multiply::x_255#1 ← (byte) init_multiply::x_255#2 + (byte) init_multiply::dir#2 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) - [138] if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_multiply::@12 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) + [248] (byte) init_multiply::dir#2 ← phi( init_multiply::@4/(byte) init_multiply::dir#3 init_multiply::@2/(byte/word/signed word) 255 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) + [248] (byte*) init_multiply::sqr2_hi#2 ← phi( init_multiply::@4/(byte*) init_multiply::sqr2_hi#1 init_multiply::@2/(const byte[512]) mul_sqr2_hi#0 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) + [248] (byte*) init_multiply::sqr2_lo#2 ← phi( init_multiply::@4/(byte*) init_multiply::sqr2_lo#1 init_multiply::@2/(const byte[512]) mul_sqr2_lo#0 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) + [248] (byte) init_multiply::x_255#2 ← phi( init_multiply::@4/(byte) init_multiply::x_255#1 init_multiply::@2/((byte))-(byte/signed byte/word/signed word) 1 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) + [249] *((byte*) init_multiply::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) + [250] *((byte*) init_multiply::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) + [251] (byte*) init_multiply::sqr2_hi#1 ← ++ (byte*) init_multiply::sqr2_hi#2 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ) + [252] (byte) init_multiply::x_255#1 ← (byte) init_multiply::x_255#2 + (byte) init_multiply::dir#2 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) + [253] if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_multiply::@12 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) to:init_multiply::@4 init_multiply::@4: scope:[init_multiply] from init_multiply::@12 init_multiply::@3 - [139] (byte) init_multiply::dir#3 ← phi( init_multiply::@12/(byte) init_multiply::dir#2 init_multiply::@3/(byte/signed byte/word/signed word) 1 ) [ init_multiply::sqr2_lo#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) - [140] (byte*) init_multiply::sqr2_lo#1 ← ++ (byte*) init_multiply::sqr2_lo#2 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) - [141] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_multiply::@3 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) + [254] (byte) init_multiply::dir#3 ← phi( init_multiply::@12/(byte) init_multiply::dir#2 init_multiply::@3/(byte/signed byte/word/signed word) 1 ) [ init_multiply::sqr2_lo#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) + [255] (byte*) init_multiply::sqr2_lo#1 ← ++ (byte*) init_multiply::sqr2_lo#2 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) + [256] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_multiply::@3 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) to:init_multiply::@8 init_multiply::@8: scope:[init_multiply] from init_multiply::@4 - [142] *((const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word) 256) [ ] ( main:2::init_multiply:7 [ ] ) - [143] *((const byte[512]) mul_sqr2_hi#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word) 256) [ ] ( main:2::init_multiply:7 [ ] ) + [257] *((const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word) 256) [ ] ( main:2::init_multiply:7 [ ] ) + [258] *((const byte[512]) mul_sqr2_hi#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word) 256) [ ] ( main:2::init_multiply:7 [ ] ) to:init_multiply::@return init_multiply::@return: scope:[init_multiply] from init_multiply::@8 - [144] return [ ] ( main:2::init_multiply:7 [ ] ) + [259] return [ ] ( main:2::init_multiply:7 [ ] ) to:@return init_multiply::@12: scope:[init_multiply] from init_multiply::@3 - [145] phi() [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) + [260] phi() [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) to:init_multiply::@4 print_cls: scope:[print_cls] from main - [146] phi() [ ] ( main:2::print_cls:5 [ ] ) + [261] phi() [ ] ( main:2::print_cls:5 [ ] ) to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [147] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) - [148] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) - [149] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) - [150] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) + [262] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) + [263] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) + [264] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) + [265] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [151] return [ ] ( main:2::print_cls:5 [ ] ) + [266] return [ ] ( main:2::print_cls:5 [ ] ) to:@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.log b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.log index f8497a340..785af1750 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.log @@ -15,12 +15,13 @@ void main() { init_multiply_asm(); multiply_tables_compare(); multiply_results_compare(); + signed_multiply_results_compare(); } -// Perform a slow multiplication by repeated addition +// Calculate an unsigned multiplication by repeated addition word slow_multiply(byte a, byte b) { word m = 0; - if(a>0) { + if(a!=0) { for(byte i = 0; i!=a; i++) { m = m + b; } @@ -28,6 +29,21 @@ word slow_multiply(byte a, byte b) { return m; } +// Perform a signed multiplication by repeated addition/ +signed word slow_signed_multiply(signed byte a, signed byte b) { + signed word m = 0; + if(a<0) { + for(signed byte i = 0; i!=a; i--) { + m = m - b; + } + } else if (a>0) { + for(signed byte j = 0; j!=a; j++) { + m = m + b; + } + } + return m; +} + // ASM based multiplication tables // <(( x * x )/4) byte[512] align($100) asm_mul_sqr1_lo; @@ -107,7 +123,7 @@ void multiply_tables_compare() { print_ln(); } -// Perform all possible byte-multiplications (slow and ASM) and compare the results +// Perform all possible byte multiplications (slow and fast) and compare the results void multiply_results_compare() { for(byte a: 0..255) { for(byte b: 0..255) { @@ -115,10 +131,7 @@ void multiply_results_compare() { word ma = multiply(a,b); if(ms!=ma) { *BGCOL = 2; - print_str("multiply mismatch slow:@"); - print_word(ms); - print_str(" / fast asm:"); - print_word(ma); + multiply_error(a,b, ms, ma); return; } } @@ -126,6 +139,48 @@ void multiply_results_compare() { print_str("multiply results match!@"); print_ln(); } + +void multiply_error(byte a, byte b, word ms, word ma) { + print_str("multiply mismatch @"); + print_byte(a); + print_str("*@"); + print_byte(b); + print_str(" slow:@"); + print_word(ms); + print_str(" / fast asm:@"); + print_word(ma); + print_ln(); +} + +// Perform all possible signed byte multiplications (slow and fast) and compare the results +void signed_multiply_results_compare() { + for(signed byte a = -128; a!=-128; a++) { + for(signed byte b = -128; b!=-128; b++) { + signed word ms = slow_signed_multiply(a, b); + signed word ma = signed_multiply(a,b); + if(ms!=ma) { + *BGCOL = 2; + signed_multiply_error(a,b, ms, ma); + return; + } + } + } + print_str("signed multiply results match!@"); + print_ln(); +} + +void signed_multiply_error(signed byte a, signed byte b, signed word ms, signed word ma) { + print_str("signed multiply mismatch @"); + print_sbyte(a); + print_str("*@"); + print_sbyte(b); + print_str(" slow:@"); + print_sword(ms); + print_str(" / fast asm:@"); + print_sword(ma); + print_ln(); +} + Importing print.kc PARSING src/test/java/dk/camelot64/kickc/test/print.kc @@ -147,6 +202,24 @@ void print_ln() { char_cursor = line_cursor; } +// Print a signed word as HEX +void print_sword(signed word w) { + if(w<0) { + print_char('-'); + w = -w; + } + print_word((word)w); +} + +// Print a signed byte as HEX +void print_sbyte(signed byte b) { + if(b<0) { + print_char('-'); + b = -b; + } + print_byte((byte)b); +} + // Print a word as HEX void print_word(word w) { print_byte(>w); @@ -156,7 +229,7 @@ void print_word(word w) { // Print a byte as HEX void print_byte(byte b) { // Table of hexadecimal digits - const byte[] hextab = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + const byte[] hextab = "0123456789abcdef"; print_char(hextab[b>>4]); print_char(hextab[b&$f]); } @@ -230,6 +303,7 @@ void init_multiply() { } // Fast multiply two unsigned bytes to a word result +// Done in assembler to utilize fast addition A+X word multiply(byte a, byte b) { const byte* memA = $fe; const byte* memB = $ff; @@ -257,6 +331,19 @@ word multiply(byte a, byte b) { } return { *memB, *memA }; } + +// Fast multiply of two signed bytes to a signed word +// Fixes offsets introduced by using unsigned multiplication +signed word signed_multiply(signed byte a, signed byte b) { + word m = multiply((byte)a, (byte) b); + if(a<0) { + >m = (>m)-(byte)b; + } + if(b<0) { + >m = (>m)-(byte)a; + } + return (signed word)m; +} Adding pre/post-modifier (byte) init_multiply::c ← ++ (byte) init_multiply::c Adding pre/post-modifier (byte) init_multiply::x_2 ← ++ (byte) init_multiply::x_2 Adding pre/post-modifier (word) init_multiply::sqr ← ++ (word) init_multiply::sqr @@ -265,8 +352,12 @@ Adding pre/post-modifier (byte*) init_multiply::sqr1_lo ← ++ (byte*) init_mult Adding pre/post-modifier (byte*) init_multiply::sqr2_hi ← ++ (byte*) init_multiply::sqr2_hi Adding pre/post-modifier (byte*) init_multiply::sqr2_lo ← ++ (byte*) init_multiply::sqr2_lo Adding pre/post-modifier (byte) slow_multiply::i ← ++ (byte) slow_multiply::i +Adding pre/post-modifier (signed byte) slow_signed_multiply::i ← -- (signed byte) slow_signed_multiply::i +Adding pre/post-modifier (signed byte) slow_signed_multiply::j ← ++ (signed byte) slow_signed_multiply::j Adding pre/post-modifier (byte*) multiply_tables_compare::asm_sqr ← ++ (byte*) multiply_tables_compare::asm_sqr Adding pre/post-modifier (byte*) multiply_tables_compare::kc_sqr ← ++ (byte*) multiply_tables_compare::kc_sqr +Adding pre/post-modifier (signed byte) signed_multiply_results_compare::b ← ++ (signed byte) signed_multiply_results_compare::b +Adding pre/post-modifier (signed byte) signed_multiply_results_compare::a ← ++ (signed byte) signed_multiply_results_compare::a STATEMENTS (byte*) line_cursor ← (word/signed word) 1024 @@ -295,6 +386,32 @@ print_ln::@1: print_ln::@return: return endproc // print_ln() +proc (void()) print_sword((signed word) print_sword::w) + (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word) 0 + (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 + if((boolean~) print_sword::$1) goto print_sword::@1 + (void~) print_sword::$2 ← call print_char (byte) '-' + (signed word~) print_sword::$3 ← - (signed word) print_sword::w + (signed word) print_sword::w ← (signed word~) print_sword::$3 +print_sword::@1: + (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w + (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 +print_sword::@return: + return +endproc // print_sword() +proc (void()) print_sbyte((signed byte) print_sbyte::b) + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + (void~) print_sbyte::$2 ← call print_char (byte) '-' + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b + (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3 +print_sbyte::@1: + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b + (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 +print_sbyte::@return: + return +endproc // print_sbyte() proc (void()) print_word((word) print_word::w) (byte~) print_word::$0 ← > (word) print_word::w (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 @@ -304,7 +421,7 @@ print_word::@return: return endproc // print_word() proc (void()) print_byte((byte) print_byte::b) - (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } + (byte[]) print_byte::hextab ← (string) "0123456789abcdef" (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 @@ -403,6 +520,36 @@ multiply::@return: (word) multiply::return ← (word) multiply::return return (word) multiply::return endproc // multiply() +proc (signed word()) signed_multiply((signed byte) signed_multiply::a , (signed byte) signed_multiply::b) + (byte~) signed_multiply::$0 ← ((byte)) (signed byte) signed_multiply::a + (byte~) signed_multiply::$1 ← ((byte)) (signed byte) signed_multiply::b + (word~) signed_multiply::$2 ← call multiply (byte~) signed_multiply::$0 (byte~) signed_multiply::$1 + (word) signed_multiply::m ← (word~) signed_multiply::$2 + (boolean~) signed_multiply::$3 ← (signed byte) signed_multiply::a < (byte/signed byte/word/signed word) 0 + (boolean~) signed_multiply::$4 ← ! (boolean~) signed_multiply::$3 + if((boolean~) signed_multiply::$4) goto signed_multiply::@1 + (byte~) signed_multiply::$5 ← > (word) signed_multiply::m + (byte~) signed_multiply::$6 ← > (word) signed_multiply::m + (byte~) signed_multiply::$7 ← ((byte)) (signed byte) signed_multiply::b + (byte/signed byte/word/signed word~) signed_multiply::$8 ← (byte~) signed_multiply::$6 - (byte~) signed_multiply::$7 + lval((byte~) signed_multiply::$5) ← (byte/signed byte/word/signed word~) signed_multiply::$8 +signed_multiply::@1: + (boolean~) signed_multiply::$9 ← (signed byte) signed_multiply::b < (byte/signed byte/word/signed word) 0 + (boolean~) signed_multiply::$10 ← ! (boolean~) signed_multiply::$9 + if((boolean~) signed_multiply::$10) goto signed_multiply::@2 + (byte~) signed_multiply::$11 ← > (word) signed_multiply::m + (byte~) signed_multiply::$12 ← > (word) signed_multiply::m + (byte~) signed_multiply::$13 ← ((byte)) (signed byte) signed_multiply::a + (byte/signed byte/word/signed word~) signed_multiply::$14 ← (byte~) signed_multiply::$12 - (byte~) signed_multiply::$13 + lval((byte~) signed_multiply::$11) ← (byte/signed byte/word/signed word~) signed_multiply::$14 +signed_multiply::@2: + (signed word~) signed_multiply::$15 ← ((signed word)) (word) signed_multiply::m + (signed word) signed_multiply::return ← (signed word~) signed_multiply::$15 + goto signed_multiply::@return +signed_multiply::@return: + (signed word) signed_multiply::return ← (signed word) signed_multiply::return + return (signed word) signed_multiply::return +endproc // signed_multiply() (byte*) BGCOL ← (word) 53281 proc (void()) main() *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 5 @@ -411,12 +558,13 @@ proc (void()) main() (void~) main::$2 ← call init_multiply_asm (void~) main::$3 ← call multiply_tables_compare (void~) main::$4 ← call multiply_results_compare + (void~) main::$5 ← call signed_multiply_results_compare main::@return: return endproc // main() proc (word()) slow_multiply((byte) slow_multiply::a , (byte) slow_multiply::b) (word) slow_multiply::m ← (byte/signed byte/word/signed word) 0 - (boolean~) slow_multiply::$0 ← (byte) slow_multiply::a > (byte/signed byte/word/signed word) 0 + (boolean~) slow_multiply::$0 ← (byte) slow_multiply::a != (byte/signed byte/word/signed word) 0 (boolean~) slow_multiply::$1 ← ! (boolean~) slow_multiply::$0 if((boolean~) slow_multiply::$1) goto slow_multiply::@1 (byte) slow_multiply::i ← (byte/signed byte/word/signed word) 0 @@ -433,6 +581,38 @@ slow_multiply::@return: (word) slow_multiply::return ← (word) slow_multiply::return return (word) slow_multiply::return endproc // slow_multiply() +proc (signed word()) slow_signed_multiply((signed byte) slow_signed_multiply::a , (signed byte) slow_signed_multiply::b) + (signed word) slow_signed_multiply::m ← (byte/signed byte/word/signed word) 0 + (boolean~) slow_signed_multiply::$0 ← (signed byte) slow_signed_multiply::a < (byte/signed byte/word/signed word) 0 + (boolean~) slow_signed_multiply::$1 ← ! (boolean~) slow_signed_multiply::$0 + if((boolean~) slow_signed_multiply::$1) goto slow_signed_multiply::@1 + (signed byte) slow_signed_multiply::i ← (byte/signed byte/word/signed word) 0 +slow_signed_multiply::@2: + (signed word~) slow_signed_multiply::$2 ← (signed word) slow_signed_multiply::m - (signed byte) slow_signed_multiply::b + (signed word) slow_signed_multiply::m ← (signed word~) slow_signed_multiply::$2 + (signed byte) slow_signed_multiply::i ← -- (signed byte) slow_signed_multiply::i + (boolean~) slow_signed_multiply::$3 ← (signed byte) slow_signed_multiply::i != (signed byte) slow_signed_multiply::a + if((boolean~) slow_signed_multiply::$3) goto slow_signed_multiply::@2 + goto slow_signed_multiply::@3 +slow_signed_multiply::@1: + (boolean~) slow_signed_multiply::$4 ← (signed byte) slow_signed_multiply::a > (byte/signed byte/word/signed word) 0 + (boolean~) slow_signed_multiply::$5 ← ! (boolean~) slow_signed_multiply::$4 + if((boolean~) slow_signed_multiply::$5) goto slow_signed_multiply::@4 + (signed byte) slow_signed_multiply::j ← (byte/signed byte/word/signed word) 0 +slow_signed_multiply::@5: + (signed word~) slow_signed_multiply::$6 ← (signed word) slow_signed_multiply::m + (signed byte) slow_signed_multiply::b + (signed word) slow_signed_multiply::m ← (signed word~) slow_signed_multiply::$6 + (signed byte) slow_signed_multiply::j ← ++ (signed byte) slow_signed_multiply::j + (boolean~) slow_signed_multiply::$7 ← (signed byte) slow_signed_multiply::j != (signed byte) slow_signed_multiply::a + if((boolean~) slow_signed_multiply::$7) goto slow_signed_multiply::@5 +slow_signed_multiply::@4: +slow_signed_multiply::@3: + (signed word) slow_signed_multiply::return ← (signed word) slow_signed_multiply::m + goto slow_signed_multiply::@return +slow_signed_multiply::@return: + (signed word) slow_signed_multiply::return ← (signed word) slow_signed_multiply::return + return (signed word) slow_signed_multiply::return +endproc // slow_signed_multiply() (byte[512]) asm_mul_sqr1_lo ← { fill( 512, 0) } (byte[512]) asm_mul_sqr1_hi ← { fill( 512, 0) } (byte[512]) asm_mul_sqr2_lo ← { fill( 512, 0) } @@ -487,23 +667,77 @@ multiply_results_compare::@2: (boolean~) multiply_results_compare::$3 ← ! (boolean~) multiply_results_compare::$2 if((boolean~) multiply_results_compare::$3) goto multiply_results_compare::@3 *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 2 - (void~) multiply_results_compare::$4 ← call print_str (string) "multiply mismatch slow:@" - (void~) multiply_results_compare::$5 ← call print_word (word) multiply_results_compare::ms - (void~) multiply_results_compare::$6 ← call print_str (string) " / fast asm:" - (void~) multiply_results_compare::$7 ← call print_word (word) multiply_results_compare::ma + (void~) multiply_results_compare::$4 ← call multiply_error (byte) multiply_results_compare::a (byte) multiply_results_compare::b (word) multiply_results_compare::ms (word) multiply_results_compare::ma goto multiply_results_compare::@return multiply_results_compare::@3: (byte) multiply_results_compare::b ← ++ (byte) multiply_results_compare::b - (boolean~) multiply_results_compare::$8 ← (byte) multiply_results_compare::b != (byte/signed byte/word/signed word) 0 - if((boolean~) multiply_results_compare::$8) goto multiply_results_compare::@2 + (boolean~) multiply_results_compare::$5 ← (byte) multiply_results_compare::b != (byte/signed byte/word/signed word) 0 + if((boolean~) multiply_results_compare::$5) goto multiply_results_compare::@2 (byte) multiply_results_compare::a ← ++ (byte) multiply_results_compare::a - (boolean~) multiply_results_compare::$9 ← (byte) multiply_results_compare::a != (byte/signed byte/word/signed word) 0 - if((boolean~) multiply_results_compare::$9) goto multiply_results_compare::@1 - (void~) multiply_results_compare::$10 ← call print_str (string) "multiply results match!@" - (void~) multiply_results_compare::$11 ← call print_ln + (boolean~) multiply_results_compare::$6 ← (byte) multiply_results_compare::a != (byte/signed byte/word/signed word) 0 + if((boolean~) multiply_results_compare::$6) goto multiply_results_compare::@1 + (void~) multiply_results_compare::$7 ← call print_str (string) "multiply results match!@" + (void~) multiply_results_compare::$8 ← call print_ln multiply_results_compare::@return: return endproc // multiply_results_compare() +proc (void()) multiply_error((byte) multiply_error::a , (byte) multiply_error::b , (word) multiply_error::ms , (word) multiply_error::ma) + (void~) multiply_error::$0 ← call print_str (string) "multiply mismatch @" + (void~) multiply_error::$1 ← call print_byte (byte) multiply_error::a + (void~) multiply_error::$2 ← call print_str (string) "*@" + (void~) multiply_error::$3 ← call print_byte (byte) multiply_error::b + (void~) multiply_error::$4 ← call print_str (string) " slow:@" + (void~) multiply_error::$5 ← call print_word (word) multiply_error::ms + (void~) multiply_error::$6 ← call print_str (string) " / fast asm:@" + (void~) multiply_error::$7 ← call print_word (word) multiply_error::ma + (void~) multiply_error::$8 ← call print_ln +multiply_error::@return: + return +endproc // multiply_error() +proc (void()) signed_multiply_results_compare() + (signed byte/signed word~) signed_multiply_results_compare::$0 ← - (byte/word/signed word) 128 + (signed byte) signed_multiply_results_compare::a ← (signed byte/signed word~) signed_multiply_results_compare::$0 +signed_multiply_results_compare::@1: + (signed byte/signed word~) signed_multiply_results_compare::$1 ← - (byte/word/signed word) 128 + (signed byte) signed_multiply_results_compare::b ← (signed byte/signed word~) signed_multiply_results_compare::$1 +signed_multiply_results_compare::@2: + (signed word~) signed_multiply_results_compare::$2 ← call slow_signed_multiply (signed byte) signed_multiply_results_compare::a (signed byte) signed_multiply_results_compare::b + (signed word) signed_multiply_results_compare::ms ← (signed word~) signed_multiply_results_compare::$2 + (signed word~) signed_multiply_results_compare::$3 ← call signed_multiply (signed byte) signed_multiply_results_compare::a (signed byte) signed_multiply_results_compare::b + (signed word) signed_multiply_results_compare::ma ← (signed word~) signed_multiply_results_compare::$3 + (boolean~) signed_multiply_results_compare::$4 ← (signed word) signed_multiply_results_compare::ms != (signed word) signed_multiply_results_compare::ma + (boolean~) signed_multiply_results_compare::$5 ← ! (boolean~) signed_multiply_results_compare::$4 + if((boolean~) signed_multiply_results_compare::$5) goto signed_multiply_results_compare::@3 + *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 2 + (void~) signed_multiply_results_compare::$6 ← call signed_multiply_error (signed byte) signed_multiply_results_compare::a (signed byte) signed_multiply_results_compare::b (signed word) signed_multiply_results_compare::ms (signed word) signed_multiply_results_compare::ma + goto signed_multiply_results_compare::@return +signed_multiply_results_compare::@3: + (signed byte) signed_multiply_results_compare::b ← ++ (signed byte) signed_multiply_results_compare::b + (signed byte/signed word~) signed_multiply_results_compare::$7 ← - (byte/word/signed word) 128 + (boolean~) signed_multiply_results_compare::$8 ← (signed byte) signed_multiply_results_compare::b != (signed byte/signed word~) signed_multiply_results_compare::$7 + if((boolean~) signed_multiply_results_compare::$8) goto signed_multiply_results_compare::@2 + (signed byte) signed_multiply_results_compare::a ← ++ (signed byte) signed_multiply_results_compare::a + (signed byte/signed word~) signed_multiply_results_compare::$9 ← - (byte/word/signed word) 128 + (boolean~) signed_multiply_results_compare::$10 ← (signed byte) signed_multiply_results_compare::a != (signed byte/signed word~) signed_multiply_results_compare::$9 + if((boolean~) signed_multiply_results_compare::$10) goto signed_multiply_results_compare::@1 + (void~) signed_multiply_results_compare::$11 ← call print_str (string) "signed multiply results match!@" + (void~) signed_multiply_results_compare::$12 ← call print_ln +signed_multiply_results_compare::@return: + return +endproc // signed_multiply_results_compare() +proc (void()) signed_multiply_error((signed byte) signed_multiply_error::a , (signed byte) signed_multiply_error::b , (signed word) signed_multiply_error::ms , (signed word) signed_multiply_error::ma) + (void~) signed_multiply_error::$0 ← call print_str (string) "signed multiply mismatch @" + (void~) signed_multiply_error::$1 ← call print_sbyte (signed byte) signed_multiply_error::a + (void~) signed_multiply_error::$2 ← call print_str (string) "*@" + (void~) signed_multiply_error::$3 ← call print_sbyte (signed byte) signed_multiply_error::b + (void~) signed_multiply_error::$4 ← call print_str (string) " slow:@" + (void~) signed_multiply_error::$5 ← call print_sword (signed word) signed_multiply_error::ms + (void~) signed_multiply_error::$6 ← call print_str (string) " / fast asm:@" + (void~) signed_multiply_error::$7 ← call print_sword (signed word) signed_multiply_error::ma + (void~) signed_multiply_error::$8 ← call print_ln +signed_multiply_error::@return: + return +endproc // signed_multiply_error() call main SYMBOLS @@ -559,6 +793,7 @@ SYMBOLS (void~) main::$2 (void~) main::$3 (void~) main::$4 +(void~) main::$5 (label) main::@return (byte[512]) mul_sqr1_hi (byte[512]) mul_sqr1_lo @@ -571,19 +806,31 @@ SYMBOLS (byte*) multiply::memA (byte*) multiply::memB (word) multiply::return +(void()) multiply_error((byte) multiply_error::a , (byte) multiply_error::b , (word) multiply_error::ms , (word) multiply_error::ma) +(void~) multiply_error::$0 +(void~) multiply_error::$1 +(void~) multiply_error::$2 +(void~) multiply_error::$3 +(void~) multiply_error::$4 +(void~) multiply_error::$5 +(void~) multiply_error::$6 +(void~) multiply_error::$7 +(void~) multiply_error::$8 +(label) multiply_error::@return +(byte) multiply_error::a +(byte) multiply_error::b +(word) multiply_error::ma +(word) multiply_error::ms (void()) multiply_results_compare() (word~) multiply_results_compare::$0 (word~) multiply_results_compare::$1 -(void~) multiply_results_compare::$10 -(void~) multiply_results_compare::$11 (boolean~) multiply_results_compare::$2 (boolean~) multiply_results_compare::$3 (void~) multiply_results_compare::$4 -(void~) multiply_results_compare::$5 -(void~) multiply_results_compare::$6 +(boolean~) multiply_results_compare::$5 +(boolean~) multiply_results_compare::$6 (void~) multiply_results_compare::$7 -(boolean~) multiply_results_compare::$8 -(boolean~) multiply_results_compare::$9 +(void~) multiply_results_compare::$8 (label) multiply_results_compare::@1 (label) multiply_results_compare::@2 (label) multiply_results_compare::@3 @@ -633,6 +880,16 @@ SYMBOLS (boolean~) print_ln::$1 (label) print_ln::@1 (label) print_ln::@return +(void()) print_sbyte((signed byte) print_sbyte::b) +(boolean~) print_sbyte::$0 +(boolean~) print_sbyte::$1 +(void~) print_sbyte::$2 +(signed byte~) print_sbyte::$3 +(byte~) print_sbyte::$4 +(void~) print_sbyte::$5 +(label) print_sbyte::@1 +(label) print_sbyte::@return +(signed byte) print_sbyte::b (void()) print_str((byte*) print_str::str) (boolean~) print_str::$0 (label) print_str::@1 @@ -640,6 +897,16 @@ SYMBOLS (label) print_str::@3 (label) print_str::@return (byte*) print_str::str +(void()) print_sword((signed word) print_sword::w) +(boolean~) print_sword::$0 +(boolean~) print_sword::$1 +(void~) print_sword::$2 +(signed word~) print_sword::$3 +(word~) print_sword::$4 +(void~) print_sword::$5 +(label) print_sword::@1 +(label) print_sword::@return +(signed word) print_sword::w (void()) print_word((word) print_word::w) (byte~) print_word::$0 (void~) print_word::$1 @@ -647,6 +914,67 @@ SYMBOLS (void~) print_word::$3 (label) print_word::@return (word) print_word::w +(signed word()) signed_multiply((signed byte) signed_multiply::a , (signed byte) signed_multiply::b) +(byte~) signed_multiply::$0 +(byte~) signed_multiply::$1 +(boolean~) signed_multiply::$10 +(byte~) signed_multiply::$11 +(byte~) signed_multiply::$12 +(byte~) signed_multiply::$13 +(byte/signed byte/word/signed word~) signed_multiply::$14 +(signed word~) signed_multiply::$15 +(word~) signed_multiply::$2 +(boolean~) signed_multiply::$3 +(boolean~) signed_multiply::$4 +(byte~) signed_multiply::$5 +(byte~) signed_multiply::$6 +(byte~) signed_multiply::$7 +(byte/signed byte/word/signed word~) signed_multiply::$8 +(boolean~) signed_multiply::$9 +(label) signed_multiply::@1 +(label) signed_multiply::@2 +(label) signed_multiply::@return +(signed byte) signed_multiply::a +(signed byte) signed_multiply::b +(word) signed_multiply::m +(signed word) signed_multiply::return +(void()) signed_multiply_error((signed byte) signed_multiply_error::a , (signed byte) signed_multiply_error::b , (signed word) signed_multiply_error::ms , (signed word) signed_multiply_error::ma) +(void~) signed_multiply_error::$0 +(void~) signed_multiply_error::$1 +(void~) signed_multiply_error::$2 +(void~) signed_multiply_error::$3 +(void~) signed_multiply_error::$4 +(void~) signed_multiply_error::$5 +(void~) signed_multiply_error::$6 +(void~) signed_multiply_error::$7 +(void~) signed_multiply_error::$8 +(label) signed_multiply_error::@return +(signed byte) signed_multiply_error::a +(signed byte) signed_multiply_error::b +(signed word) signed_multiply_error::ma +(signed word) signed_multiply_error::ms +(void()) signed_multiply_results_compare() +(signed byte/signed word~) signed_multiply_results_compare::$0 +(signed byte/signed word~) signed_multiply_results_compare::$1 +(boolean~) signed_multiply_results_compare::$10 +(void~) signed_multiply_results_compare::$11 +(void~) signed_multiply_results_compare::$12 +(signed word~) signed_multiply_results_compare::$2 +(signed word~) signed_multiply_results_compare::$3 +(boolean~) signed_multiply_results_compare::$4 +(boolean~) signed_multiply_results_compare::$5 +(void~) signed_multiply_results_compare::$6 +(signed byte/signed word~) signed_multiply_results_compare::$7 +(boolean~) signed_multiply_results_compare::$8 +(signed byte/signed word~) signed_multiply_results_compare::$9 +(label) signed_multiply_results_compare::@1 +(label) signed_multiply_results_compare::@2 +(label) signed_multiply_results_compare::@3 +(label) signed_multiply_results_compare::@return +(signed byte) signed_multiply_results_compare::a +(signed byte) signed_multiply_results_compare::b +(signed word) signed_multiply_results_compare::ma +(signed word) signed_multiply_results_compare::ms (word()) slow_multiply((byte) slow_multiply::a , (byte) slow_multiply::b) (boolean~) slow_multiply::$0 (boolean~) slow_multiply::$1 @@ -660,7 +988,30 @@ SYMBOLS (byte) slow_multiply::i (word) slow_multiply::m (word) slow_multiply::return +(signed word()) slow_signed_multiply((signed byte) slow_signed_multiply::a , (signed byte) slow_signed_multiply::b) +(boolean~) slow_signed_multiply::$0 +(boolean~) slow_signed_multiply::$1 +(signed word~) slow_signed_multiply::$2 +(boolean~) slow_signed_multiply::$3 +(boolean~) slow_signed_multiply::$4 +(boolean~) slow_signed_multiply::$5 +(signed word~) slow_signed_multiply::$6 +(boolean~) slow_signed_multiply::$7 +(label) slow_signed_multiply::@1 +(label) slow_signed_multiply::@2 +(label) slow_signed_multiply::@3 +(label) slow_signed_multiply::@4 +(label) slow_signed_multiply::@5 +(label) slow_signed_multiply::@return +(signed byte) slow_signed_multiply::a +(signed byte) slow_signed_multiply::b +(signed byte) slow_signed_multiply::i +(signed byte) slow_signed_multiply::j +(signed word) slow_signed_multiply::m +(signed word) slow_signed_multiply::return +Fixing lo/hi-lvalue with new tmpVar signed_multiply::$16 signed_multiply::$16 ← signed_multiply::$8 +Fixing lo/hi-lvalue with new tmpVar signed_multiply::$17 signed_multiply::$17 ← signed_multiply::$14 Promoting word/signed word to byte* in line_cursor ← ((byte*)) 1024 Promoting word/signed word to byte* in print_cls::sc ← ((byte*)) 1024 Promoting byte/word/signed word to byte* in multiply::memA ← ((byte*)) 254 @@ -712,6 +1063,44 @@ print_ln::@return: scope:[print_ln] from print_ln::@2 to:@return @2: scope:[] from @1 to:@3 +print_sword: scope:[print_sword] from + (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word) 0 + (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 + if((boolean~) print_sword::$1) goto print_sword::@1 + to:print_sword::@2 +print_sword::@1: scope:[print_sword] from print_sword print_sword::@2 + (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w + (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 + to:print_sword::@return +print_sword::@2: scope:[print_sword] from print_sword + (void~) print_sword::$2 ← call print_char (byte) '-' + (signed word~) print_sword::$3 ← - (signed word) print_sword::w + (signed word) print_sword::w ← (signed word~) print_sword::$3 + to:print_sword::@1 +print_sword::@return: scope:[print_sword] from print_sword::@1 + return + to:@return +@3: scope:[] from @2 + to:@4 +print_sbyte: scope:[print_sbyte] from + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + to:print_sbyte::@2 +print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@2 + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b + (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 + to:print_sbyte::@return +print_sbyte::@2: scope:[print_sbyte] from print_sbyte + (void~) print_sbyte::$2 ← call print_char (byte) '-' + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b + (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3 + to:print_sbyte::@1 +print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 + return + to:@return +@4: scope:[] from @3 + to:@5 print_word: scope:[print_word] from (byte~) print_word::$0 ← > (word) print_word::w (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 @@ -721,10 +1110,10 @@ print_word: scope:[print_word] from print_word::@return: scope:[print_word] from print_word return to:@return -@3: scope:[] from @2 - to:@4 +@5: scope:[] from @4 + to:@6 print_byte: scope:[print_byte] from - (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } + (byte[]) print_byte::hextab ← (string) "0123456789abcdef" (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 @@ -733,8 +1122,8 @@ print_byte: scope:[print_byte] from print_byte::@return: scope:[print_byte] from print_byte return to:@return -@4: scope:[] from @3 - to:@5 +@6: scope:[] from @5 + to:@7 print_char: scope:[print_char] from *((byte*) char_cursor) ← (byte) print_char::ch (byte*) char_cursor ← ++ (byte*) char_cursor @@ -742,8 +1131,8 @@ print_char: scope:[print_char] from print_char::@return: scope:[print_char] from print_char return to:@return -@5: scope:[] from @4 - to:@6 +@7: scope:[] from @6 + to:@8 print_cls: scope:[print_cls] from (byte*) print_cls::sc ← ((byte*)) (word/signed word) 1024 to:print_cls::@1 @@ -759,12 +1148,12 @@ print_cls::@2: scope:[print_cls] from print_cls::@1 print_cls::@return: scope:[print_cls] from print_cls::@2 return to:@return -@6: scope:[] from @5 +@8: scope:[] from @7 (byte[512]) mul_sqr1_lo ← { fill( 512, 0) } (byte[512]) mul_sqr1_hi ← { fill( 512, 0) } (byte[512]) mul_sqr2_lo ← { fill( 512, 0) } (byte[512]) mul_sqr2_hi ← { fill( 512, 0) } - to:@7 + to:@9 init_multiply: scope:[init_multiply] from (word) init_multiply::sqr ← (byte/signed byte/word/signed word) 0 (byte) init_multiply::x_2 ← (byte/signed byte/word/signed word) 0 @@ -836,8 +1225,8 @@ init_multiply::@8: scope:[init_multiply] from init_multiply::@4 init_multiply::@return: scope:[init_multiply] from init_multiply::@8 return to:@return -@7: scope:[] from @6 - to:@8 +@9: scope:[] from @8 + to:@10 multiply: scope:[multiply] from (byte*) multiply::memA ← ((byte*)) (byte/word/signed word) 254 (byte*) multiply::memB ← ((byte*)) (byte/word/signed word) 255 @@ -852,9 +1241,51 @@ multiply::@return: scope:[multiply] from multiply multiply::@1 to:@return multiply::@1: scope:[multiply] from to:multiply::@return -@8: scope:[] from @7 +@10: scope:[] from @9 + to:@11 +signed_multiply: scope:[signed_multiply] from + (byte~) signed_multiply::$0 ← ((byte)) (signed byte) signed_multiply::a + (byte~) signed_multiply::$1 ← ((byte)) (signed byte) signed_multiply::b + (word~) signed_multiply::$2 ← call multiply (byte~) signed_multiply::$0 (byte~) signed_multiply::$1 + (word) signed_multiply::m ← (word~) signed_multiply::$2 + (boolean~) signed_multiply::$3 ← (signed byte) signed_multiply::a < (byte/signed byte/word/signed word) 0 + (boolean~) signed_multiply::$4 ← ! (boolean~) signed_multiply::$3 + if((boolean~) signed_multiply::$4) goto signed_multiply::@1 + to:signed_multiply::@3 +signed_multiply::@1: scope:[signed_multiply] from signed_multiply signed_multiply::@3 + (boolean~) signed_multiply::$9 ← (signed byte) signed_multiply::b < (byte/signed byte/word/signed word) 0 + (boolean~) signed_multiply::$10 ← ! (boolean~) signed_multiply::$9 + if((boolean~) signed_multiply::$10) goto signed_multiply::@2 + to:signed_multiply::@4 +signed_multiply::@3: scope:[signed_multiply] from signed_multiply + (byte~) signed_multiply::$5 ← > (word) signed_multiply::m + (byte~) signed_multiply::$6 ← > (word) signed_multiply::m + (byte~) signed_multiply::$7 ← ((byte)) (signed byte) signed_multiply::b + (byte/signed byte/word/signed word~) signed_multiply::$8 ← (byte~) signed_multiply::$6 - (byte~) signed_multiply::$7 + (byte/signed byte/word/signed word~) signed_multiply::$16 ← (byte/signed byte/word/signed word~) signed_multiply::$8 + (word) signed_multiply::m ← (word) signed_multiply::m hi= (byte/signed byte/word/signed word~) signed_multiply::$16 + to:signed_multiply::@1 +signed_multiply::@2: scope:[signed_multiply] from signed_multiply::@1 signed_multiply::@4 + (signed word~) signed_multiply::$15 ← ((signed word)) (word) signed_multiply::m + (signed word) signed_multiply::return ← (signed word~) signed_multiply::$15 + to:signed_multiply::@return +signed_multiply::@4: scope:[signed_multiply] from signed_multiply::@1 + (byte~) signed_multiply::$11 ← > (word) signed_multiply::m + (byte~) signed_multiply::$12 ← > (word) signed_multiply::m + (byte~) signed_multiply::$13 ← ((byte)) (signed byte) signed_multiply::a + (byte/signed byte/word/signed word~) signed_multiply::$14 ← (byte~) signed_multiply::$12 - (byte~) signed_multiply::$13 + (byte/signed byte/word/signed word~) signed_multiply::$17 ← (byte/signed byte/word/signed word~) signed_multiply::$14 + (word) signed_multiply::m ← (word) signed_multiply::m hi= (byte/signed byte/word/signed word~) signed_multiply::$17 + to:signed_multiply::@2 +signed_multiply::@return: scope:[signed_multiply] from signed_multiply::@2 signed_multiply::@5 + (signed word) signed_multiply::return ← (signed word) signed_multiply::return + return (signed word) signed_multiply::return + to:@return +signed_multiply::@5: scope:[signed_multiply] from + to:signed_multiply::@return +@11: scope:[] from @10 (byte*) BGCOL ← ((byte*)) (word) 53281 - to:@9 + to:@12 main: scope:[main] from *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 5 (void~) main::$0 ← call print_cls @@ -862,15 +1293,16 @@ main: scope:[main] from (void~) main::$2 ← call init_multiply_asm (void~) main::$3 ← call multiply_tables_compare (void~) main::$4 ← call multiply_results_compare + (void~) main::$5 ← call signed_multiply_results_compare to:main::@return main::@return: scope:[main] from main return to:@return -@9: scope:[] from @8 - to:@10 +@12: scope:[] from @11 + to:@13 slow_multiply: scope:[slow_multiply] from (word) slow_multiply::m ← (byte/signed byte/word/signed word) 0 - (boolean~) slow_multiply::$0 ← (byte) slow_multiply::a > (byte/signed byte/word/signed word) 0 + (boolean~) slow_multiply::$0 ← (byte) slow_multiply::a != (byte/signed byte/word/signed word) 0 (boolean~) slow_multiply::$1 ← ! (boolean~) slow_multiply::$0 if((boolean~) slow_multiply::$1) goto slow_multiply::@1 to:slow_multiply::@3 @@ -895,12 +1327,62 @@ slow_multiply::@return: scope:[slow_multiply] from slow_multiply::@1 slow_multi to:@return slow_multiply::@5: scope:[slow_multiply] from to:slow_multiply::@return -@10: scope:[] from @9 +@13: scope:[] from @12 + to:@14 +slow_signed_multiply: scope:[slow_signed_multiply] from + (signed word) slow_signed_multiply::m ← (byte/signed byte/word/signed word) 0 + (boolean~) slow_signed_multiply::$0 ← (signed byte) slow_signed_multiply::a < (byte/signed byte/word/signed word) 0 + (boolean~) slow_signed_multiply::$1 ← ! (boolean~) slow_signed_multiply::$0 + if((boolean~) slow_signed_multiply::$1) goto slow_signed_multiply::@1 + to:slow_signed_multiply::@6 +slow_signed_multiply::@1: scope:[slow_signed_multiply] from slow_signed_multiply slow_signed_multiply::@8 + (boolean~) slow_signed_multiply::$4 ← (signed byte) slow_signed_multiply::a > (byte/signed byte/word/signed word) 0 + (boolean~) slow_signed_multiply::$5 ← ! (boolean~) slow_signed_multiply::$4 + if((boolean~) slow_signed_multiply::$5) goto slow_signed_multiply::@4 + to:slow_signed_multiply::@9 +slow_signed_multiply::@6: scope:[slow_signed_multiply] from slow_signed_multiply + (signed byte) slow_signed_multiply::i ← (byte/signed byte/word/signed word) 0 + to:slow_signed_multiply::@2 +slow_signed_multiply::@2: scope:[slow_signed_multiply] from slow_signed_multiply::@2 slow_signed_multiply::@6 + (signed word~) slow_signed_multiply::$2 ← (signed word) slow_signed_multiply::m - (signed byte) slow_signed_multiply::b + (signed word) slow_signed_multiply::m ← (signed word~) slow_signed_multiply::$2 + (signed byte) slow_signed_multiply::i ← -- (signed byte) slow_signed_multiply::i + (boolean~) slow_signed_multiply::$3 ← (signed byte) slow_signed_multiply::i != (signed byte) slow_signed_multiply::a + if((boolean~) slow_signed_multiply::$3) goto slow_signed_multiply::@2 + to:slow_signed_multiply::@7 +slow_signed_multiply::@7: scope:[slow_signed_multiply] from slow_signed_multiply::@2 + to:slow_signed_multiply::@3 +slow_signed_multiply::@3: scope:[slow_signed_multiply] from slow_signed_multiply::@4 slow_signed_multiply::@7 + (signed word) slow_signed_multiply::return ← (signed word) slow_signed_multiply::m + to:slow_signed_multiply::@return +slow_signed_multiply::@8: scope:[slow_signed_multiply] from + to:slow_signed_multiply::@1 +slow_signed_multiply::@4: scope:[slow_signed_multiply] from slow_signed_multiply::@1 slow_signed_multiply::@10 + to:slow_signed_multiply::@3 +slow_signed_multiply::@9: scope:[slow_signed_multiply] from slow_signed_multiply::@1 + (signed byte) slow_signed_multiply::j ← (byte/signed byte/word/signed word) 0 + to:slow_signed_multiply::@5 +slow_signed_multiply::@5: scope:[slow_signed_multiply] from slow_signed_multiply::@5 slow_signed_multiply::@9 + (signed word~) slow_signed_multiply::$6 ← (signed word) slow_signed_multiply::m + (signed byte) slow_signed_multiply::b + (signed word) slow_signed_multiply::m ← (signed word~) slow_signed_multiply::$6 + (signed byte) slow_signed_multiply::j ← ++ (signed byte) slow_signed_multiply::j + (boolean~) slow_signed_multiply::$7 ← (signed byte) slow_signed_multiply::j != (signed byte) slow_signed_multiply::a + if((boolean~) slow_signed_multiply::$7) goto slow_signed_multiply::@5 + to:slow_signed_multiply::@10 +slow_signed_multiply::@10: scope:[slow_signed_multiply] from slow_signed_multiply::@5 + to:slow_signed_multiply::@4 +slow_signed_multiply::@return: scope:[slow_signed_multiply] from slow_signed_multiply::@11 slow_signed_multiply::@3 + (signed word) slow_signed_multiply::return ← (signed word) slow_signed_multiply::return + return (signed word) slow_signed_multiply::return + to:@return +slow_signed_multiply::@11: scope:[slow_signed_multiply] from + to:slow_signed_multiply::@return +@14: scope:[] from @13 (byte[512]) asm_mul_sqr1_lo ← { fill( 512, 0) } (byte[512]) asm_mul_sqr1_hi ← { fill( 512, 0) } (byte[512]) asm_mul_sqr2_lo ← { fill( 512, 0) } (byte[512]) asm_mul_sqr2_hi ← { fill( 512, 0) } - to:@11 + to:@15 init_multiply_asm: scope:[init_multiply_asm] from asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } (byte*) init_multiply_asm::mem ← ((byte*)) (byte/word/signed word) 255 @@ -912,8 +1394,8 @@ init_multiply_asm: scope:[init_multiply_asm] from init_multiply_asm::@return: scope:[init_multiply_asm] from init_multiply_asm return to:@return -@11: scope:[] from @10 - to:@12 +@15: scope:[] from @14 + to:@16 multiply_tables_compare: scope:[multiply_tables_compare] from (byte*) multiply_tables_compare::asm_sqr ← (byte[512]) asm_mul_sqr1_lo (byte*) multiply_tables_compare::kc_sqr ← (byte[512]) mul_sqr1_lo @@ -949,8 +1431,8 @@ multiply_tables_compare::@5: scope:[multiply_tables_compare] from multiply_tabl (void~) multiply_tables_compare::$11 ← call print_str (string) "multiply tables match!@" (void~) multiply_tables_compare::$12 ← call print_ln to:multiply_tables_compare::@return -@12: scope:[] from @11 - to:@13 +@16: scope:[] from @15 + to:@17 multiply_results_compare: scope:[multiply_results_compare] from (byte) multiply_results_compare::a ← (byte/signed byte/word/signed word) 0 to:multiply_results_compare::@1 @@ -968,15 +1450,12 @@ multiply_results_compare::@2: scope:[multiply_results_compare] from multiply_re to:multiply_results_compare::@4 multiply_results_compare::@3: scope:[multiply_results_compare] from multiply_results_compare::@2 multiply_results_compare::@5 (byte) multiply_results_compare::b ← ++ (byte) multiply_results_compare::b - (boolean~) multiply_results_compare::$8 ← (byte) multiply_results_compare::b != (byte/signed byte/word/signed word) 0 - if((boolean~) multiply_results_compare::$8) goto multiply_results_compare::@2 + (boolean~) multiply_results_compare::$5 ← (byte) multiply_results_compare::b != (byte/signed byte/word/signed word) 0 + if((boolean~) multiply_results_compare::$5) goto multiply_results_compare::@2 to:multiply_results_compare::@6 multiply_results_compare::@4: scope:[multiply_results_compare] from multiply_results_compare::@2 *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 2 - (void~) multiply_results_compare::$4 ← call print_str (string) "multiply mismatch slow:@" - (void~) multiply_results_compare::$5 ← call print_word (word) multiply_results_compare::ms - (void~) multiply_results_compare::$6 ← call print_str (string) " / fast asm:" - (void~) multiply_results_compare::$7 ← call print_word (word) multiply_results_compare::ma + (void~) multiply_results_compare::$4 ← call multiply_error (byte) multiply_results_compare::a (byte) multiply_results_compare::b (word) multiply_results_compare::ms (word) multiply_results_compare::ma to:multiply_results_compare::@return multiply_results_compare::@return: scope:[multiply_results_compare] from multiply_results_compare::@4 multiply_results_compare::@7 return @@ -985,27 +1464,110 @@ multiply_results_compare::@5: scope:[multiply_results_compare] from to:multiply_results_compare::@3 multiply_results_compare::@6: scope:[multiply_results_compare] from multiply_results_compare::@3 (byte) multiply_results_compare::a ← ++ (byte) multiply_results_compare::a - (boolean~) multiply_results_compare::$9 ← (byte) multiply_results_compare::a != (byte/signed byte/word/signed word) 0 - if((boolean~) multiply_results_compare::$9) goto multiply_results_compare::@1 + (boolean~) multiply_results_compare::$6 ← (byte) multiply_results_compare::a != (byte/signed byte/word/signed word) 0 + if((boolean~) multiply_results_compare::$6) goto multiply_results_compare::@1 to:multiply_results_compare::@7 multiply_results_compare::@7: scope:[multiply_results_compare] from multiply_results_compare::@6 - (void~) multiply_results_compare::$10 ← call print_str (string) "multiply results match!@" - (void~) multiply_results_compare::$11 ← call print_ln + (void~) multiply_results_compare::$7 ← call print_str (string) "multiply results match!@" + (void~) multiply_results_compare::$8 ← call print_ln to:multiply_results_compare::@return -@13: scope:[] from @12 +@17: scope:[] from @16 + to:@18 +multiply_error: scope:[multiply_error] from + (void~) multiply_error::$0 ← call print_str (string) "multiply mismatch @" + (void~) multiply_error::$1 ← call print_byte (byte) multiply_error::a + (void~) multiply_error::$2 ← call print_str (string) "*@" + (void~) multiply_error::$3 ← call print_byte (byte) multiply_error::b + (void~) multiply_error::$4 ← call print_str (string) " slow:@" + (void~) multiply_error::$5 ← call print_word (word) multiply_error::ms + (void~) multiply_error::$6 ← call print_str (string) " / fast asm:@" + (void~) multiply_error::$7 ← call print_word (word) multiply_error::ma + (void~) multiply_error::$8 ← call print_ln + to:multiply_error::@return +multiply_error::@return: scope:[multiply_error] from multiply_error + return + to:@return +@18: scope:[] from @17 + to:@19 +signed_multiply_results_compare: scope:[signed_multiply_results_compare] from + (signed byte/signed word~) signed_multiply_results_compare::$0 ← - (byte/word/signed word) 128 + (signed byte) signed_multiply_results_compare::a ← (signed byte/signed word~) signed_multiply_results_compare::$0 + to:signed_multiply_results_compare::@1 +signed_multiply_results_compare::@1: scope:[signed_multiply_results_compare] from signed_multiply_results_compare signed_multiply_results_compare::@6 + (signed byte/signed word~) signed_multiply_results_compare::$1 ← - (byte/word/signed word) 128 + (signed byte) signed_multiply_results_compare::b ← (signed byte/signed word~) signed_multiply_results_compare::$1 + to:signed_multiply_results_compare::@2 +signed_multiply_results_compare::@2: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@1 signed_multiply_results_compare::@3 + (signed word~) signed_multiply_results_compare::$2 ← call slow_signed_multiply (signed byte) signed_multiply_results_compare::a (signed byte) signed_multiply_results_compare::b + (signed word) signed_multiply_results_compare::ms ← (signed word~) signed_multiply_results_compare::$2 + (signed word~) signed_multiply_results_compare::$3 ← call signed_multiply (signed byte) signed_multiply_results_compare::a (signed byte) signed_multiply_results_compare::b + (signed word) signed_multiply_results_compare::ma ← (signed word~) signed_multiply_results_compare::$3 + (boolean~) signed_multiply_results_compare::$4 ← (signed word) signed_multiply_results_compare::ms != (signed word) signed_multiply_results_compare::ma + (boolean~) signed_multiply_results_compare::$5 ← ! (boolean~) signed_multiply_results_compare::$4 + if((boolean~) signed_multiply_results_compare::$5) goto signed_multiply_results_compare::@3 + to:signed_multiply_results_compare::@4 +signed_multiply_results_compare::@3: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@2 signed_multiply_results_compare::@5 + (signed byte) signed_multiply_results_compare::b ← ++ (signed byte) signed_multiply_results_compare::b + (signed byte/signed word~) signed_multiply_results_compare::$7 ← - (byte/word/signed word) 128 + (boolean~) signed_multiply_results_compare::$8 ← (signed byte) signed_multiply_results_compare::b != (signed byte/signed word~) signed_multiply_results_compare::$7 + if((boolean~) signed_multiply_results_compare::$8) goto signed_multiply_results_compare::@2 + to:signed_multiply_results_compare::@6 +signed_multiply_results_compare::@4: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@2 + *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 2 + (void~) signed_multiply_results_compare::$6 ← call signed_multiply_error (signed byte) signed_multiply_results_compare::a (signed byte) signed_multiply_results_compare::b (signed word) signed_multiply_results_compare::ms (signed word) signed_multiply_results_compare::ma + to:signed_multiply_results_compare::@return +signed_multiply_results_compare::@return: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@4 signed_multiply_results_compare::@7 + return + to:@return +signed_multiply_results_compare::@5: scope:[signed_multiply_results_compare] from + to:signed_multiply_results_compare::@3 +signed_multiply_results_compare::@6: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@3 + (signed byte) signed_multiply_results_compare::a ← ++ (signed byte) signed_multiply_results_compare::a + (signed byte/signed word~) signed_multiply_results_compare::$9 ← - (byte/word/signed word) 128 + (boolean~) signed_multiply_results_compare::$10 ← (signed byte) signed_multiply_results_compare::a != (signed byte/signed word~) signed_multiply_results_compare::$9 + if((boolean~) signed_multiply_results_compare::$10) goto signed_multiply_results_compare::@1 + to:signed_multiply_results_compare::@7 +signed_multiply_results_compare::@7: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@6 + (void~) signed_multiply_results_compare::$11 ← call print_str (string) "signed multiply results match!@" + (void~) signed_multiply_results_compare::$12 ← call print_ln + to:signed_multiply_results_compare::@return +@19: scope:[] from @18 + to:@20 +signed_multiply_error: scope:[signed_multiply_error] from + (void~) signed_multiply_error::$0 ← call print_str (string) "signed multiply mismatch @" + (void~) signed_multiply_error::$1 ← call print_sbyte (signed byte) signed_multiply_error::a + (void~) signed_multiply_error::$2 ← call print_str (string) "*@" + (void~) signed_multiply_error::$3 ← call print_sbyte (signed byte) signed_multiply_error::b + (void~) signed_multiply_error::$4 ← call print_str (string) " slow:@" + (void~) signed_multiply_error::$5 ← call print_sword (signed word) signed_multiply_error::ms + (void~) signed_multiply_error::$6 ← call print_str (string) " / fast asm:@" + (void~) signed_multiply_error::$7 ← call print_sword (signed word) signed_multiply_error::ma + (void~) signed_multiply_error::$8 ← call print_ln + to:signed_multiply_error::@return +signed_multiply_error::@return: scope:[signed_multiply_error] from signed_multiply_error + return + to:@return +@20: scope:[] from @19 call main to:@end -@end: scope:[] from @13 +@end: scope:[] from @20 +Eliminating unused variable - keeping the call (void~) print_sword::$5 +Eliminating unused variable - keeping the call (void~) print_sword::$2 +Eliminating unused variable - keeping the call (void~) print_sbyte::$5 +Eliminating unused variable - keeping the call (void~) print_sbyte::$2 Eliminating unused variable - keeping the call (void~) print_word::$1 Eliminating unused variable - keeping the call (void~) print_word::$3 Eliminating unused variable - keeping the call (void~) print_byte::$1 Eliminating unused variable - keeping the call (void~) print_byte::$3 +Eliminating unused variable (byte~) signed_multiply::$5 and assignment [126] (byte~) signed_multiply::$5 ← > (word) signed_multiply::m +Eliminating unused variable (byte~) signed_multiply::$11 and assignment [134] (byte~) signed_multiply::$11 ← > (word) signed_multiply::m Eliminating unused variable - keeping the call (void~) main::$0 Eliminating unused variable - keeping the call (void~) main::$1 Eliminating unused variable - keeping the call (void~) main::$2 Eliminating unused variable - keeping the call (void~) main::$3 Eliminating unused variable - keeping the call (void~) main::$4 +Eliminating unused variable - keeping the call (void~) main::$5 Eliminating unused variable - keeping the call (void~) multiply_tables_compare::$2 Eliminating unused variable - keeping the call (void~) multiply_tables_compare::$4 Eliminating unused variable - keeping the call (void~) multiply_tables_compare::$5 @@ -1013,17 +1575,43 @@ Eliminating unused variable - keeping the call (void~) multiply_tables_compare:: Eliminating unused variable - keeping the call (void~) multiply_tables_compare::$11 Eliminating unused variable - keeping the call (void~) multiply_tables_compare::$12 Eliminating unused variable - keeping the call (void~) multiply_results_compare::$4 -Eliminating unused variable - keeping the call (void~) multiply_results_compare::$5 -Eliminating unused variable - keeping the call (void~) multiply_results_compare::$6 Eliminating unused variable - keeping the call (void~) multiply_results_compare::$7 -Eliminating unused variable - keeping the call (void~) multiply_results_compare::$10 -Eliminating unused variable - keeping the call (void~) multiply_results_compare::$11 +Eliminating unused variable - keeping the call (void~) multiply_results_compare::$8 +Eliminating unused variable - keeping the call (void~) multiply_error::$0 +Eliminating unused variable - keeping the call (void~) multiply_error::$1 +Eliminating unused variable - keeping the call (void~) multiply_error::$2 +Eliminating unused variable - keeping the call (void~) multiply_error::$3 +Eliminating unused variable - keeping the call (void~) multiply_error::$4 +Eliminating unused variable - keeping the call (void~) multiply_error::$5 +Eliminating unused variable - keeping the call (void~) multiply_error::$6 +Eliminating unused variable - keeping the call (void~) multiply_error::$7 +Eliminating unused variable - keeping the call (void~) multiply_error::$8 +Eliminating unused variable - keeping the call (void~) signed_multiply_results_compare::$6 +Eliminating unused variable - keeping the call (void~) signed_multiply_results_compare::$11 +Eliminating unused variable - keeping the call (void~) signed_multiply_results_compare::$12 +Eliminating unused variable - keeping the call (void~) signed_multiply_error::$0 +Eliminating unused variable - keeping the call (void~) signed_multiply_error::$1 +Eliminating unused variable - keeping the call (void~) signed_multiply_error::$2 +Eliminating unused variable - keeping the call (void~) signed_multiply_error::$3 +Eliminating unused variable - keeping the call (void~) signed_multiply_error::$4 +Eliminating unused variable - keeping the call (void~) signed_multiply_error::$5 +Eliminating unused variable - keeping the call (void~) signed_multiply_error::$6 +Eliminating unused variable - keeping the call (void~) signed_multiply_error::$7 +Eliminating unused variable - keeping the call (void~) signed_multiply_error::$8 +Creating constant string variable for inline (const string) print_byte::$4 "0123456789abcdef" Creating constant string variable for inline (const string) multiply_tables_compare::str "multiply table mismatch at @" Creating constant string variable for inline (const string) multiply_tables_compare::str1 " / @" Creating constant string variable for inline (const string) multiply_tables_compare::str2 "multiply tables match!@" -Creating constant string variable for inline (const string) multiply_results_compare::str "multiply mismatch slow:@" -Creating constant string variable for inline (const string) multiply_results_compare::str1 " / fast asm:" -Creating constant string variable for inline (const string) multiply_results_compare::str2 "multiply results match!@" +Creating constant string variable for inline (const string) multiply_results_compare::str "multiply results match!@" +Creating constant string variable for inline (const string) multiply_error::str "multiply mismatch @" +Creating constant string variable for inline (const string) multiply_error::str1 "*@" +Creating constant string variable for inline (const string) multiply_error::str2 " slow:@" +Creating constant string variable for inline (const string) multiply_error::str3 " / fast asm:@" +Creating constant string variable for inline (const string) signed_multiply_results_compare::str "signed multiply results match!@" +Creating constant string variable for inline (const string) signed_multiply_error::str "signed multiply mismatch @" +Creating constant string variable for inline (const string) signed_multiply_error::str1 "*@" +Creating constant string variable for inline (const string) signed_multiply_error::str2 " slow:@" +Creating constant string variable for inline (const string) signed_multiply_error::str3 " / fast asm:@" Removing empty block print_str::@4 Removing empty block print_str::@3 Removing empty block print_str::@5 @@ -1033,20 +1621,35 @@ Removing empty block @2 Removing empty block @3 Removing empty block @4 Removing empty block @5 -Removing empty block print_cls::@2 +Removing empty block @6 Removing empty block @7 -Removing empty block multiply::@1 +Removing empty block print_cls::@2 Removing empty block @9 +Removing empty block multiply::@1 +Removing empty block @10 +Removing empty block signed_multiply::@5 +Removing empty block @12 Removing empty block slow_multiply::@4 Removing empty block slow_multiply::@5 -Removing empty block @11 +Removing empty block @13 +Removing empty block slow_signed_multiply::@7 +Removing empty block slow_signed_multiply::@8 +Removing empty block slow_signed_multiply::@10 +Removing empty block slow_signed_multiply::@11 +Removing empty block @15 Removing empty block multiply_tables_compare::@4 -Removing empty block @12 +Removing empty block @16 Removing empty block multiply_results_compare::@5 +Removing empty block @17 +Removing empty block @18 +Removing empty block signed_multiply_results_compare::@5 +Removing empty block @19 PROCEDURE MODIFY VARIABLE ANALYSIS print_str modifies char_cursor print_ln modifies line_cursor print_ln modifies char_cursor +print_sword modifies char_cursor +print_sbyte modifies char_cursor print_word modifies char_cursor print_byte modifies char_cursor print_char modifies char_cursor @@ -1056,6 +1659,12 @@ multiply_tables_compare modifies char_cursor multiply_tables_compare modifies line_cursor multiply_results_compare modifies char_cursor multiply_results_compare modifies line_cursor +multiply_error modifies char_cursor +multiply_error modifies line_cursor +signed_multiply_results_compare modifies char_cursor +signed_multiply_results_compare modifies line_cursor +signed_multiply_error modifies char_cursor +signed_multiply_error modifies line_cursor Completing Phi functions... Completing Phi functions... @@ -1072,110 +1681,182 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from (byte*) line_cursor#0 ← ((byte*)) (word/signed word) 1024 (byte*) char_cursor#0 ← (byte*) line_cursor#0 - to:@6 -print_str: scope:[print_str] from multiply_results_compare::@11 multiply_results_compare::@4 multiply_results_compare::@7 multiply_tables_compare::@3 multiply_tables_compare::@5 multiply_tables_compare::@7 - (byte*) char_cursor#71 ← phi( multiply_results_compare::@11/(byte*) char_cursor#24 multiply_results_compare::@4/(byte*) char_cursor#68 multiply_results_compare::@7/(byte*) char_cursor#69 multiply_tables_compare::@3/(byte*) char_cursor#66 multiply_tables_compare::@5/(byte*) char_cursor#67 multiply_tables_compare::@7/(byte*) char_cursor#17 ) - (byte*) print_str::str#9 ← phi( multiply_results_compare::@11/(byte*) print_str::str#5 multiply_results_compare::@4/(byte*) print_str::str#4 multiply_results_compare::@7/(byte*) print_str::str#6 multiply_tables_compare::@3/(byte*) print_str::str#1 multiply_tables_compare::@5/(byte*) print_str::str#3 multiply_tables_compare::@7/(byte*) print_str::str#2 ) + to:@8 +print_str: scope:[print_str] from multiply_error multiply_error::@2 multiply_error::@4 multiply_error::@6 multiply_results_compare::@7 multiply_tables_compare::@3 multiply_tables_compare::@5 multiply_tables_compare::@7 signed_multiply_error signed_multiply_error::@2 signed_multiply_error::@4 signed_multiply_error::@6 signed_multiply_results_compare::@7 + (byte*) char_cursor#135 ← phi( multiply_error/(byte*) char_cursor#130 multiply_error::@2/(byte*) char_cursor#35 multiply_error::@4/(byte*) char_cursor#37 multiply_error::@6/(byte*) char_cursor#39 multiply_results_compare::@7/(byte*) char_cursor#129 multiply_tables_compare::@3/(byte*) char_cursor#126 multiply_tables_compare::@5/(byte*) char_cursor#127 multiply_tables_compare::@7/(byte*) char_cursor#24 signed_multiply_error/(byte*) char_cursor#133 signed_multiply_error::@2/(byte*) char_cursor#49 signed_multiply_error::@4/(byte*) char_cursor#51 signed_multiply_error::@6/(byte*) char_cursor#53 signed_multiply_results_compare::@7/(byte*) char_cursor#132 ) + (byte*) print_str::str#16 ← phi( multiply_error/(byte*) print_str::str#5 multiply_error::@2/(byte*) print_str::str#6 multiply_error::@4/(byte*) print_str::str#7 multiply_error::@6/(byte*) print_str::str#8 multiply_results_compare::@7/(byte*) print_str::str#4 multiply_tables_compare::@3/(byte*) print_str::str#1 multiply_tables_compare::@5/(byte*) print_str::str#3 multiply_tables_compare::@7/(byte*) print_str::str#2 signed_multiply_error/(byte*) print_str::str#10 signed_multiply_error::@2/(byte*) print_str::str#11 signed_multiply_error::@4/(byte*) print_str::str#12 signed_multiply_error::@6/(byte*) print_str::str#13 signed_multiply_results_compare::@7/(byte*) print_str::str#9 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - (byte*) char_cursor#61 ← phi( print_str/(byte*) char_cursor#71 print_str::@2/(byte*) char_cursor#1 ) - (byte*) print_str::str#7 ← phi( print_str/(byte*) print_str::str#9 print_str::@2/(byte*) print_str::str#0 ) - (boolean~) print_str::$0 ← *((byte*) print_str::str#7) != (byte) '@' + (byte*) char_cursor#117 ← phi( print_str/(byte*) char_cursor#135 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#14 ← phi( print_str/(byte*) print_str::str#16 print_str::@2/(byte*) print_str::str#0 ) + (boolean~) print_str::$0 ← *((byte*) print_str::str#14) != (byte) '@' if((boolean~) print_str::$0) goto print_str::@2 to:print_str::@return print_str::@2: scope:[print_str] from print_str::@1 - (byte*) char_cursor#31 ← phi( print_str::@1/(byte*) char_cursor#61 ) - (byte*) print_str::str#8 ← phi( print_str::@1/(byte*) print_str::str#7 ) - *((byte*) char_cursor#31) ← *((byte*) print_str::str#8) - (byte*) char_cursor#1 ← ++ (byte*) char_cursor#31 - (byte*) print_str::str#0 ← ++ (byte*) print_str::str#8 + (byte*) char_cursor#59 ← phi( print_str::@1/(byte*) char_cursor#117 ) + (byte*) print_str::str#15 ← phi( print_str::@1/(byte*) print_str::str#14 ) + *((byte*) char_cursor#59) ← *((byte*) print_str::str#15) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#59 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#15 to:print_str::@1 print_str::@return: scope:[print_str] from print_str::@1 - (byte*) char_cursor#32 ← phi( print_str::@1/(byte*) char_cursor#61 ) - (byte*) char_cursor#2 ← (byte*) char_cursor#32 + (byte*) char_cursor#60 ← phi( print_str::@1/(byte*) char_cursor#117 ) + (byte*) char_cursor#2 ← (byte*) char_cursor#60 return to:@return -print_ln: scope:[print_ln] from multiply_results_compare::@14 multiply_tables_compare::@10 - (byte*) char_cursor#62 ← phi( multiply_results_compare::@14/(byte*) char_cursor#28 multiply_tables_compare::@10/(byte*) char_cursor#21 ) - (byte*) line_cursor#22 ← phi( multiply_results_compare::@14/(byte*) line_cursor#27 multiply_tables_compare::@10/(byte*) line_cursor#25 ) +print_ln: scope:[print_ln] from multiply_error::@8 multiply_results_compare::@11 multiply_tables_compare::@10 signed_multiply_error::@8 signed_multiply_results_compare::@11 + (byte*) char_cursor#118 ← phi( multiply_error::@8/(byte*) char_cursor#41 multiply_results_compare::@11/(byte*) char_cursor#32 multiply_tables_compare::@10/(byte*) char_cursor#28 signed_multiply_error::@8/(byte*) char_cursor#55 signed_multiply_results_compare::@11/(byte*) char_cursor#46 ) + (byte*) line_cursor#40 ← phi( multiply_error::@8/(byte*) line_cursor#46 multiply_results_compare::@11/(byte*) line_cursor#45 multiply_tables_compare::@10/(byte*) line_cursor#43 signed_multiply_error::@8/(byte*) line_cursor#49 signed_multiply_results_compare::@11/(byte*) line_cursor#48 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - (byte*) char_cursor#33 ← phi( print_ln/(byte*) char_cursor#62 print_ln::@1/(byte*) char_cursor#33 ) - (byte*) line_cursor#11 ← phi( print_ln/(byte*) line_cursor#22 print_ln::@1/(byte*) line_cursor#1 ) - (byte*~) print_ln::$0 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word) 40 + (byte*) char_cursor#61 ← phi( print_ln/(byte*) char_cursor#118 print_ln::@1/(byte*) char_cursor#61 ) + (byte*) line_cursor#20 ← phi( print_ln/(byte*) line_cursor#40 print_ln::@1/(byte*) line_cursor#1 ) + (byte*~) print_ln::$0 ← (byte*) line_cursor#20 + (byte/signed byte/word/signed word) 40 (byte*) line_cursor#1 ← (byte*~) print_ln::$0 - (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#33 + (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#61 if((boolean~) print_ln::$1) goto print_ln::@1 to:print_ln::@2 print_ln::@2: scope:[print_ln] from print_ln::@1 - (byte*) line_cursor#12 ← phi( print_ln::@1/(byte*) line_cursor#1 ) - (byte*) char_cursor#3 ← (byte*) line_cursor#12 + (byte*) line_cursor#21 ← phi( print_ln::@1/(byte*) line_cursor#1 ) + (byte*) char_cursor#3 ← (byte*) line_cursor#21 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@2 - (byte*) char_cursor#34 ← phi( print_ln::@2/(byte*) char_cursor#3 ) - (byte*) line_cursor#13 ← phi( print_ln::@2/(byte*) line_cursor#12 ) - (byte*) line_cursor#2 ← (byte*) line_cursor#13 - (byte*) char_cursor#4 ← (byte*) char_cursor#34 + (byte*) char_cursor#62 ← phi( print_ln::@2/(byte*) char_cursor#3 ) + (byte*) line_cursor#22 ← phi( print_ln::@2/(byte*) line_cursor#21 ) + (byte*) line_cursor#2 ← (byte*) line_cursor#22 + (byte*) char_cursor#4 ← (byte*) char_cursor#62 return to:@return -print_word: scope:[print_word] from multiply_results_compare::@10 multiply_results_compare::@12 multiply_tables_compare::@6 multiply_tables_compare::@8 - (byte*) char_cursor#63 ← phi( multiply_results_compare::@10/(byte*) char_cursor#23 multiply_results_compare::@12/(byte*) char_cursor#25 multiply_tables_compare::@6/(byte*) char_cursor#16 multiply_tables_compare::@8/(byte*) char_cursor#18 ) - (word) print_word::w#4 ← phi( multiply_results_compare::@10/(word) print_word::w#2 multiply_results_compare::@12/(word) print_word::w#3 multiply_tables_compare::@6/(word) print_word::w#0 multiply_tables_compare::@8/(word) print_word::w#1 ) - (byte~) print_word::$0 ← > (word) print_word::w#4 - (byte) print_byte::b#0 ← (byte~) print_word::$0 +print_sword: scope:[print_sword] from signed_multiply_error::@5 signed_multiply_error::@7 + (byte*) char_cursor#136 ← phi( signed_multiply_error::@5/(byte*) char_cursor#52 signed_multiply_error::@7/(byte*) char_cursor#54 ) + (signed word) print_sword::w#3 ← phi( signed_multiply_error::@5/(signed word) print_sword::w#1 signed_multiply_error::@7/(signed word) print_sword::w#2 ) + (boolean~) print_sword::$0 ← (signed word) print_sword::w#3 < (byte/signed byte/word/signed word) 0 + (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 + if((boolean~) print_sword::$1) goto print_sword::@1 + to:print_sword::@2 +print_sword::@1: scope:[print_sword] from print_sword print_sword::@4 + (byte*) char_cursor#119 ← phi( print_sword/(byte*) char_cursor#136 print_sword::@4/(byte*) char_cursor#6 ) + (signed word) print_sword::w#4 ← phi( print_sword/(signed word) print_sword::w#3 print_sword::@4/(signed word) print_sword::w#0 ) + (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w#4 + (word) print_word::w#0 ← (word~) print_sword::$4 + call print_word param-assignment + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword::@1 + (byte*) char_cursor#63 ← phi( print_sword::@1/(byte*) char_cursor#13 ) + (byte*) char_cursor#5 ← (byte*) char_cursor#63 + to:print_sword::@return +print_sword::@2: scope:[print_sword] from print_sword + (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#3 ) + (byte*) char_cursor#120 ← phi( print_sword/(byte*) char_cursor#136 ) + (byte) print_char::ch#0 ← (byte) '-' + call print_char param-assignment + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@2 + (signed word) print_sword::w#5 ← phi( print_sword::@2/(signed word) print_sword::w#6 ) + (byte*) char_cursor#64 ← phi( print_sword::@2/(byte*) char_cursor#18 ) + (byte*) char_cursor#6 ← (byte*) char_cursor#64 + (signed word~) print_sword::$3 ← - (signed word) print_sword::w#5 + (signed word) print_sword::w#0 ← (signed word~) print_sword::$3 + to:print_sword::@1 +print_sword::@return: scope:[print_sword] from print_sword::@3 + (byte*) char_cursor#65 ← phi( print_sword::@3/(byte*) char_cursor#5 ) + (byte*) char_cursor#7 ← (byte*) char_cursor#65 + return + to:@return +print_sbyte: scope:[print_sbyte] from signed_multiply_error::@1 signed_multiply_error::@3 + (byte*) char_cursor#137 ← phi( signed_multiply_error::@1/(byte*) char_cursor#48 signed_multiply_error::@3/(byte*) char_cursor#50 ) + (signed byte) print_sbyte::b#3 ← phi( signed_multiply_error::@1/(signed byte) print_sbyte::b#1 signed_multiply_error::@3/(signed byte) print_sbyte::b#2 ) + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b#3 < (byte/signed byte/word/signed word) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + to:print_sbyte::@2 +print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@4 + (byte*) char_cursor#121 ← phi( print_sbyte/(byte*) char_cursor#137 print_sbyte::@4/(byte*) char_cursor#9 ) + (signed byte) print_sbyte::b#4 ← phi( print_sbyte/(signed byte) print_sbyte::b#3 print_sbyte::@4/(signed byte) print_sbyte::b#0 ) + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b#4 + (byte) print_byte::b#0 ← (byte~) print_sbyte::$4 + call print_byte param-assignment + to:print_sbyte::@3 +print_sbyte::@3: scope:[print_sbyte] from print_sbyte::@1 + (byte*) char_cursor#66 ← phi( print_sbyte::@1/(byte*) char_cursor#16 ) + (byte*) char_cursor#8 ← (byte*) char_cursor#66 + to:print_sbyte::@return +print_sbyte::@2: scope:[print_sbyte] from print_sbyte + (signed byte) print_sbyte::b#6 ← phi( print_sbyte/(signed byte) print_sbyte::b#3 ) + (byte*) char_cursor#122 ← phi( print_sbyte/(byte*) char_cursor#137 ) + (byte) print_char::ch#1 ← (byte) '-' + call print_char param-assignment + to:print_sbyte::@4 +print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@2 + (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@2/(signed byte) print_sbyte::b#6 ) + (byte*) char_cursor#67 ← phi( print_sbyte::@2/(byte*) char_cursor#18 ) + (byte*) char_cursor#9 ← (byte*) char_cursor#67 + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b#5 + (signed byte) print_sbyte::b#0 ← (signed byte~) print_sbyte::$3 + to:print_sbyte::@1 +print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@3 + (byte*) char_cursor#68 ← phi( print_sbyte::@3/(byte*) char_cursor#8 ) + (byte*) char_cursor#10 ← (byte*) char_cursor#68 + return + to:@return +print_word: scope:[print_word] from multiply_error::@5 multiply_error::@7 multiply_tables_compare::@6 multiply_tables_compare::@8 print_sword::@1 + (byte*) char_cursor#123 ← phi( multiply_error::@5/(byte*) char_cursor#38 multiply_error::@7/(byte*) char_cursor#40 multiply_tables_compare::@6/(byte*) char_cursor#23 multiply_tables_compare::@8/(byte*) char_cursor#25 print_sword::@1/(byte*) char_cursor#119 ) + (word) print_word::w#5 ← phi( multiply_error::@5/(word) print_word::w#3 multiply_error::@7/(word) print_word::w#4 multiply_tables_compare::@6/(word) print_word::w#1 multiply_tables_compare::@8/(word) print_word::w#2 print_sword::@1/(word) print_word::w#0 ) + (byte~) print_word::$0 ← > (word) print_word::w#5 + (byte) print_byte::b#1 ← (byte~) print_word::$0 call print_byte param-assignment to:print_word::@1 print_word::@1: scope:[print_word] from print_word - (word) print_word::w#5 ← phi( print_word/(word) print_word::w#4 ) - (byte*) char_cursor#35 ← phi( print_word/(byte*) char_cursor#10 ) - (byte*) char_cursor#5 ← (byte*) char_cursor#35 - (byte~) print_word::$2 ← < (word) print_word::w#5 - (byte) print_byte::b#1 ← (byte~) print_word::$2 + (word) print_word::w#6 ← phi( print_word/(word) print_word::w#5 ) + (byte*) char_cursor#69 ← phi( print_word/(byte*) char_cursor#16 ) + (byte*) char_cursor#11 ← (byte*) char_cursor#69 + (byte~) print_word::$2 ← < (word) print_word::w#6 + (byte) print_byte::b#2 ← (byte~) print_word::$2 call print_byte param-assignment to:print_word::@2 print_word::@2: scope:[print_word] from print_word::@1 - (byte*) char_cursor#36 ← phi( print_word::@1/(byte*) char_cursor#10 ) - (byte*) char_cursor#6 ← (byte*) char_cursor#36 + (byte*) char_cursor#70 ← phi( print_word::@1/(byte*) char_cursor#16 ) + (byte*) char_cursor#12 ← (byte*) char_cursor#70 to:print_word::@return print_word::@return: scope:[print_word] from print_word::@2 - (byte*) char_cursor#37 ← phi( print_word::@2/(byte*) char_cursor#6 ) - (byte*) char_cursor#7 ← (byte*) char_cursor#37 + (byte*) char_cursor#71 ← phi( print_word::@2/(byte*) char_cursor#12 ) + (byte*) char_cursor#13 ← (byte*) char_cursor#71 return to:@return -print_byte: scope:[print_byte] from print_word print_word::@1 - (byte*) char_cursor#64 ← phi( print_word/(byte*) char_cursor#63 print_word::@1/(byte*) char_cursor#5 ) - (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - (byte[]) print_byte::hextab#0 ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } - (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 - (byte) print_char::ch#0 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) +print_byte: scope:[print_byte] from multiply_error::@1 multiply_error::@3 print_sbyte::@1 print_word print_word::@1 + (byte*) char_cursor#124 ← phi( multiply_error::@1/(byte*) char_cursor#34 multiply_error::@3/(byte*) char_cursor#36 print_sbyte::@1/(byte*) char_cursor#121 print_word/(byte*) char_cursor#123 print_word::@1/(byte*) char_cursor#11 ) + (byte) print_byte::b#5 ← phi( multiply_error::@1/(byte) print_byte::b#3 multiply_error::@3/(byte) print_byte::b#4 print_sbyte::@1/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 ) + (byte[]) print_byte::hextab#0 ← (const string) print_byte::$4 + (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word) 4 + (byte) print_char::ch#2 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) call print_char param-assignment to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - (byte) print_byte::b#3 ← phi( print_byte/(byte) print_byte::b#2 ) - (byte*) char_cursor#38 ← phi( print_byte/(byte*) char_cursor#12 ) - (byte*) char_cursor#8 ← (byte*) char_cursor#38 - (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word) 15 - (byte) print_char::ch#1 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) + (byte) print_byte::b#6 ← phi( print_byte/(byte) print_byte::b#5 ) + (byte*) char_cursor#72 ← phi( print_byte/(byte*) char_cursor#18 ) + (byte*) char_cursor#14 ← (byte*) char_cursor#72 + (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word) 15 + (byte) print_char::ch#3 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) call print_char param-assignment to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) char_cursor#39 ← phi( print_byte::@1/(byte*) char_cursor#12 ) - (byte*) char_cursor#9 ← (byte*) char_cursor#39 + (byte*) char_cursor#73 ← phi( print_byte::@1/(byte*) char_cursor#18 ) + (byte*) char_cursor#15 ← (byte*) char_cursor#73 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) char_cursor#40 ← phi( print_byte::@2/(byte*) char_cursor#9 ) - (byte*) char_cursor#10 ← (byte*) char_cursor#40 + (byte*) char_cursor#74 ← phi( print_byte::@2/(byte*) char_cursor#15 ) + (byte*) char_cursor#16 ← (byte*) char_cursor#74 return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 - (byte*) char_cursor#41 ← phi( print_byte/(byte*) char_cursor#64 print_byte::@1/(byte*) char_cursor#8 ) - (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) - *((byte*) char_cursor#41) ← (byte) print_char::ch#2 - (byte*) char_cursor#11 ← ++ (byte*) char_cursor#41 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@2 print_sword::@2 + (byte*) char_cursor#75 ← phi( print_byte/(byte*) char_cursor#124 print_byte::@1/(byte*) char_cursor#14 print_sbyte::@2/(byte*) char_cursor#122 print_sword::@2/(byte*) char_cursor#120 ) + (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sbyte::@2/(byte) print_char::ch#1 print_sword::@2/(byte) print_char::ch#0 ) + *((byte*) char_cursor#75) ← (byte) print_char::ch#4 + (byte*) char_cursor#17 ← ++ (byte*) char_cursor#75 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) char_cursor#42 ← phi( print_char/(byte*) char_cursor#11 ) - (byte*) char_cursor#12 ← (byte*) char_cursor#42 + (byte*) char_cursor#76 ← phi( print_char/(byte*) char_cursor#17 ) + (byte*) char_cursor#18 ← (byte*) char_cursor#76 return to:@return print_cls: scope:[print_cls] from main @@ -1192,14 +1873,14 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 print_cls::@return: scope:[print_cls] from print_cls::@1 return to:@return -@6: scope:[] from @begin - (byte*) line_cursor#41 ← phi( @begin/(byte*) line_cursor#0 ) - (byte*) char_cursor#83 ← phi( @begin/(byte*) char_cursor#0 ) +@8: scope:[] from @begin + (byte*) line_cursor#71 ← phi( @begin/(byte*) line_cursor#0 ) + (byte*) char_cursor#153 ← phi( @begin/(byte*) char_cursor#0 ) (byte[512]) mul_sqr1_lo#0 ← { fill( 512, 0) } (byte[512]) mul_sqr1_hi#0 ← { fill( 512, 0) } (byte[512]) mul_sqr2_lo#0 ← { fill( 512, 0) } (byte[512]) mul_sqr2_hi#0 ← { fill( 512, 0) } - to:@8 + to:@11 init_multiply: scope:[init_multiply] from main::@1 (word) init_multiply::sqr#0 ← (byte/signed byte/word/signed word) 0 (byte) init_multiply::x_2#0 ← (byte/signed byte/word/signed word) 0 @@ -1297,77 +1978,142 @@ init_multiply::@8: scope:[init_multiply] from init_multiply::@4 init_multiply::@return: scope:[init_multiply] from init_multiply::@8 return to:@return -multiply: scope:[multiply] from multiply_results_compare::@8 - (byte) multiply::b#1 ← phi( multiply_results_compare::@8/(byte) multiply::b#0 ) - (byte) multiply::a#1 ← phi( multiply_results_compare::@8/(byte) multiply::a#0 ) +multiply: scope:[multiply] from multiply_results_compare::@8 signed_multiply + (byte) multiply::b#2 ← phi( multiply_results_compare::@8/(byte) multiply::b#1 signed_multiply/(byte) multiply::b#0 ) + (byte) multiply::a#2 ← phi( multiply_results_compare::@8/(byte) multiply::a#1 signed_multiply/(byte) multiply::a#0 ) (byte*) multiply::memA#0 ← ((byte*)) (byte/word/signed word) 254 (byte*) multiply::memB#0 ← ((byte*)) (byte/word/signed word) 255 - *((byte*) multiply::memA#0) ← (byte) multiply::a#1 - *((byte*) multiply::memB#0) ← (byte) multiply::b#1 + *((byte*) multiply::memA#0) ← (byte) multiply::a#2 + *((byte*) multiply::memB#0) ← (byte) multiply::b#2 asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB } (word) multiply::return#0 ← { *((byte*) multiply::memB#0), *((byte*) multiply::memA#0) } to:multiply::@return multiply::@return: scope:[multiply] from multiply - (word) multiply::return#3 ← phi( multiply/(word) multiply::return#0 ) - (word) multiply::return#1 ← (word) multiply::return#3 + (word) multiply::return#4 ← phi( multiply/(word) multiply::return#0 ) + (word) multiply::return#1 ← (word) multiply::return#4 return to:@return -@8: scope:[] from @6 - (byte*) line_cursor#36 ← phi( @6/(byte*) line_cursor#41 ) - (byte*) char_cursor#79 ← phi( @6/(byte*) char_cursor#83 ) +signed_multiply: scope:[signed_multiply] from signed_multiply_results_compare::@8 + (signed byte) signed_multiply::b#1 ← phi( signed_multiply_results_compare::@8/(signed byte) signed_multiply::b#0 ) + (signed byte) signed_multiply::a#1 ← phi( signed_multiply_results_compare::@8/(signed byte) signed_multiply::a#0 ) + (byte~) signed_multiply::$0 ← ((byte)) (signed byte) signed_multiply::a#1 + (byte~) signed_multiply::$1 ← ((byte)) (signed byte) signed_multiply::b#1 + (byte) multiply::a#0 ← (byte~) signed_multiply::$0 + (byte) multiply::b#0 ← (byte~) signed_multiply::$1 + call multiply param-assignment + (word) multiply::return#2 ← (word) multiply::return#1 + to:signed_multiply::@6 +signed_multiply::@6: scope:[signed_multiply] from signed_multiply + (signed byte) signed_multiply::b#4 ← phi( signed_multiply/(signed byte) signed_multiply::b#1 ) + (signed byte) signed_multiply::a#2 ← phi( signed_multiply/(signed byte) signed_multiply::a#1 ) + (word) multiply::return#5 ← phi( signed_multiply/(word) multiply::return#2 ) + (word~) signed_multiply::$2 ← (word) multiply::return#5 + (word) signed_multiply::m#0 ← (word~) signed_multiply::$2 + (boolean~) signed_multiply::$3 ← (signed byte) signed_multiply::a#2 < (byte/signed byte/word/signed word) 0 + (boolean~) signed_multiply::$4 ← ! (boolean~) signed_multiply::$3 + if((boolean~) signed_multiply::$4) goto signed_multiply::@1 + to:signed_multiply::@3 +signed_multiply::@1: scope:[signed_multiply] from signed_multiply::@3 signed_multiply::@6 + (signed byte) signed_multiply::a#4 ← phi( signed_multiply::@3/(signed byte) signed_multiply::a#5 signed_multiply::@6/(signed byte) signed_multiply::a#2 ) + (word) signed_multiply::m#6 ← phi( signed_multiply::@3/(word) signed_multiply::m#1 signed_multiply::@6/(word) signed_multiply::m#0 ) + (signed byte) signed_multiply::b#2 ← phi( signed_multiply::@3/(signed byte) signed_multiply::b#3 signed_multiply::@6/(signed byte) signed_multiply::b#4 ) + (boolean~) signed_multiply::$9 ← (signed byte) signed_multiply::b#2 < (byte/signed byte/word/signed word) 0 + (boolean~) signed_multiply::$10 ← ! (boolean~) signed_multiply::$9 + if((boolean~) signed_multiply::$10) goto signed_multiply::@2 + to:signed_multiply::@4 +signed_multiply::@3: scope:[signed_multiply] from signed_multiply::@6 + (signed byte) signed_multiply::a#5 ← phi( signed_multiply::@6/(signed byte) signed_multiply::a#2 ) + (signed byte) signed_multiply::b#3 ← phi( signed_multiply::@6/(signed byte) signed_multiply::b#4 ) + (word) signed_multiply::m#3 ← phi( signed_multiply::@6/(word) signed_multiply::m#0 ) + (byte~) signed_multiply::$6 ← > (word) signed_multiply::m#3 + (byte~) signed_multiply::$7 ← ((byte)) (signed byte) signed_multiply::b#3 + (byte/signed byte/word/signed word~) signed_multiply::$8 ← (byte~) signed_multiply::$6 - (byte~) signed_multiply::$7 + (byte/signed byte/word/signed word~) signed_multiply::$16 ← (byte/signed byte/word/signed word~) signed_multiply::$8 + (word) signed_multiply::m#1 ← (word) signed_multiply::m#3 hi= (byte/signed byte/word/signed word~) signed_multiply::$16 + to:signed_multiply::@1 +signed_multiply::@2: scope:[signed_multiply] from signed_multiply::@1 signed_multiply::@4 + (word) signed_multiply::m#4 ← phi( signed_multiply::@1/(word) signed_multiply::m#6 signed_multiply::@4/(word) signed_multiply::m#2 ) + (signed word~) signed_multiply::$15 ← ((signed word)) (word) signed_multiply::m#4 + (signed word) signed_multiply::return#0 ← (signed word~) signed_multiply::$15 + to:signed_multiply::@return +signed_multiply::@4: scope:[signed_multiply] from signed_multiply::@1 + (signed byte) signed_multiply::a#3 ← phi( signed_multiply::@1/(signed byte) signed_multiply::a#4 ) + (word) signed_multiply::m#5 ← phi( signed_multiply::@1/(word) signed_multiply::m#6 ) + (byte~) signed_multiply::$12 ← > (word) signed_multiply::m#5 + (byte~) signed_multiply::$13 ← ((byte)) (signed byte) signed_multiply::a#3 + (byte/signed byte/word/signed word~) signed_multiply::$14 ← (byte~) signed_multiply::$12 - (byte~) signed_multiply::$13 + (byte/signed byte/word/signed word~) signed_multiply::$17 ← (byte/signed byte/word/signed word~) signed_multiply::$14 + (word) signed_multiply::m#2 ← (word) signed_multiply::m#5 hi= (byte/signed byte/word/signed word~) signed_multiply::$17 + to:signed_multiply::@2 +signed_multiply::@return: scope:[signed_multiply] from signed_multiply::@2 + (signed word) signed_multiply::return#3 ← phi( signed_multiply::@2/(signed word) signed_multiply::return#0 ) + (signed word) signed_multiply::return#1 ← (signed word) signed_multiply::return#3 + return + to:@return +@11: scope:[] from @8 + (byte*) line_cursor#62 ← phi( @8/(byte*) line_cursor#71 ) + (byte*) char_cursor#147 ← phi( @8/(byte*) char_cursor#153 ) (byte*) BGCOL#0 ← ((byte*)) (word) 53281 - to:@10 -main: scope:[main] from @13 - (byte*) line_cursor#42 ← phi( @13/(byte*) line_cursor#28 ) - (byte*) char_cursor#84 ← phi( @13/(byte*) char_cursor#70 ) - (byte*) BGCOL#1 ← phi( @13/(byte*) BGCOL#4 ) + to:@14 +main: scope:[main] from @20 + (byte*) line_cursor#72 ← phi( @20/(byte*) line_cursor#50 ) + (byte*) char_cursor#154 ← phi( @20/(byte*) char_cursor#134 ) + (byte*) BGCOL#1 ← phi( @20/(byte*) BGCOL#5 ) *((byte*) BGCOL#1) ← (byte/signed byte/word/signed word) 5 call print_cls param-assignment to:main::@1 main::@1: scope:[main] from main - (byte*) BGCOL#16 ← phi( main/(byte*) BGCOL#1 ) - (byte*) line_cursor#35 ← phi( main/(byte*) line_cursor#42 ) - (byte*) char_cursor#78 ← phi( main/(byte*) char_cursor#84 ) + (byte*) BGCOL#22 ← phi( main/(byte*) BGCOL#1 ) + (byte*) line_cursor#61 ← phi( main/(byte*) line_cursor#72 ) + (byte*) char_cursor#146 ← phi( main/(byte*) char_cursor#154 ) call init_multiply param-assignment to:main::@2 main::@2: scope:[main] from main::@1 - (byte*) BGCOL#13 ← phi( main::@1/(byte*) BGCOL#16 ) - (byte*) line_cursor#29 ← phi( main::@1/(byte*) line_cursor#35 ) - (byte*) char_cursor#72 ← phi( main::@1/(byte*) char_cursor#78 ) + (byte*) BGCOL#17 ← phi( main::@1/(byte*) BGCOL#22 ) + (byte*) line_cursor#51 ← phi( main::@1/(byte*) line_cursor#61 ) + (byte*) char_cursor#138 ← phi( main::@1/(byte*) char_cursor#146 ) call init_multiply_asm param-assignment to:main::@3 main::@3: scope:[main] from main::@2 - (byte*) BGCOL#11 ← phi( main::@2/(byte*) BGCOL#13 ) - (byte*) line_cursor#23 ← phi( main::@2/(byte*) line_cursor#29 ) - (byte*) char_cursor#65 ← phi( main::@2/(byte*) char_cursor#72 ) + (byte*) BGCOL#14 ← phi( main::@2/(byte*) BGCOL#17 ) + (byte*) line_cursor#41 ← phi( main::@2/(byte*) line_cursor#51 ) + (byte*) char_cursor#125 ← phi( main::@2/(byte*) char_cursor#138 ) call multiply_tables_compare param-assignment to:main::@4 main::@4: scope:[main] from main::@3 - (byte*) BGCOL#19 ← phi( main::@3/(byte*) BGCOL#11 ) - (byte*) line_cursor#14 ← phi( main::@3/(byte*) line_cursor#6 ) - (byte*) char_cursor#43 ← phi( main::@3/(byte*) char_cursor#20 ) - (byte*) char_cursor#13 ← (byte*) char_cursor#43 - (byte*) line_cursor#3 ← (byte*) line_cursor#14 + (byte*) BGCOL#27 ← phi( main::@3/(byte*) BGCOL#14 ) + (byte*) line_cursor#23 ← phi( main::@3/(byte*) line_cursor#7 ) + (byte*) char_cursor#77 ← phi( main::@3/(byte*) char_cursor#27 ) + (byte*) char_cursor#19 ← (byte*) char_cursor#77 + (byte*) line_cursor#3 ← (byte*) line_cursor#23 call multiply_results_compare param-assignment to:main::@5 main::@5: scope:[main] from main::@4 - (byte*) line_cursor#15 ← phi( main::@4/(byte*) line_cursor#8 ) - (byte*) char_cursor#44 ← phi( main::@4/(byte*) char_cursor#27 ) - (byte*) char_cursor#14 ← (byte*) char_cursor#44 - (byte*) line_cursor#4 ← (byte*) line_cursor#15 + (byte*) BGCOL#28 ← phi( main::@4/(byte*) BGCOL#27 ) + (byte*) line_cursor#24 ← phi( main::@4/(byte*) line_cursor#10 ) + (byte*) char_cursor#78 ← phi( main::@4/(byte*) char_cursor#31 ) + (byte*) char_cursor#20 ← (byte*) char_cursor#78 + (byte*) line_cursor#4 ← (byte*) line_cursor#24 + call signed_multiply_results_compare param-assignment + to:main::@6 +main::@6: scope:[main] from main::@5 + (byte*) line_cursor#25 ← phi( main::@5/(byte*) line_cursor#15 ) + (byte*) char_cursor#79 ← phi( main::@5/(byte*) char_cursor#45 ) + (byte*) char_cursor#21 ← (byte*) char_cursor#79 + (byte*) line_cursor#5 ← (byte*) line_cursor#25 to:main::@return -main::@return: scope:[main] from main::@5 - (byte*) line_cursor#16 ← phi( main::@5/(byte*) line_cursor#4 ) - (byte*) char_cursor#45 ← phi( main::@5/(byte*) char_cursor#14 ) - (byte*) char_cursor#15 ← (byte*) char_cursor#45 - (byte*) line_cursor#5 ← (byte*) line_cursor#16 +main::@return: scope:[main] from main::@6 + (byte*) line_cursor#26 ← phi( main::@6/(byte*) line_cursor#5 ) + (byte*) char_cursor#80 ← phi( main::@6/(byte*) char_cursor#21 ) + (byte*) char_cursor#22 ← (byte*) char_cursor#80 + (byte*) line_cursor#6 ← (byte*) line_cursor#26 return to:@return slow_multiply: scope:[slow_multiply] from multiply_results_compare::@2 (byte) slow_multiply::b#3 ← phi( multiply_results_compare::@2/(byte) slow_multiply::b#0 ) (byte) slow_multiply::a#1 ← phi( multiply_results_compare::@2/(byte) slow_multiply::a#0 ) (word) slow_multiply::m#0 ← (byte/signed byte/word/signed word) 0 - (boolean~) slow_multiply::$0 ← (byte) slow_multiply::a#1 > (byte/signed byte/word/signed word) 0 + (boolean~) slow_multiply::$0 ← (byte) slow_multiply::a#1 != (byte/signed byte/word/signed word) 0 (boolean~) slow_multiply::$1 ← ! (boolean~) slow_multiply::$0 if((boolean~) slow_multiply::$1) goto slow_multiply::@1 to:slow_multiply::@3 @@ -1397,15 +2143,77 @@ slow_multiply::@return: scope:[slow_multiply] from slow_multiply::@1 (word) slow_multiply::return#1 ← (word) slow_multiply::return#3 return to:@return -@10: scope:[] from @8 - (byte*) line_cursor#34 ← phi( @8/(byte*) line_cursor#36 ) - (byte*) char_cursor#77 ← phi( @8/(byte*) char_cursor#79 ) - (byte*) BGCOL#10 ← phi( @8/(byte*) BGCOL#0 ) +slow_signed_multiply: scope:[slow_signed_multiply] from signed_multiply_results_compare::@2 + (signed byte) slow_signed_multiply::b#5 ← phi( signed_multiply_results_compare::@2/(signed byte) slow_signed_multiply::b#0 ) + (signed byte) slow_signed_multiply::a#1 ← phi( signed_multiply_results_compare::@2/(signed byte) slow_signed_multiply::a#0 ) + (signed word) slow_signed_multiply::m#0 ← (byte/signed byte/word/signed word) 0 + (boolean~) slow_signed_multiply::$0 ← (signed byte) slow_signed_multiply::a#1 < (byte/signed byte/word/signed word) 0 + (boolean~) slow_signed_multiply::$1 ← ! (boolean~) slow_signed_multiply::$0 + if((boolean~) slow_signed_multiply::$1) goto slow_signed_multiply::@1 + to:slow_signed_multiply::@6 +slow_signed_multiply::@1: scope:[slow_signed_multiply] from slow_signed_multiply + (signed byte) slow_signed_multiply::b#6 ← phi( slow_signed_multiply/(signed byte) slow_signed_multiply::b#5 ) + (signed word) slow_signed_multiply::m#9 ← phi( slow_signed_multiply/(signed word) slow_signed_multiply::m#0 ) + (signed byte) slow_signed_multiply::a#2 ← phi( slow_signed_multiply/(signed byte) slow_signed_multiply::a#1 ) + (boolean~) slow_signed_multiply::$4 ← (signed byte) slow_signed_multiply::a#2 > (byte/signed byte/word/signed word) 0 + (boolean~) slow_signed_multiply::$5 ← ! (boolean~) slow_signed_multiply::$4 + if((boolean~) slow_signed_multiply::$5) goto slow_signed_multiply::@4 + to:slow_signed_multiply::@9 +slow_signed_multiply::@6: scope:[slow_signed_multiply] from slow_signed_multiply + (signed byte) slow_signed_multiply::a#5 ← phi( slow_signed_multiply/(signed byte) slow_signed_multiply::a#1 ) + (signed byte) slow_signed_multiply::b#3 ← phi( slow_signed_multiply/(signed byte) slow_signed_multiply::b#5 ) + (signed word) slow_signed_multiply::m#6 ← phi( slow_signed_multiply/(signed word) slow_signed_multiply::m#0 ) + (signed byte) slow_signed_multiply::i#0 ← (byte/signed byte/word/signed word) 0 + to:slow_signed_multiply::@2 +slow_signed_multiply::@2: scope:[slow_signed_multiply] from slow_signed_multiply::@2 slow_signed_multiply::@6 + (signed byte) slow_signed_multiply::a#3 ← phi( slow_signed_multiply::@2/(signed byte) slow_signed_multiply::a#3 slow_signed_multiply::@6/(signed byte) slow_signed_multiply::a#5 ) + (signed byte) slow_signed_multiply::i#2 ← phi( slow_signed_multiply::@2/(signed byte) slow_signed_multiply::i#1 slow_signed_multiply::@6/(signed byte) slow_signed_multiply::i#0 ) + (signed byte) slow_signed_multiply::b#1 ← phi( slow_signed_multiply::@2/(signed byte) slow_signed_multiply::b#1 slow_signed_multiply::@6/(signed byte) slow_signed_multiply::b#3 ) + (signed word) slow_signed_multiply::m#3 ← phi( slow_signed_multiply::@2/(signed word) slow_signed_multiply::m#1 slow_signed_multiply::@6/(signed word) slow_signed_multiply::m#6 ) + (signed word~) slow_signed_multiply::$2 ← (signed word) slow_signed_multiply::m#3 - (signed byte) slow_signed_multiply::b#1 + (signed word) slow_signed_multiply::m#1 ← (signed word~) slow_signed_multiply::$2 + (signed byte) slow_signed_multiply::i#1 ← -- (signed byte) slow_signed_multiply::i#2 + (boolean~) slow_signed_multiply::$3 ← (signed byte) slow_signed_multiply::i#1 != (signed byte) slow_signed_multiply::a#3 + if((boolean~) slow_signed_multiply::$3) goto slow_signed_multiply::@2 + to:slow_signed_multiply::@3 +slow_signed_multiply::@3: scope:[slow_signed_multiply] from slow_signed_multiply::@2 slow_signed_multiply::@4 slow_signed_multiply::@5 + (signed word) slow_signed_multiply::m#4 ← phi( slow_signed_multiply::@2/(signed word) slow_signed_multiply::m#1 slow_signed_multiply::@4/(signed word) slow_signed_multiply::m#7 slow_signed_multiply::@5/(signed word) slow_signed_multiply::m#2 ) + (signed word) slow_signed_multiply::return#0 ← (signed word) slow_signed_multiply::m#4 + to:slow_signed_multiply::@return +slow_signed_multiply::@4: scope:[slow_signed_multiply] from slow_signed_multiply::@1 + (signed word) slow_signed_multiply::m#7 ← phi( slow_signed_multiply::@1/(signed word) slow_signed_multiply::m#9 ) + to:slow_signed_multiply::@3 +slow_signed_multiply::@9: scope:[slow_signed_multiply] from slow_signed_multiply::@1 + (signed byte) slow_signed_multiply::a#6 ← phi( slow_signed_multiply::@1/(signed byte) slow_signed_multiply::a#2 ) + (signed byte) slow_signed_multiply::b#4 ← phi( slow_signed_multiply::@1/(signed byte) slow_signed_multiply::b#6 ) + (signed word) slow_signed_multiply::m#8 ← phi( slow_signed_multiply::@1/(signed word) slow_signed_multiply::m#9 ) + (signed byte) slow_signed_multiply::j#0 ← (byte/signed byte/word/signed word) 0 + to:slow_signed_multiply::@5 +slow_signed_multiply::@5: scope:[slow_signed_multiply] from slow_signed_multiply::@5 slow_signed_multiply::@9 + (signed byte) slow_signed_multiply::a#4 ← phi( slow_signed_multiply::@5/(signed byte) slow_signed_multiply::a#4 slow_signed_multiply::@9/(signed byte) slow_signed_multiply::a#6 ) + (signed byte) slow_signed_multiply::j#2 ← phi( slow_signed_multiply::@5/(signed byte) slow_signed_multiply::j#1 slow_signed_multiply::@9/(signed byte) slow_signed_multiply::j#0 ) + (signed byte) slow_signed_multiply::b#2 ← phi( slow_signed_multiply::@5/(signed byte) slow_signed_multiply::b#2 slow_signed_multiply::@9/(signed byte) slow_signed_multiply::b#4 ) + (signed word) slow_signed_multiply::m#5 ← phi( slow_signed_multiply::@5/(signed word) slow_signed_multiply::m#2 slow_signed_multiply::@9/(signed word) slow_signed_multiply::m#8 ) + (signed word~) slow_signed_multiply::$6 ← (signed word) slow_signed_multiply::m#5 + (signed byte) slow_signed_multiply::b#2 + (signed word) slow_signed_multiply::m#2 ← (signed word~) slow_signed_multiply::$6 + (signed byte) slow_signed_multiply::j#1 ← ++ (signed byte) slow_signed_multiply::j#2 + (boolean~) slow_signed_multiply::$7 ← (signed byte) slow_signed_multiply::j#1 != (signed byte) slow_signed_multiply::a#4 + if((boolean~) slow_signed_multiply::$7) goto slow_signed_multiply::@5 + to:slow_signed_multiply::@3 +slow_signed_multiply::@return: scope:[slow_signed_multiply] from slow_signed_multiply::@3 + (signed word) slow_signed_multiply::return#3 ← phi( slow_signed_multiply::@3/(signed word) slow_signed_multiply::return#0 ) + (signed word) slow_signed_multiply::return#1 ← (signed word) slow_signed_multiply::return#3 + return + to:@return +@14: scope:[] from @11 + (byte*) line_cursor#60 ← phi( @11/(byte*) line_cursor#62 ) + (byte*) char_cursor#145 ← phi( @11/(byte*) char_cursor#147 ) + (byte*) BGCOL#13 ← phi( @11/(byte*) BGCOL#0 ) (byte[512]) asm_mul_sqr1_lo#0 ← { fill( 512, 0) } (byte[512]) asm_mul_sqr1_hi#0 ← { fill( 512, 0) } (byte[512]) asm_mul_sqr2_lo#0 ← { fill( 512, 0) } (byte[512]) asm_mul_sqr2_hi#0 ← { fill( 512, 0) } - to:@13 + to:@20 init_multiply_asm: scope:[init_multiply_asm] from main::@2 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } (byte*) init_multiply_asm::mem#0 ← ((byte*)) (byte/word/signed word) 255 @@ -1418,16 +2226,16 @@ init_multiply_asm::@return: scope:[init_multiply_asm] from init_multiply_asm return to:@return multiply_tables_compare: scope:[multiply_tables_compare] from main::@3 - (byte*) line_cursor#47 ← phi( main::@3/(byte*) line_cursor#23 ) - (byte*) char_cursor#80 ← phi( main::@3/(byte*) char_cursor#65 ) - (byte*) BGCOL#7 ← phi( main::@3/(byte*) BGCOL#11 ) + (byte*) line_cursor#81 ← phi( main::@3/(byte*) line_cursor#41 ) + (byte*) char_cursor#148 ← phi( main::@3/(byte*) char_cursor#125 ) + (byte*) BGCOL#9 ← phi( main::@3/(byte*) BGCOL#14 ) (byte*) multiply_tables_compare::asm_sqr#0 ← (byte[512]) asm_mul_sqr1_lo#0 (byte*) multiply_tables_compare::kc_sqr#0 ← (byte[512]) mul_sqr1_lo#0 to:multiply_tables_compare::@1 multiply_tables_compare::@1: scope:[multiply_tables_compare] from multiply_tables_compare multiply_tables_compare::@2 - (byte*) line_cursor#43 ← phi( multiply_tables_compare/(byte*) line_cursor#47 multiply_tables_compare::@2/(byte*) line_cursor#38 ) - (byte*) char_cursor#73 ← phi( multiply_tables_compare/(byte*) char_cursor#80 multiply_tables_compare::@2/(byte*) char_cursor#74 ) - (byte*) BGCOL#5 ← phi( multiply_tables_compare/(byte*) BGCOL#7 multiply_tables_compare::@2/(byte*) BGCOL#8 ) + (byte*) line_cursor#73 ← phi( multiply_tables_compare/(byte*) line_cursor#81 multiply_tables_compare::@2/(byte*) line_cursor#64 ) + (byte*) char_cursor#139 ← phi( multiply_tables_compare/(byte*) char_cursor#148 multiply_tables_compare::@2/(byte*) char_cursor#140 ) + (byte*) BGCOL#6 ← phi( multiply_tables_compare/(byte*) BGCOL#9 multiply_tables_compare::@2/(byte*) BGCOL#10 ) (byte*) multiply_tables_compare::asm_sqr#2 ← phi( multiply_tables_compare/(byte*) multiply_tables_compare::asm_sqr#0 multiply_tables_compare::@2/(byte*) multiply_tables_compare::asm_sqr#1 ) (byte*) multiply_tables_compare::kc_sqr#2 ← phi( multiply_tables_compare/(byte*) multiply_tables_compare::kc_sqr#0 multiply_tables_compare::@2/(byte*) multiply_tables_compare::kc_sqr#1 ) (boolean~) multiply_tables_compare::$0 ← *((byte*) multiply_tables_compare::kc_sqr#2) != *((byte*) multiply_tables_compare::asm_sqr#2) @@ -1435,9 +2243,9 @@ multiply_tables_compare::@1: scope:[multiply_tables_compare] from multiply_tabl if((boolean~) multiply_tables_compare::$1) goto multiply_tables_compare::@2 to:multiply_tables_compare::@3 multiply_tables_compare::@2: scope:[multiply_tables_compare] from multiply_tables_compare::@1 - (byte*) line_cursor#38 ← phi( multiply_tables_compare::@1/(byte*) line_cursor#43 ) - (byte*) char_cursor#74 ← phi( multiply_tables_compare::@1/(byte*) char_cursor#73 ) - (byte*) BGCOL#8 ← phi( multiply_tables_compare::@1/(byte*) BGCOL#5 ) + (byte*) line_cursor#64 ← phi( multiply_tables_compare::@1/(byte*) line_cursor#73 ) + (byte*) char_cursor#140 ← phi( multiply_tables_compare::@1/(byte*) char_cursor#139 ) + (byte*) BGCOL#10 ← phi( multiply_tables_compare::@1/(byte*) BGCOL#6 ) (byte*) multiply_tables_compare::kc_sqr#3 ← phi( multiply_tables_compare::@1/(byte*) multiply_tables_compare::kc_sqr#2 ) (byte*) multiply_tables_compare::asm_sqr#3 ← phi( multiply_tables_compare::@1/(byte*) multiply_tables_compare::asm_sqr#2 ) (byte*) multiply_tables_compare::asm_sqr#1 ← ++ (byte*) multiply_tables_compare::asm_sqr#3 @@ -1448,227 +2256,517 @@ multiply_tables_compare::@2: scope:[multiply_tables_compare] from multiply_tabl if((boolean~) multiply_tables_compare::$10) goto multiply_tables_compare::@1 to:multiply_tables_compare::@5 multiply_tables_compare::@3: scope:[multiply_tables_compare] from multiply_tables_compare::@1 - (byte*) line_cursor#48 ← phi( multiply_tables_compare::@1/(byte*) line_cursor#43 ) + (byte*) line_cursor#82 ← phi( multiply_tables_compare::@1/(byte*) line_cursor#73 ) (byte*) multiply_tables_compare::kc_sqr#7 ← phi( multiply_tables_compare::@1/(byte*) multiply_tables_compare::kc_sqr#2 ) (byte*) multiply_tables_compare::asm_sqr#5 ← phi( multiply_tables_compare::@1/(byte*) multiply_tables_compare::asm_sqr#2 ) - (byte*) char_cursor#66 ← phi( multiply_tables_compare::@1/(byte*) char_cursor#73 ) - (byte*) BGCOL#2 ← phi( multiply_tables_compare::@1/(byte*) BGCOL#5 ) + (byte*) char_cursor#126 ← phi( multiply_tables_compare::@1/(byte*) char_cursor#139 ) + (byte*) BGCOL#2 ← phi( multiply_tables_compare::@1/(byte*) BGCOL#6 ) *((byte*) BGCOL#2) ← (byte/signed byte/word/signed word) 2 (byte*) print_str::str#1 ← (const string) multiply_tables_compare::str call print_str param-assignment to:multiply_tables_compare::@6 multiply_tables_compare::@6: scope:[multiply_tables_compare] from multiply_tables_compare::@3 - (byte*) line_cursor#44 ← phi( multiply_tables_compare::@3/(byte*) line_cursor#48 ) + (byte*) line_cursor#74 ← phi( multiply_tables_compare::@3/(byte*) line_cursor#82 ) (byte*) multiply_tables_compare::kc_sqr#6 ← phi( multiply_tables_compare::@3/(byte*) multiply_tables_compare::kc_sqr#7 ) (byte*) multiply_tables_compare::asm_sqr#4 ← phi( multiply_tables_compare::@3/(byte*) multiply_tables_compare::asm_sqr#5 ) - (byte*) char_cursor#46 ← phi( multiply_tables_compare::@3/(byte*) char_cursor#2 ) - (byte*) char_cursor#16 ← (byte*) char_cursor#46 + (byte*) char_cursor#81 ← phi( multiply_tables_compare::@3/(byte*) char_cursor#2 ) + (byte*) char_cursor#23 ← (byte*) char_cursor#81 (word~) multiply_tables_compare::$3 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#4 - (word) print_word::w#0 ← (word~) multiply_tables_compare::$3 + (word) print_word::w#1 ← (word~) multiply_tables_compare::$3 call print_word param-assignment to:multiply_tables_compare::@7 multiply_tables_compare::@7: scope:[multiply_tables_compare] from multiply_tables_compare::@6 - (byte*) line_cursor#37 ← phi( multiply_tables_compare::@6/(byte*) line_cursor#44 ) + (byte*) line_cursor#63 ← phi( multiply_tables_compare::@6/(byte*) line_cursor#74 ) (byte*) multiply_tables_compare::kc_sqr#5 ← phi( multiply_tables_compare::@6/(byte*) multiply_tables_compare::kc_sqr#6 ) - (byte*) char_cursor#47 ← phi( multiply_tables_compare::@6/(byte*) char_cursor#7 ) - (byte*) char_cursor#17 ← (byte*) char_cursor#47 + (byte*) char_cursor#82 ← phi( multiply_tables_compare::@6/(byte*) char_cursor#13 ) + (byte*) char_cursor#24 ← (byte*) char_cursor#82 (byte*) print_str::str#2 ← (const string) multiply_tables_compare::str1 call print_str param-assignment to:multiply_tables_compare::@8 multiply_tables_compare::@8: scope:[multiply_tables_compare] from multiply_tables_compare::@7 - (byte*) line_cursor#30 ← phi( multiply_tables_compare::@7/(byte*) line_cursor#37 ) + (byte*) line_cursor#52 ← phi( multiply_tables_compare::@7/(byte*) line_cursor#63 ) (byte*) multiply_tables_compare::kc_sqr#4 ← phi( multiply_tables_compare::@7/(byte*) multiply_tables_compare::kc_sqr#5 ) - (byte*) char_cursor#48 ← phi( multiply_tables_compare::@7/(byte*) char_cursor#2 ) - (byte*) char_cursor#18 ← (byte*) char_cursor#48 + (byte*) char_cursor#83 ← phi( multiply_tables_compare::@7/(byte*) char_cursor#2 ) + (byte*) char_cursor#25 ← (byte*) char_cursor#83 (word~) multiply_tables_compare::$6 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#4 - (word) print_word::w#1 ← (word~) multiply_tables_compare::$6 + (word) print_word::w#2 ← (word~) multiply_tables_compare::$6 call print_word param-assignment to:multiply_tables_compare::@9 multiply_tables_compare::@9: scope:[multiply_tables_compare] from multiply_tables_compare::@8 - (byte*) line_cursor#24 ← phi( multiply_tables_compare::@8/(byte*) line_cursor#30 ) - (byte*) char_cursor#49 ← phi( multiply_tables_compare::@8/(byte*) char_cursor#7 ) - (byte*) char_cursor#19 ← (byte*) char_cursor#49 + (byte*) line_cursor#42 ← phi( multiply_tables_compare::@8/(byte*) line_cursor#52 ) + (byte*) char_cursor#84 ← phi( multiply_tables_compare::@8/(byte*) char_cursor#13 ) + (byte*) char_cursor#26 ← (byte*) char_cursor#84 to:multiply_tables_compare::@return multiply_tables_compare::@return: scope:[multiply_tables_compare] from multiply_tables_compare::@11 multiply_tables_compare::@9 - (byte*) line_cursor#17 ← phi( multiply_tables_compare::@11/(byte*) line_cursor#7 multiply_tables_compare::@9/(byte*) line_cursor#24 ) - (byte*) char_cursor#50 ← phi( multiply_tables_compare::@11/(byte*) char_cursor#22 multiply_tables_compare::@9/(byte*) char_cursor#19 ) - (byte*) char_cursor#20 ← (byte*) char_cursor#50 - (byte*) line_cursor#6 ← (byte*) line_cursor#17 + (byte*) line_cursor#27 ← phi( multiply_tables_compare::@11/(byte*) line_cursor#8 multiply_tables_compare::@9/(byte*) line_cursor#42 ) + (byte*) char_cursor#85 ← phi( multiply_tables_compare::@11/(byte*) char_cursor#29 multiply_tables_compare::@9/(byte*) char_cursor#26 ) + (byte*) char_cursor#27 ← (byte*) char_cursor#85 + (byte*) line_cursor#7 ← (byte*) line_cursor#27 return to:@return multiply_tables_compare::@5: scope:[multiply_tables_compare] from multiply_tables_compare::@2 - (byte*) line_cursor#31 ← phi( multiply_tables_compare::@2/(byte*) line_cursor#38 ) - (byte*) char_cursor#67 ← phi( multiply_tables_compare::@2/(byte*) char_cursor#74 ) + (byte*) line_cursor#53 ← phi( multiply_tables_compare::@2/(byte*) line_cursor#64 ) + (byte*) char_cursor#127 ← phi( multiply_tables_compare::@2/(byte*) char_cursor#140 ) (byte*) print_str::str#3 ← (const string) multiply_tables_compare::str2 call print_str param-assignment to:multiply_tables_compare::@10 multiply_tables_compare::@10: scope:[multiply_tables_compare] from multiply_tables_compare::@5 - (byte*) line_cursor#25 ← phi( multiply_tables_compare::@5/(byte*) line_cursor#31 ) - (byte*) char_cursor#51 ← phi( multiply_tables_compare::@5/(byte*) char_cursor#2 ) - (byte*) char_cursor#21 ← (byte*) char_cursor#51 + (byte*) line_cursor#43 ← phi( multiply_tables_compare::@5/(byte*) line_cursor#53 ) + (byte*) char_cursor#86 ← phi( multiply_tables_compare::@5/(byte*) char_cursor#2 ) + (byte*) char_cursor#28 ← (byte*) char_cursor#86 call print_ln param-assignment to:multiply_tables_compare::@11 multiply_tables_compare::@11: scope:[multiply_tables_compare] from multiply_tables_compare::@10 - (byte*) char_cursor#52 ← phi( multiply_tables_compare::@10/(byte*) char_cursor#4 ) - (byte*) line_cursor#18 ← phi( multiply_tables_compare::@10/(byte*) line_cursor#2 ) - (byte*) line_cursor#7 ← (byte*) line_cursor#18 - (byte*) char_cursor#22 ← (byte*) char_cursor#52 + (byte*) char_cursor#87 ← phi( multiply_tables_compare::@10/(byte*) char_cursor#4 ) + (byte*) line_cursor#28 ← phi( multiply_tables_compare::@10/(byte*) line_cursor#2 ) + (byte*) line_cursor#8 ← (byte*) line_cursor#28 + (byte*) char_cursor#29 ← (byte*) char_cursor#87 to:multiply_tables_compare::@return multiply_results_compare: scope:[multiply_results_compare] from main::@4 - (byte*) line_cursor#54 ← phi( main::@4/(byte*) line_cursor#3 ) - (byte*) char_cursor#87 ← phi( main::@4/(byte*) char_cursor#13 ) - (byte*) BGCOL#17 ← phi( main::@4/(byte*) BGCOL#19 ) + (byte*) line_cursor#87 ← phi( main::@4/(byte*) line_cursor#3 ) + (byte*) char_cursor#159 ← phi( main::@4/(byte*) char_cursor#19 ) + (byte*) BGCOL#23 ← phi( main::@4/(byte*) BGCOL#27 ) (byte) multiply_results_compare::a#0 ← (byte/signed byte/word/signed word) 0 to:multiply_results_compare::@1 multiply_results_compare::@1: scope:[multiply_results_compare] from multiply_results_compare multiply_results_compare::@6 - (byte*) line_cursor#53 ← phi( multiply_results_compare/(byte*) line_cursor#54 multiply_results_compare::@6/(byte*) line_cursor#40 ) - (byte*) char_cursor#86 ← phi( multiply_results_compare/(byte*) char_cursor#87 multiply_results_compare::@6/(byte*) char_cursor#76 ) - (byte*) BGCOL#14 ← phi( multiply_results_compare/(byte*) BGCOL#17 multiply_results_compare::@6/(byte*) BGCOL#18 ) - (byte) multiply_results_compare::a#5 ← phi( multiply_results_compare/(byte) multiply_results_compare::a#0 multiply_results_compare::@6/(byte) multiply_results_compare::a#1 ) + (byte*) line_cursor#83 ← phi( multiply_results_compare/(byte*) line_cursor#87 multiply_results_compare::@6/(byte*) line_cursor#66 ) + (byte*) char_cursor#157 ← phi( multiply_results_compare/(byte*) char_cursor#159 multiply_results_compare::@6/(byte*) char_cursor#142 ) + (byte*) BGCOL#18 ← phi( multiply_results_compare/(byte*) BGCOL#23 multiply_results_compare::@6/(byte*) BGCOL#24 ) + (byte) multiply_results_compare::a#6 ← phi( multiply_results_compare/(byte) multiply_results_compare::a#0 multiply_results_compare::@6/(byte) multiply_results_compare::a#1 ) (byte) multiply_results_compare::b#0 ← (byte/signed byte/word/signed word) 0 to:multiply_results_compare::@2 multiply_results_compare::@2: scope:[multiply_results_compare] from multiply_results_compare::@1 multiply_results_compare::@3 - (byte*) line_cursor#52 ← phi( multiply_results_compare::@1/(byte*) line_cursor#53 multiply_results_compare::@3/(byte*) line_cursor#46 ) - (byte*) char_cursor#85 ← phi( multiply_results_compare::@1/(byte*) char_cursor#86 multiply_results_compare::@3/(byte*) char_cursor#82 ) - (byte*) BGCOL#12 ← phi( multiply_results_compare::@1/(byte*) BGCOL#14 multiply_results_compare::@3/(byte*) BGCOL#15 ) + (byte*) line_cursor#75 ← phi( multiply_results_compare::@1/(byte*) line_cursor#83 multiply_results_compare::@3/(byte*) line_cursor#76 ) + (byte*) char_cursor#155 ← phi( multiply_results_compare::@1/(byte*) char_cursor#157 multiply_results_compare::@3/(byte*) char_cursor#150 ) + (byte*) BGCOL#15 ← phi( multiply_results_compare::@1/(byte*) BGCOL#18 multiply_results_compare::@3/(byte*) BGCOL#19 ) (byte) multiply_results_compare::b#2 ← phi( multiply_results_compare::@1/(byte) multiply_results_compare::b#0 multiply_results_compare::@3/(byte) multiply_results_compare::b#1 ) - (byte) multiply_results_compare::a#2 ← phi( multiply_results_compare::@1/(byte) multiply_results_compare::a#5 multiply_results_compare::@3/(byte) multiply_results_compare::a#6 ) + (byte) multiply_results_compare::a#2 ← phi( multiply_results_compare::@1/(byte) multiply_results_compare::a#6 multiply_results_compare::@3/(byte) multiply_results_compare::a#7 ) (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#2 (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 call slow_multiply param-assignment (word) slow_multiply::return#2 ← (word) slow_multiply::return#1 to:multiply_results_compare::@8 multiply_results_compare::@8: scope:[multiply_results_compare] from multiply_results_compare::@2 - (byte*) line_cursor#51 ← phi( multiply_results_compare::@2/(byte*) line_cursor#52 ) - (byte*) char_cursor#81 ← phi( multiply_results_compare::@2/(byte*) char_cursor#85 ) - (byte*) BGCOL#9 ← phi( multiply_results_compare::@2/(byte*) BGCOL#12 ) + (byte*) line_cursor#65 ← phi( multiply_results_compare::@2/(byte*) line_cursor#75 ) + (byte*) char_cursor#149 ← phi( multiply_results_compare::@2/(byte*) char_cursor#155 ) + (byte*) BGCOL#11 ← phi( multiply_results_compare::@2/(byte*) BGCOL#15 ) (byte) multiply_results_compare::b#3 ← phi( multiply_results_compare::@2/(byte) multiply_results_compare::b#2 ) (byte) multiply_results_compare::a#3 ← phi( multiply_results_compare::@2/(byte) multiply_results_compare::a#2 ) (word) slow_multiply::return#4 ← phi( multiply_results_compare::@2/(word) slow_multiply::return#2 ) (word~) multiply_results_compare::$0 ← (word) slow_multiply::return#4 (word) multiply_results_compare::ms#0 ← (word~) multiply_results_compare::$0 - (byte) multiply::a#0 ← (byte) multiply_results_compare::a#3 - (byte) multiply::b#0 ← (byte) multiply_results_compare::b#3 + (byte) multiply::a#1 ← (byte) multiply_results_compare::a#3 + (byte) multiply::b#1 ← (byte) multiply_results_compare::b#3 call multiply param-assignment - (word) multiply::return#2 ← (word) multiply::return#1 + (word) multiply::return#3 ← (word) multiply::return#1 to:multiply_results_compare::@9 multiply_results_compare::@9: scope:[multiply_results_compare] from multiply_results_compare::@8 - (byte*) line_cursor#49 ← phi( multiply_results_compare::@8/(byte*) line_cursor#51 ) - (byte*) char_cursor#75 ← phi( multiply_results_compare::@8/(byte*) char_cursor#81 ) - (byte) multiply_results_compare::a#7 ← phi( multiply_results_compare::@8/(byte) multiply_results_compare::a#3 ) - (byte*) BGCOL#6 ← phi( multiply_results_compare::@8/(byte*) BGCOL#9 ) - (byte) multiply_results_compare::b#5 ← phi( multiply_results_compare::@8/(byte) multiply_results_compare::b#3 ) + (byte*) line_cursor#54 ← phi( multiply_results_compare::@8/(byte*) line_cursor#65 ) + (byte*) char_cursor#141 ← phi( multiply_results_compare::@8/(byte*) char_cursor#149 ) + (byte) multiply_results_compare::a#8 ← phi( multiply_results_compare::@8/(byte) multiply_results_compare::a#3 ) + (byte*) BGCOL#7 ← phi( multiply_results_compare::@8/(byte*) BGCOL#11 ) + (byte) multiply_results_compare::b#6 ← phi( multiply_results_compare::@8/(byte) multiply_results_compare::b#3 ) (word) multiply_results_compare::ms#1 ← phi( multiply_results_compare::@8/(word) multiply_results_compare::ms#0 ) - (word) multiply::return#4 ← phi( multiply_results_compare::@8/(word) multiply::return#2 ) - (word~) multiply_results_compare::$1 ← (word) multiply::return#4 + (word) multiply::return#6 ← phi( multiply_results_compare::@8/(word) multiply::return#3 ) + (word~) multiply_results_compare::$1 ← (word) multiply::return#6 (word) multiply_results_compare::ma#0 ← (word~) multiply_results_compare::$1 (boolean~) multiply_results_compare::$2 ← (word) multiply_results_compare::ms#1 != (word) multiply_results_compare::ma#0 (boolean~) multiply_results_compare::$3 ← ! (boolean~) multiply_results_compare::$2 if((boolean~) multiply_results_compare::$3) goto multiply_results_compare::@3 to:multiply_results_compare::@4 multiply_results_compare::@3: scope:[multiply_results_compare] from multiply_results_compare::@9 - (byte*) line_cursor#46 ← phi( multiply_results_compare::@9/(byte*) line_cursor#49 ) - (byte*) BGCOL#15 ← phi( multiply_results_compare::@9/(byte*) BGCOL#6 ) - (byte*) char_cursor#82 ← phi( multiply_results_compare::@9/(byte*) char_cursor#75 ) - (byte) multiply_results_compare::a#6 ← phi( multiply_results_compare::@9/(byte) multiply_results_compare::a#7 ) - (byte) multiply_results_compare::b#4 ← phi( multiply_results_compare::@9/(byte) multiply_results_compare::b#5 ) + (byte*) line_cursor#76 ← phi( multiply_results_compare::@9/(byte*) line_cursor#54 ) + (byte*) BGCOL#19 ← phi( multiply_results_compare::@9/(byte*) BGCOL#7 ) + (byte*) char_cursor#150 ← phi( multiply_results_compare::@9/(byte*) char_cursor#141 ) + (byte) multiply_results_compare::a#7 ← phi( multiply_results_compare::@9/(byte) multiply_results_compare::a#8 ) + (byte) multiply_results_compare::b#4 ← phi( multiply_results_compare::@9/(byte) multiply_results_compare::b#6 ) (byte) multiply_results_compare::b#1 ← ++ (byte) multiply_results_compare::b#4 - (boolean~) multiply_results_compare::$8 ← (byte) multiply_results_compare::b#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) multiply_results_compare::$8) goto multiply_results_compare::@2 + (boolean~) multiply_results_compare::$5 ← (byte) multiply_results_compare::b#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) multiply_results_compare::$5) goto multiply_results_compare::@2 to:multiply_results_compare::@6 multiply_results_compare::@4: scope:[multiply_results_compare] from multiply_results_compare::@9 - (byte*) line_cursor#50 ← phi( multiply_results_compare::@9/(byte*) line_cursor#49 ) - (word) multiply_results_compare::ma#4 ← phi( multiply_results_compare::@9/(word) multiply_results_compare::ma#0 ) - (word) multiply_results_compare::ms#3 ← phi( multiply_results_compare::@9/(word) multiply_results_compare::ms#1 ) - (byte*) char_cursor#68 ← phi( multiply_results_compare::@9/(byte*) char_cursor#75 ) - (byte*) BGCOL#3 ← phi( multiply_results_compare::@9/(byte*) BGCOL#6 ) + (byte*) line_cursor#44 ← phi( multiply_results_compare::@9/(byte*) line_cursor#54 ) + (byte*) char_cursor#128 ← phi( multiply_results_compare::@9/(byte*) char_cursor#141 ) + (word) multiply_results_compare::ma#1 ← phi( multiply_results_compare::@9/(word) multiply_results_compare::ma#0 ) + (word) multiply_results_compare::ms#2 ← phi( multiply_results_compare::@9/(word) multiply_results_compare::ms#1 ) + (byte) multiply_results_compare::b#5 ← phi( multiply_results_compare::@9/(byte) multiply_results_compare::b#6 ) + (byte) multiply_results_compare::a#4 ← phi( multiply_results_compare::@9/(byte) multiply_results_compare::a#8 ) + (byte*) BGCOL#3 ← phi( multiply_results_compare::@9/(byte*) BGCOL#7 ) *((byte*) BGCOL#3) ← (byte/signed byte/word/signed word) 2 - (byte*) print_str::str#4 ← (const string) multiply_results_compare::str - call print_str param-assignment + (byte) multiply_error::a#0 ← (byte) multiply_results_compare::a#4 + (byte) multiply_error::b#0 ← (byte) multiply_results_compare::b#5 + (word) multiply_error::ms#0 ← (word) multiply_results_compare::ms#2 + (word) multiply_error::ma#0 ← (word) multiply_results_compare::ma#1 + call multiply_error param-assignment to:multiply_results_compare::@10 multiply_results_compare::@10: scope:[multiply_results_compare] from multiply_results_compare::@4 - (byte*) line_cursor#45 ← phi( multiply_results_compare::@4/(byte*) line_cursor#50 ) - (word) multiply_results_compare::ma#3 ← phi( multiply_results_compare::@4/(word) multiply_results_compare::ma#4 ) - (word) multiply_results_compare::ms#2 ← phi( multiply_results_compare::@4/(word) multiply_results_compare::ms#3 ) - (byte*) char_cursor#53 ← phi( multiply_results_compare::@4/(byte*) char_cursor#2 ) - (byte*) char_cursor#23 ← (byte*) char_cursor#53 - (word) print_word::w#2 ← (word) multiply_results_compare::ms#2 - call print_word param-assignment - to:multiply_results_compare::@11 -multiply_results_compare::@11: scope:[multiply_results_compare] from multiply_results_compare::@10 - (byte*) line_cursor#39 ← phi( multiply_results_compare::@10/(byte*) line_cursor#45 ) - (word) multiply_results_compare::ma#2 ← phi( multiply_results_compare::@10/(word) multiply_results_compare::ma#3 ) - (byte*) char_cursor#54 ← phi( multiply_results_compare::@10/(byte*) char_cursor#7 ) - (byte*) char_cursor#24 ← (byte*) char_cursor#54 - (byte*) print_str::str#5 ← (const string) multiply_results_compare::str1 - call print_str param-assignment - to:multiply_results_compare::@12 -multiply_results_compare::@12: scope:[multiply_results_compare] from multiply_results_compare::@11 - (byte*) line_cursor#32 ← phi( multiply_results_compare::@11/(byte*) line_cursor#39 ) - (word) multiply_results_compare::ma#1 ← phi( multiply_results_compare::@11/(word) multiply_results_compare::ma#2 ) - (byte*) char_cursor#55 ← phi( multiply_results_compare::@11/(byte*) char_cursor#2 ) - (byte*) char_cursor#25 ← (byte*) char_cursor#55 - (word) print_word::w#3 ← (word) multiply_results_compare::ma#1 - call print_word param-assignment - to:multiply_results_compare::@13 -multiply_results_compare::@13: scope:[multiply_results_compare] from multiply_results_compare::@12 - (byte*) line_cursor#26 ← phi( multiply_results_compare::@12/(byte*) line_cursor#32 ) - (byte*) char_cursor#56 ← phi( multiply_results_compare::@12/(byte*) char_cursor#7 ) - (byte*) char_cursor#26 ← (byte*) char_cursor#56 + (byte*) line_cursor#29 ← phi( multiply_results_compare::@4/(byte*) line_cursor#13 ) + (byte*) char_cursor#88 ← phi( multiply_results_compare::@4/(byte*) char_cursor#43 ) + (byte*) char_cursor#30 ← (byte*) char_cursor#88 + (byte*) line_cursor#9 ← (byte*) line_cursor#29 to:multiply_results_compare::@return -multiply_results_compare::@return: scope:[multiply_results_compare] from multiply_results_compare::@13 multiply_results_compare::@15 - (byte*) line_cursor#19 ← phi( multiply_results_compare::@13/(byte*) line_cursor#26 multiply_results_compare::@15/(byte*) line_cursor#9 ) - (byte*) char_cursor#57 ← phi( multiply_results_compare::@13/(byte*) char_cursor#26 multiply_results_compare::@15/(byte*) char_cursor#29 ) - (byte*) char_cursor#27 ← (byte*) char_cursor#57 - (byte*) line_cursor#8 ← (byte*) line_cursor#19 +multiply_results_compare::@return: scope:[multiply_results_compare] from multiply_results_compare::@10 multiply_results_compare::@12 + (byte*) line_cursor#30 ← phi( multiply_results_compare::@10/(byte*) line_cursor#9 multiply_results_compare::@12/(byte*) line_cursor#11 ) + (byte*) char_cursor#89 ← phi( multiply_results_compare::@10/(byte*) char_cursor#30 multiply_results_compare::@12/(byte*) char_cursor#33 ) + (byte*) char_cursor#31 ← (byte*) char_cursor#89 + (byte*) line_cursor#10 ← (byte*) line_cursor#30 return to:@return multiply_results_compare::@6: scope:[multiply_results_compare] from multiply_results_compare::@3 - (byte*) BGCOL#18 ← phi( multiply_results_compare::@3/(byte*) BGCOL#15 ) - (byte*) line_cursor#40 ← phi( multiply_results_compare::@3/(byte*) line_cursor#46 ) - (byte*) char_cursor#76 ← phi( multiply_results_compare::@3/(byte*) char_cursor#82 ) - (byte) multiply_results_compare::a#4 ← phi( multiply_results_compare::@3/(byte) multiply_results_compare::a#6 ) - (byte) multiply_results_compare::a#1 ← ++ (byte) multiply_results_compare::a#4 - (boolean~) multiply_results_compare::$9 ← (byte) multiply_results_compare::a#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) multiply_results_compare::$9) goto multiply_results_compare::@1 + (byte*) BGCOL#24 ← phi( multiply_results_compare::@3/(byte*) BGCOL#19 ) + (byte*) line_cursor#66 ← phi( multiply_results_compare::@3/(byte*) line_cursor#76 ) + (byte*) char_cursor#142 ← phi( multiply_results_compare::@3/(byte*) char_cursor#150 ) + (byte) multiply_results_compare::a#5 ← phi( multiply_results_compare::@3/(byte) multiply_results_compare::a#7 ) + (byte) multiply_results_compare::a#1 ← ++ (byte) multiply_results_compare::a#5 + (boolean~) multiply_results_compare::$6 ← (byte) multiply_results_compare::a#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) multiply_results_compare::$6) goto multiply_results_compare::@1 to:multiply_results_compare::@7 multiply_results_compare::@7: scope:[multiply_results_compare] from multiply_results_compare::@6 - (byte*) line_cursor#33 ← phi( multiply_results_compare::@6/(byte*) line_cursor#40 ) - (byte*) char_cursor#69 ← phi( multiply_results_compare::@6/(byte*) char_cursor#76 ) - (byte*) print_str::str#6 ← (const string) multiply_results_compare::str2 + (byte*) line_cursor#55 ← phi( multiply_results_compare::@6/(byte*) line_cursor#66 ) + (byte*) char_cursor#129 ← phi( multiply_results_compare::@6/(byte*) char_cursor#142 ) + (byte*) print_str::str#4 ← (const string) multiply_results_compare::str call print_str param-assignment - to:multiply_results_compare::@14 -multiply_results_compare::@14: scope:[multiply_results_compare] from multiply_results_compare::@7 - (byte*) line_cursor#27 ← phi( multiply_results_compare::@7/(byte*) line_cursor#33 ) - (byte*) char_cursor#58 ← phi( multiply_results_compare::@7/(byte*) char_cursor#2 ) - (byte*) char_cursor#28 ← (byte*) char_cursor#58 + to:multiply_results_compare::@11 +multiply_results_compare::@11: scope:[multiply_results_compare] from multiply_results_compare::@7 + (byte*) line_cursor#45 ← phi( multiply_results_compare::@7/(byte*) line_cursor#55 ) + (byte*) char_cursor#90 ← phi( multiply_results_compare::@7/(byte*) char_cursor#2 ) + (byte*) char_cursor#32 ← (byte*) char_cursor#90 call print_ln param-assignment - to:multiply_results_compare::@15 -multiply_results_compare::@15: scope:[multiply_results_compare] from multiply_results_compare::@14 - (byte*) char_cursor#59 ← phi( multiply_results_compare::@14/(byte*) char_cursor#4 ) - (byte*) line_cursor#20 ← phi( multiply_results_compare::@14/(byte*) line_cursor#2 ) - (byte*) line_cursor#9 ← (byte*) line_cursor#20 - (byte*) char_cursor#29 ← (byte*) char_cursor#59 + to:multiply_results_compare::@12 +multiply_results_compare::@12: scope:[multiply_results_compare] from multiply_results_compare::@11 + (byte*) char_cursor#91 ← phi( multiply_results_compare::@11/(byte*) char_cursor#4 ) + (byte*) line_cursor#31 ← phi( multiply_results_compare::@11/(byte*) line_cursor#2 ) + (byte*) line_cursor#11 ← (byte*) line_cursor#31 + (byte*) char_cursor#33 ← (byte*) char_cursor#91 to:multiply_results_compare::@return -@13: scope:[] from @10 - (byte*) line_cursor#28 ← phi( @10/(byte*) line_cursor#34 ) - (byte*) char_cursor#70 ← phi( @10/(byte*) char_cursor#77 ) - (byte*) BGCOL#4 ← phi( @10/(byte*) BGCOL#10 ) +multiply_error: scope:[multiply_error] from multiply_results_compare::@4 + (byte*) line_cursor#95 ← phi( multiply_results_compare::@4/(byte*) line_cursor#44 ) + (word) multiply_error::ma#8 ← phi( multiply_results_compare::@4/(word) multiply_error::ma#0 ) + (word) multiply_error::ms#6 ← phi( multiply_results_compare::@4/(word) multiply_error::ms#0 ) + (byte) multiply_error::b#4 ← phi( multiply_results_compare::@4/(byte) multiply_error::b#0 ) + (byte) multiply_error::a#2 ← phi( multiply_results_compare::@4/(byte) multiply_error::a#0 ) + (byte*) char_cursor#130 ← phi( multiply_results_compare::@4/(byte*) char_cursor#128 ) + (byte*) print_str::str#5 ← (const string) multiply_error::str + call print_str param-assignment + to:multiply_error::@1 +multiply_error::@1: scope:[multiply_error] from multiply_error + (byte*) line_cursor#93 ← phi( multiply_error/(byte*) line_cursor#95 ) + (word) multiply_error::ma#7 ← phi( multiply_error/(word) multiply_error::ma#8 ) + (word) multiply_error::ms#5 ← phi( multiply_error/(word) multiply_error::ms#6 ) + (byte) multiply_error::b#3 ← phi( multiply_error/(byte) multiply_error::b#4 ) + (byte) multiply_error::a#1 ← phi( multiply_error/(byte) multiply_error::a#2 ) + (byte*) char_cursor#92 ← phi( multiply_error/(byte*) char_cursor#2 ) + (byte*) char_cursor#34 ← (byte*) char_cursor#92 + (byte) print_byte::b#3 ← (byte) multiply_error::a#1 + call print_byte param-assignment + to:multiply_error::@2 +multiply_error::@2: scope:[multiply_error] from multiply_error::@1 + (byte*) line_cursor#91 ← phi( multiply_error::@1/(byte*) line_cursor#93 ) + (word) multiply_error::ma#6 ← phi( multiply_error::@1/(word) multiply_error::ma#7 ) + (word) multiply_error::ms#4 ← phi( multiply_error::@1/(word) multiply_error::ms#5 ) + (byte) multiply_error::b#2 ← phi( multiply_error::@1/(byte) multiply_error::b#3 ) + (byte*) char_cursor#93 ← phi( multiply_error::@1/(byte*) char_cursor#16 ) + (byte*) char_cursor#35 ← (byte*) char_cursor#93 + (byte*) print_str::str#6 ← (const string) multiply_error::str1 + call print_str param-assignment + to:multiply_error::@3 +multiply_error::@3: scope:[multiply_error] from multiply_error::@2 + (byte*) line_cursor#88 ← phi( multiply_error::@2/(byte*) line_cursor#91 ) + (word) multiply_error::ma#5 ← phi( multiply_error::@2/(word) multiply_error::ma#6 ) + (word) multiply_error::ms#3 ← phi( multiply_error::@2/(word) multiply_error::ms#4 ) + (byte) multiply_error::b#1 ← phi( multiply_error::@2/(byte) multiply_error::b#2 ) + (byte*) char_cursor#94 ← phi( multiply_error::@2/(byte*) char_cursor#2 ) + (byte*) char_cursor#36 ← (byte*) char_cursor#94 + (byte) print_byte::b#4 ← (byte) multiply_error::b#1 + call print_byte param-assignment + to:multiply_error::@4 +multiply_error::@4: scope:[multiply_error] from multiply_error::@3 + (byte*) line_cursor#84 ← phi( multiply_error::@3/(byte*) line_cursor#88 ) + (word) multiply_error::ma#4 ← phi( multiply_error::@3/(word) multiply_error::ma#5 ) + (word) multiply_error::ms#2 ← phi( multiply_error::@3/(word) multiply_error::ms#3 ) + (byte*) char_cursor#95 ← phi( multiply_error::@3/(byte*) char_cursor#16 ) + (byte*) char_cursor#37 ← (byte*) char_cursor#95 + (byte*) print_str::str#7 ← (const string) multiply_error::str2 + call print_str param-assignment + to:multiply_error::@5 +multiply_error::@5: scope:[multiply_error] from multiply_error::@4 + (byte*) line_cursor#77 ← phi( multiply_error::@4/(byte*) line_cursor#84 ) + (word) multiply_error::ma#3 ← phi( multiply_error::@4/(word) multiply_error::ma#4 ) + (word) multiply_error::ms#1 ← phi( multiply_error::@4/(word) multiply_error::ms#2 ) + (byte*) char_cursor#96 ← phi( multiply_error::@4/(byte*) char_cursor#2 ) + (byte*) char_cursor#38 ← (byte*) char_cursor#96 + (word) print_word::w#3 ← (word) multiply_error::ms#1 + call print_word param-assignment + to:multiply_error::@6 +multiply_error::@6: scope:[multiply_error] from multiply_error::@5 + (byte*) line_cursor#67 ← phi( multiply_error::@5/(byte*) line_cursor#77 ) + (word) multiply_error::ma#2 ← phi( multiply_error::@5/(word) multiply_error::ma#3 ) + (byte*) char_cursor#97 ← phi( multiply_error::@5/(byte*) char_cursor#13 ) + (byte*) char_cursor#39 ← (byte*) char_cursor#97 + (byte*) print_str::str#8 ← (const string) multiply_error::str3 + call print_str param-assignment + to:multiply_error::@7 +multiply_error::@7: scope:[multiply_error] from multiply_error::@6 + (byte*) line_cursor#56 ← phi( multiply_error::@6/(byte*) line_cursor#67 ) + (word) multiply_error::ma#1 ← phi( multiply_error::@6/(word) multiply_error::ma#2 ) + (byte*) char_cursor#98 ← phi( multiply_error::@6/(byte*) char_cursor#2 ) + (byte*) char_cursor#40 ← (byte*) char_cursor#98 + (word) print_word::w#4 ← (word) multiply_error::ma#1 + call print_word param-assignment + to:multiply_error::@8 +multiply_error::@8: scope:[multiply_error] from multiply_error::@7 + (byte*) line_cursor#46 ← phi( multiply_error::@7/(byte*) line_cursor#56 ) + (byte*) char_cursor#99 ← phi( multiply_error::@7/(byte*) char_cursor#13 ) + (byte*) char_cursor#41 ← (byte*) char_cursor#99 + call print_ln param-assignment + to:multiply_error::@9 +multiply_error::@9: scope:[multiply_error] from multiply_error::@8 + (byte*) char_cursor#100 ← phi( multiply_error::@8/(byte*) char_cursor#4 ) + (byte*) line_cursor#32 ← phi( multiply_error::@8/(byte*) line_cursor#2 ) + (byte*) line_cursor#12 ← (byte*) line_cursor#32 + (byte*) char_cursor#42 ← (byte*) char_cursor#100 + to:multiply_error::@return +multiply_error::@return: scope:[multiply_error] from multiply_error::@9 + (byte*) line_cursor#33 ← phi( multiply_error::@9/(byte*) line_cursor#12 ) + (byte*) char_cursor#101 ← phi( multiply_error::@9/(byte*) char_cursor#42 ) + (byte*) char_cursor#43 ← (byte*) char_cursor#101 + (byte*) line_cursor#13 ← (byte*) line_cursor#33 + return + to:@return +signed_multiply_results_compare: scope:[signed_multiply_results_compare] from main::@5 + (byte*) line_cursor#89 ← phi( main::@5/(byte*) line_cursor#4 ) + (byte*) char_cursor#160 ← phi( main::@5/(byte*) char_cursor#20 ) + (byte*) BGCOL#25 ← phi( main::@5/(byte*) BGCOL#28 ) + (signed byte/signed word~) signed_multiply_results_compare::$0 ← - (byte/word/signed word) 128 + (signed byte) signed_multiply_results_compare::a#0 ← (signed byte/signed word~) signed_multiply_results_compare::$0 + to:signed_multiply_results_compare::@1 +signed_multiply_results_compare::@1: scope:[signed_multiply_results_compare] from signed_multiply_results_compare signed_multiply_results_compare::@6 + (byte*) line_cursor#85 ← phi( signed_multiply_results_compare/(byte*) line_cursor#89 signed_multiply_results_compare::@6/(byte*) line_cursor#69 ) + (byte*) char_cursor#158 ← phi( signed_multiply_results_compare/(byte*) char_cursor#160 signed_multiply_results_compare::@6/(byte*) char_cursor#144 ) + (byte*) BGCOL#20 ← phi( signed_multiply_results_compare/(byte*) BGCOL#25 signed_multiply_results_compare::@6/(byte*) BGCOL#26 ) + (signed byte) signed_multiply_results_compare::a#6 ← phi( signed_multiply_results_compare/(signed byte) signed_multiply_results_compare::a#0 signed_multiply_results_compare::@6/(signed byte) signed_multiply_results_compare::a#1 ) + (signed byte/signed word~) signed_multiply_results_compare::$1 ← - (byte/word/signed word) 128 + (signed byte) signed_multiply_results_compare::b#0 ← (signed byte/signed word~) signed_multiply_results_compare::$1 + to:signed_multiply_results_compare::@2 +signed_multiply_results_compare::@2: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@1 signed_multiply_results_compare::@3 + (byte*) line_cursor#78 ← phi( signed_multiply_results_compare::@1/(byte*) line_cursor#85 signed_multiply_results_compare::@3/(byte*) line_cursor#79 ) + (byte*) char_cursor#156 ← phi( signed_multiply_results_compare::@1/(byte*) char_cursor#158 signed_multiply_results_compare::@3/(byte*) char_cursor#152 ) + (byte*) BGCOL#16 ← phi( signed_multiply_results_compare::@1/(byte*) BGCOL#20 signed_multiply_results_compare::@3/(byte*) BGCOL#21 ) + (signed byte) signed_multiply_results_compare::b#2 ← phi( signed_multiply_results_compare::@1/(signed byte) signed_multiply_results_compare::b#0 signed_multiply_results_compare::@3/(signed byte) signed_multiply_results_compare::b#1 ) + (signed byte) signed_multiply_results_compare::a#2 ← phi( signed_multiply_results_compare::@1/(signed byte) signed_multiply_results_compare::a#6 signed_multiply_results_compare::@3/(signed byte) signed_multiply_results_compare::a#7 ) + (signed byte) slow_signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#2 + (signed byte) slow_signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 + call slow_signed_multiply param-assignment + (signed word) slow_signed_multiply::return#2 ← (signed word) slow_signed_multiply::return#1 + to:signed_multiply_results_compare::@8 +signed_multiply_results_compare::@8: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@2 + (byte*) line_cursor#68 ← phi( signed_multiply_results_compare::@2/(byte*) line_cursor#78 ) + (byte*) char_cursor#151 ← phi( signed_multiply_results_compare::@2/(byte*) char_cursor#156 ) + (byte*) BGCOL#12 ← phi( signed_multiply_results_compare::@2/(byte*) BGCOL#16 ) + (signed byte) signed_multiply_results_compare::b#3 ← phi( signed_multiply_results_compare::@2/(signed byte) signed_multiply_results_compare::b#2 ) + (signed byte) signed_multiply_results_compare::a#3 ← phi( signed_multiply_results_compare::@2/(signed byte) signed_multiply_results_compare::a#2 ) + (signed word) slow_signed_multiply::return#4 ← phi( signed_multiply_results_compare::@2/(signed word) slow_signed_multiply::return#2 ) + (signed word~) signed_multiply_results_compare::$2 ← (signed word) slow_signed_multiply::return#4 + (signed word) signed_multiply_results_compare::ms#0 ← (signed word~) signed_multiply_results_compare::$2 + (signed byte) signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#3 + (signed byte) signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#3 + call signed_multiply param-assignment + (signed word) signed_multiply::return#2 ← (signed word) signed_multiply::return#1 + to:signed_multiply_results_compare::@9 +signed_multiply_results_compare::@9: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@8 + (byte*) line_cursor#57 ← phi( signed_multiply_results_compare::@8/(byte*) line_cursor#68 ) + (byte*) char_cursor#143 ← phi( signed_multiply_results_compare::@8/(byte*) char_cursor#151 ) + (signed byte) signed_multiply_results_compare::a#8 ← phi( signed_multiply_results_compare::@8/(signed byte) signed_multiply_results_compare::a#3 ) + (byte*) BGCOL#8 ← phi( signed_multiply_results_compare::@8/(byte*) BGCOL#12 ) + (signed byte) signed_multiply_results_compare::b#6 ← phi( signed_multiply_results_compare::@8/(signed byte) signed_multiply_results_compare::b#3 ) + (signed word) signed_multiply_results_compare::ms#1 ← phi( signed_multiply_results_compare::@8/(signed word) signed_multiply_results_compare::ms#0 ) + (signed word) signed_multiply::return#4 ← phi( signed_multiply_results_compare::@8/(signed word) signed_multiply::return#2 ) + (signed word~) signed_multiply_results_compare::$3 ← (signed word) signed_multiply::return#4 + (signed word) signed_multiply_results_compare::ma#0 ← (signed word~) signed_multiply_results_compare::$3 + (boolean~) signed_multiply_results_compare::$4 ← (signed word) signed_multiply_results_compare::ms#1 != (signed word) signed_multiply_results_compare::ma#0 + (boolean~) signed_multiply_results_compare::$5 ← ! (boolean~) signed_multiply_results_compare::$4 + if((boolean~) signed_multiply_results_compare::$5) goto signed_multiply_results_compare::@3 + to:signed_multiply_results_compare::@4 +signed_multiply_results_compare::@3: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@9 + (byte*) line_cursor#79 ← phi( signed_multiply_results_compare::@9/(byte*) line_cursor#57 ) + (byte*) BGCOL#21 ← phi( signed_multiply_results_compare::@9/(byte*) BGCOL#8 ) + (byte*) char_cursor#152 ← phi( signed_multiply_results_compare::@9/(byte*) char_cursor#143 ) + (signed byte) signed_multiply_results_compare::a#7 ← phi( signed_multiply_results_compare::@9/(signed byte) signed_multiply_results_compare::a#8 ) + (signed byte) signed_multiply_results_compare::b#4 ← phi( signed_multiply_results_compare::@9/(signed byte) signed_multiply_results_compare::b#6 ) + (signed byte) signed_multiply_results_compare::b#1 ← ++ (signed byte) signed_multiply_results_compare::b#4 + (signed byte/signed word~) signed_multiply_results_compare::$7 ← - (byte/word/signed word) 128 + (boolean~) signed_multiply_results_compare::$8 ← (signed byte) signed_multiply_results_compare::b#1 != (signed byte/signed word~) signed_multiply_results_compare::$7 + if((boolean~) signed_multiply_results_compare::$8) goto signed_multiply_results_compare::@2 + to:signed_multiply_results_compare::@6 +signed_multiply_results_compare::@4: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@9 + (byte*) line_cursor#47 ← phi( signed_multiply_results_compare::@9/(byte*) line_cursor#57 ) + (byte*) char_cursor#131 ← phi( signed_multiply_results_compare::@9/(byte*) char_cursor#143 ) + (signed word) signed_multiply_results_compare::ma#1 ← phi( signed_multiply_results_compare::@9/(signed word) signed_multiply_results_compare::ma#0 ) + (signed word) signed_multiply_results_compare::ms#2 ← phi( signed_multiply_results_compare::@9/(signed word) signed_multiply_results_compare::ms#1 ) + (signed byte) signed_multiply_results_compare::b#5 ← phi( signed_multiply_results_compare::@9/(signed byte) signed_multiply_results_compare::b#6 ) + (signed byte) signed_multiply_results_compare::a#4 ← phi( signed_multiply_results_compare::@9/(signed byte) signed_multiply_results_compare::a#8 ) + (byte*) BGCOL#4 ← phi( signed_multiply_results_compare::@9/(byte*) BGCOL#8 ) + *((byte*) BGCOL#4) ← (byte/signed byte/word/signed word) 2 + (signed byte) signed_multiply_error::a#0 ← (signed byte) signed_multiply_results_compare::a#4 + (signed byte) signed_multiply_error::b#0 ← (signed byte) signed_multiply_results_compare::b#5 + (signed word) signed_multiply_error::ms#0 ← (signed word) signed_multiply_results_compare::ms#2 + (signed word) signed_multiply_error::ma#0 ← (signed word) signed_multiply_results_compare::ma#1 + call signed_multiply_error param-assignment + to:signed_multiply_results_compare::@10 +signed_multiply_results_compare::@10: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@4 + (byte*) line_cursor#34 ← phi( signed_multiply_results_compare::@4/(byte*) line_cursor#18 ) + (byte*) char_cursor#102 ← phi( signed_multiply_results_compare::@4/(byte*) char_cursor#57 ) + (byte*) char_cursor#44 ← (byte*) char_cursor#102 + (byte*) line_cursor#14 ← (byte*) line_cursor#34 + to:signed_multiply_results_compare::@return +signed_multiply_results_compare::@return: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@10 signed_multiply_results_compare::@12 + (byte*) line_cursor#35 ← phi( signed_multiply_results_compare::@10/(byte*) line_cursor#14 signed_multiply_results_compare::@12/(byte*) line_cursor#16 ) + (byte*) char_cursor#103 ← phi( signed_multiply_results_compare::@10/(byte*) char_cursor#44 signed_multiply_results_compare::@12/(byte*) char_cursor#47 ) + (byte*) char_cursor#45 ← (byte*) char_cursor#103 + (byte*) line_cursor#15 ← (byte*) line_cursor#35 + return + to:@return +signed_multiply_results_compare::@6: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@3 + (byte*) BGCOL#26 ← phi( signed_multiply_results_compare::@3/(byte*) BGCOL#21 ) + (byte*) line_cursor#69 ← phi( signed_multiply_results_compare::@3/(byte*) line_cursor#79 ) + (byte*) char_cursor#144 ← phi( signed_multiply_results_compare::@3/(byte*) char_cursor#152 ) + (signed byte) signed_multiply_results_compare::a#5 ← phi( signed_multiply_results_compare::@3/(signed byte) signed_multiply_results_compare::a#7 ) + (signed byte) signed_multiply_results_compare::a#1 ← ++ (signed byte) signed_multiply_results_compare::a#5 + (signed byte/signed word~) signed_multiply_results_compare::$9 ← - (byte/word/signed word) 128 + (boolean~) signed_multiply_results_compare::$10 ← (signed byte) signed_multiply_results_compare::a#1 != (signed byte/signed word~) signed_multiply_results_compare::$9 + if((boolean~) signed_multiply_results_compare::$10) goto signed_multiply_results_compare::@1 + to:signed_multiply_results_compare::@7 +signed_multiply_results_compare::@7: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@6 + (byte*) line_cursor#58 ← phi( signed_multiply_results_compare::@6/(byte*) line_cursor#69 ) + (byte*) char_cursor#132 ← phi( signed_multiply_results_compare::@6/(byte*) char_cursor#144 ) + (byte*) print_str::str#9 ← (const string) signed_multiply_results_compare::str + call print_str param-assignment + to:signed_multiply_results_compare::@11 +signed_multiply_results_compare::@11: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@7 + (byte*) line_cursor#48 ← phi( signed_multiply_results_compare::@7/(byte*) line_cursor#58 ) + (byte*) char_cursor#104 ← phi( signed_multiply_results_compare::@7/(byte*) char_cursor#2 ) + (byte*) char_cursor#46 ← (byte*) char_cursor#104 + call print_ln param-assignment + to:signed_multiply_results_compare::@12 +signed_multiply_results_compare::@12: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@11 + (byte*) char_cursor#105 ← phi( signed_multiply_results_compare::@11/(byte*) char_cursor#4 ) + (byte*) line_cursor#36 ← phi( signed_multiply_results_compare::@11/(byte*) line_cursor#2 ) + (byte*) line_cursor#16 ← (byte*) line_cursor#36 + (byte*) char_cursor#47 ← (byte*) char_cursor#105 + to:signed_multiply_results_compare::@return +signed_multiply_error: scope:[signed_multiply_error] from signed_multiply_results_compare::@4 + (byte*) line_cursor#96 ← phi( signed_multiply_results_compare::@4/(byte*) line_cursor#47 ) + (signed word) signed_multiply_error::ma#8 ← phi( signed_multiply_results_compare::@4/(signed word) signed_multiply_error::ma#0 ) + (signed word) signed_multiply_error::ms#6 ← phi( signed_multiply_results_compare::@4/(signed word) signed_multiply_error::ms#0 ) + (signed byte) signed_multiply_error::b#4 ← phi( signed_multiply_results_compare::@4/(signed byte) signed_multiply_error::b#0 ) + (signed byte) signed_multiply_error::a#2 ← phi( signed_multiply_results_compare::@4/(signed byte) signed_multiply_error::a#0 ) + (byte*) char_cursor#133 ← phi( signed_multiply_results_compare::@4/(byte*) char_cursor#131 ) + (byte*) print_str::str#10 ← (const string) signed_multiply_error::str + call print_str param-assignment + to:signed_multiply_error::@1 +signed_multiply_error::@1: scope:[signed_multiply_error] from signed_multiply_error + (byte*) line_cursor#94 ← phi( signed_multiply_error/(byte*) line_cursor#96 ) + (signed word) signed_multiply_error::ma#7 ← phi( signed_multiply_error/(signed word) signed_multiply_error::ma#8 ) + (signed word) signed_multiply_error::ms#5 ← phi( signed_multiply_error/(signed word) signed_multiply_error::ms#6 ) + (signed byte) signed_multiply_error::b#3 ← phi( signed_multiply_error/(signed byte) signed_multiply_error::b#4 ) + (signed byte) signed_multiply_error::a#1 ← phi( signed_multiply_error/(signed byte) signed_multiply_error::a#2 ) + (byte*) char_cursor#106 ← phi( signed_multiply_error/(byte*) char_cursor#2 ) + (byte*) char_cursor#48 ← (byte*) char_cursor#106 + (signed byte) print_sbyte::b#1 ← (signed byte) signed_multiply_error::a#1 + call print_sbyte param-assignment + to:signed_multiply_error::@2 +signed_multiply_error::@2: scope:[signed_multiply_error] from signed_multiply_error::@1 + (byte*) line_cursor#92 ← phi( signed_multiply_error::@1/(byte*) line_cursor#94 ) + (signed word) signed_multiply_error::ma#6 ← phi( signed_multiply_error::@1/(signed word) signed_multiply_error::ma#7 ) + (signed word) signed_multiply_error::ms#4 ← phi( signed_multiply_error::@1/(signed word) signed_multiply_error::ms#5 ) + (signed byte) signed_multiply_error::b#2 ← phi( signed_multiply_error::@1/(signed byte) signed_multiply_error::b#3 ) + (byte*) char_cursor#107 ← phi( signed_multiply_error::@1/(byte*) char_cursor#10 ) + (byte*) char_cursor#49 ← (byte*) char_cursor#107 + (byte*) print_str::str#11 ← (const string) signed_multiply_error::str1 + call print_str param-assignment + to:signed_multiply_error::@3 +signed_multiply_error::@3: scope:[signed_multiply_error] from signed_multiply_error::@2 + (byte*) line_cursor#90 ← phi( signed_multiply_error::@2/(byte*) line_cursor#92 ) + (signed word) signed_multiply_error::ma#5 ← phi( signed_multiply_error::@2/(signed word) signed_multiply_error::ma#6 ) + (signed word) signed_multiply_error::ms#3 ← phi( signed_multiply_error::@2/(signed word) signed_multiply_error::ms#4 ) + (signed byte) signed_multiply_error::b#1 ← phi( signed_multiply_error::@2/(signed byte) signed_multiply_error::b#2 ) + (byte*) char_cursor#108 ← phi( signed_multiply_error::@2/(byte*) char_cursor#2 ) + (byte*) char_cursor#50 ← (byte*) char_cursor#108 + (signed byte) print_sbyte::b#2 ← (signed byte) signed_multiply_error::b#1 + call print_sbyte param-assignment + to:signed_multiply_error::@4 +signed_multiply_error::@4: scope:[signed_multiply_error] from signed_multiply_error::@3 + (byte*) line_cursor#86 ← phi( signed_multiply_error::@3/(byte*) line_cursor#90 ) + (signed word) signed_multiply_error::ma#4 ← phi( signed_multiply_error::@3/(signed word) signed_multiply_error::ma#5 ) + (signed word) signed_multiply_error::ms#2 ← phi( signed_multiply_error::@3/(signed word) signed_multiply_error::ms#3 ) + (byte*) char_cursor#109 ← phi( signed_multiply_error::@3/(byte*) char_cursor#10 ) + (byte*) char_cursor#51 ← (byte*) char_cursor#109 + (byte*) print_str::str#12 ← (const string) signed_multiply_error::str2 + call print_str param-assignment + to:signed_multiply_error::@5 +signed_multiply_error::@5: scope:[signed_multiply_error] from signed_multiply_error::@4 + (byte*) line_cursor#80 ← phi( signed_multiply_error::@4/(byte*) line_cursor#86 ) + (signed word) signed_multiply_error::ma#3 ← phi( signed_multiply_error::@4/(signed word) signed_multiply_error::ma#4 ) + (signed word) signed_multiply_error::ms#1 ← phi( signed_multiply_error::@4/(signed word) signed_multiply_error::ms#2 ) + (byte*) char_cursor#110 ← phi( signed_multiply_error::@4/(byte*) char_cursor#2 ) + (byte*) char_cursor#52 ← (byte*) char_cursor#110 + (signed word) print_sword::w#1 ← (signed word) signed_multiply_error::ms#1 + call print_sword param-assignment + to:signed_multiply_error::@6 +signed_multiply_error::@6: scope:[signed_multiply_error] from signed_multiply_error::@5 + (byte*) line_cursor#70 ← phi( signed_multiply_error::@5/(byte*) line_cursor#80 ) + (signed word) signed_multiply_error::ma#2 ← phi( signed_multiply_error::@5/(signed word) signed_multiply_error::ma#3 ) + (byte*) char_cursor#111 ← phi( signed_multiply_error::@5/(byte*) char_cursor#7 ) + (byte*) char_cursor#53 ← (byte*) char_cursor#111 + (byte*) print_str::str#13 ← (const string) signed_multiply_error::str3 + call print_str param-assignment + to:signed_multiply_error::@7 +signed_multiply_error::@7: scope:[signed_multiply_error] from signed_multiply_error::@6 + (byte*) line_cursor#59 ← phi( signed_multiply_error::@6/(byte*) line_cursor#70 ) + (signed word) signed_multiply_error::ma#1 ← phi( signed_multiply_error::@6/(signed word) signed_multiply_error::ma#2 ) + (byte*) char_cursor#112 ← phi( signed_multiply_error::@6/(byte*) char_cursor#2 ) + (byte*) char_cursor#54 ← (byte*) char_cursor#112 + (signed word) print_sword::w#2 ← (signed word) signed_multiply_error::ma#1 + call print_sword param-assignment + to:signed_multiply_error::@8 +signed_multiply_error::@8: scope:[signed_multiply_error] from signed_multiply_error::@7 + (byte*) line_cursor#49 ← phi( signed_multiply_error::@7/(byte*) line_cursor#59 ) + (byte*) char_cursor#113 ← phi( signed_multiply_error::@7/(byte*) char_cursor#7 ) + (byte*) char_cursor#55 ← (byte*) char_cursor#113 + call print_ln param-assignment + to:signed_multiply_error::@9 +signed_multiply_error::@9: scope:[signed_multiply_error] from signed_multiply_error::@8 + (byte*) char_cursor#114 ← phi( signed_multiply_error::@8/(byte*) char_cursor#4 ) + (byte*) line_cursor#37 ← phi( signed_multiply_error::@8/(byte*) line_cursor#2 ) + (byte*) line_cursor#17 ← (byte*) line_cursor#37 + (byte*) char_cursor#56 ← (byte*) char_cursor#114 + to:signed_multiply_error::@return +signed_multiply_error::@return: scope:[signed_multiply_error] from signed_multiply_error::@9 + (byte*) line_cursor#38 ← phi( signed_multiply_error::@9/(byte*) line_cursor#17 ) + (byte*) char_cursor#115 ← phi( signed_multiply_error::@9/(byte*) char_cursor#56 ) + (byte*) char_cursor#57 ← (byte*) char_cursor#115 + (byte*) line_cursor#18 ← (byte*) line_cursor#38 + return + to:@return +@20: scope:[] from @14 + (byte*) line_cursor#50 ← phi( @14/(byte*) line_cursor#60 ) + (byte*) char_cursor#134 ← phi( @14/(byte*) char_cursor#145 ) + (byte*) BGCOL#5 ← phi( @14/(byte*) BGCOL#13 ) call main param-assignment - to:@14 -@14: scope:[] from @13 - (byte*) line_cursor#21 ← phi( @13/(byte*) line_cursor#5 ) - (byte*) char_cursor#60 ← phi( @13/(byte*) char_cursor#15 ) - (byte*) char_cursor#30 ← (byte*) char_cursor#60 - (byte*) line_cursor#10 ← (byte*) line_cursor#21 + to:@21 +@21: scope:[] from @20 + (byte*) line_cursor#39 ← phi( @20/(byte*) line_cursor#6 ) + (byte*) char_cursor#116 ← phi( @20/(byte*) char_cursor#22 ) + (byte*) char_cursor#58 ← (byte*) char_cursor#116 + (byte*) line_cursor#19 ← (byte*) line_cursor#39 to:@end -@end: scope:[] from @14 +@end: scope:[] from @21 SYMBOL TABLE SSA -(label) @10 -(label) @13 +(label) @11 (label) @14 -(label) @6 +(label) @20 +(label) @21 (label) @8 (label) @begin (label) @end @@ -1686,6 +2784,15 @@ SYMBOL TABLE SSA (byte*) BGCOL#18 (byte*) BGCOL#19 (byte*) BGCOL#2 +(byte*) BGCOL#20 +(byte*) BGCOL#21 +(byte*) BGCOL#22 +(byte*) BGCOL#23 +(byte*) BGCOL#24 +(byte*) BGCOL#25 +(byte*) BGCOL#26 +(byte*) BGCOL#27 +(byte*) BGCOL#28 (byte*) BGCOL#3 (byte*) BGCOL#4 (byte*) BGCOL#5 @@ -1705,12 +2812,73 @@ SYMBOL TABLE SSA (byte*) char_cursor#0 (byte*) char_cursor#1 (byte*) char_cursor#10 +(byte*) char_cursor#100 +(byte*) char_cursor#101 +(byte*) char_cursor#102 +(byte*) char_cursor#103 +(byte*) char_cursor#104 +(byte*) char_cursor#105 +(byte*) char_cursor#106 +(byte*) char_cursor#107 +(byte*) char_cursor#108 +(byte*) char_cursor#109 (byte*) char_cursor#11 +(byte*) char_cursor#110 +(byte*) char_cursor#111 +(byte*) char_cursor#112 +(byte*) char_cursor#113 +(byte*) char_cursor#114 +(byte*) char_cursor#115 +(byte*) char_cursor#116 +(byte*) char_cursor#117 +(byte*) char_cursor#118 +(byte*) char_cursor#119 (byte*) char_cursor#12 +(byte*) char_cursor#120 +(byte*) char_cursor#121 +(byte*) char_cursor#122 +(byte*) char_cursor#123 +(byte*) char_cursor#124 +(byte*) char_cursor#125 +(byte*) char_cursor#126 +(byte*) char_cursor#127 +(byte*) char_cursor#128 +(byte*) char_cursor#129 (byte*) char_cursor#13 +(byte*) char_cursor#130 +(byte*) char_cursor#131 +(byte*) char_cursor#132 +(byte*) char_cursor#133 +(byte*) char_cursor#134 +(byte*) char_cursor#135 +(byte*) char_cursor#136 +(byte*) char_cursor#137 +(byte*) char_cursor#138 +(byte*) char_cursor#139 (byte*) char_cursor#14 +(byte*) char_cursor#140 +(byte*) char_cursor#141 +(byte*) char_cursor#142 +(byte*) char_cursor#143 +(byte*) char_cursor#144 +(byte*) char_cursor#145 +(byte*) char_cursor#146 +(byte*) char_cursor#147 +(byte*) char_cursor#148 +(byte*) char_cursor#149 (byte*) char_cursor#15 +(byte*) char_cursor#150 +(byte*) char_cursor#151 +(byte*) char_cursor#152 +(byte*) char_cursor#153 +(byte*) char_cursor#154 +(byte*) char_cursor#155 +(byte*) char_cursor#156 +(byte*) char_cursor#157 +(byte*) char_cursor#158 +(byte*) char_cursor#159 (byte*) char_cursor#16 +(byte*) char_cursor#160 (byte*) char_cursor#17 (byte*) char_cursor#18 (byte*) char_cursor#19 @@ -1789,7 +2957,19 @@ SYMBOL TABLE SSA (byte*) char_cursor#85 (byte*) char_cursor#86 (byte*) char_cursor#87 +(byte*) char_cursor#88 +(byte*) char_cursor#89 (byte*) char_cursor#9 +(byte*) char_cursor#90 +(byte*) char_cursor#91 +(byte*) char_cursor#92 +(byte*) char_cursor#93 +(byte*) char_cursor#94 +(byte*) char_cursor#95 +(byte*) char_cursor#96 +(byte*) char_cursor#97 +(byte*) char_cursor#98 +(byte*) char_cursor#99 (void()) init_multiply() (byte*~) init_multiply::$0 (byte*~) init_multiply::$1 @@ -1931,16 +3111,59 @@ SYMBOL TABLE SSA (byte*) line_cursor#52 (byte*) line_cursor#53 (byte*) line_cursor#54 +(byte*) line_cursor#55 +(byte*) line_cursor#56 +(byte*) line_cursor#57 +(byte*) line_cursor#58 +(byte*) line_cursor#59 (byte*) line_cursor#6 +(byte*) line_cursor#60 +(byte*) line_cursor#61 +(byte*) line_cursor#62 +(byte*) line_cursor#63 +(byte*) line_cursor#64 +(byte*) line_cursor#65 +(byte*) line_cursor#66 +(byte*) line_cursor#67 +(byte*) line_cursor#68 +(byte*) line_cursor#69 (byte*) line_cursor#7 +(byte*) line_cursor#70 +(byte*) line_cursor#71 +(byte*) line_cursor#72 +(byte*) line_cursor#73 +(byte*) line_cursor#74 +(byte*) line_cursor#75 +(byte*) line_cursor#76 +(byte*) line_cursor#77 +(byte*) line_cursor#78 +(byte*) line_cursor#79 (byte*) line_cursor#8 +(byte*) line_cursor#80 +(byte*) line_cursor#81 +(byte*) line_cursor#82 +(byte*) line_cursor#83 +(byte*) line_cursor#84 +(byte*) line_cursor#85 +(byte*) line_cursor#86 +(byte*) line_cursor#87 +(byte*) line_cursor#88 +(byte*) line_cursor#89 (byte*) line_cursor#9 +(byte*) line_cursor#90 +(byte*) line_cursor#91 +(byte*) line_cursor#92 +(byte*) line_cursor#93 +(byte*) line_cursor#94 +(byte*) line_cursor#95 +(byte*) line_cursor#96 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (label) main::@5 +(label) main::@6 (label) main::@return (byte[512]) mul_sqr1_hi (byte[512]) mul_sqr1_hi#0 @@ -1955,9 +3178,11 @@ SYMBOL TABLE SSA (byte) multiply::a (byte) multiply::a#0 (byte) multiply::a#1 +(byte) multiply::a#2 (byte) multiply::b (byte) multiply::b#0 (byte) multiply::b#1 +(byte) multiply::b#2 (byte*) multiply::memA (byte*) multiply::memA#0 (byte*) multiply::memB @@ -1968,20 +3193,62 @@ SYMBOL TABLE SSA (word) multiply::return#2 (word) multiply::return#3 (word) multiply::return#4 +(word) multiply::return#5 +(word) multiply::return#6 +(void()) multiply_error((byte) multiply_error::a , (byte) multiply_error::b , (word) multiply_error::ms , (word) multiply_error::ma) +(label) multiply_error::@1 +(label) multiply_error::@2 +(label) multiply_error::@3 +(label) multiply_error::@4 +(label) multiply_error::@5 +(label) multiply_error::@6 +(label) multiply_error::@7 +(label) multiply_error::@8 +(label) multiply_error::@9 +(label) multiply_error::@return +(byte) multiply_error::a +(byte) multiply_error::a#0 +(byte) multiply_error::a#1 +(byte) multiply_error::a#2 +(byte) multiply_error::b +(byte) multiply_error::b#0 +(byte) multiply_error::b#1 +(byte) multiply_error::b#2 +(byte) multiply_error::b#3 +(byte) multiply_error::b#4 +(word) multiply_error::ma +(word) multiply_error::ma#0 +(word) multiply_error::ma#1 +(word) multiply_error::ma#2 +(word) multiply_error::ma#3 +(word) multiply_error::ma#4 +(word) multiply_error::ma#5 +(word) multiply_error::ma#6 +(word) multiply_error::ma#7 +(word) multiply_error::ma#8 +(word) multiply_error::ms +(word) multiply_error::ms#0 +(word) multiply_error::ms#1 +(word) multiply_error::ms#2 +(word) multiply_error::ms#3 +(word) multiply_error::ms#4 +(word) multiply_error::ms#5 +(word) multiply_error::ms#6 +(const string) multiply_error::str = (string) "multiply mismatch @" +(const string) multiply_error::str1 = (string) "*@" +(const string) multiply_error::str2 = (string) " slow:@" +(const string) multiply_error::str3 = (string) " / fast asm:@" (void()) multiply_results_compare() (word~) multiply_results_compare::$0 (word~) multiply_results_compare::$1 (boolean~) multiply_results_compare::$2 (boolean~) multiply_results_compare::$3 -(boolean~) multiply_results_compare::$8 -(boolean~) multiply_results_compare::$9 +(boolean~) multiply_results_compare::$5 +(boolean~) multiply_results_compare::$6 (label) multiply_results_compare::@1 (label) multiply_results_compare::@10 (label) multiply_results_compare::@11 (label) multiply_results_compare::@12 -(label) multiply_results_compare::@13 -(label) multiply_results_compare::@14 -(label) multiply_results_compare::@15 (label) multiply_results_compare::@2 (label) multiply_results_compare::@3 (label) multiply_results_compare::@4 @@ -1999,6 +3266,7 @@ SYMBOL TABLE SSA (byte) multiply_results_compare::a#5 (byte) multiply_results_compare::a#6 (byte) multiply_results_compare::a#7 +(byte) multiply_results_compare::a#8 (byte) multiply_results_compare::b (byte) multiply_results_compare::b#0 (byte) multiply_results_compare::b#1 @@ -2006,20 +3274,15 @@ SYMBOL TABLE SSA (byte) multiply_results_compare::b#3 (byte) multiply_results_compare::b#4 (byte) multiply_results_compare::b#5 +(byte) multiply_results_compare::b#6 (word) multiply_results_compare::ma (word) multiply_results_compare::ma#0 (word) multiply_results_compare::ma#1 -(word) multiply_results_compare::ma#2 -(word) multiply_results_compare::ma#3 -(word) multiply_results_compare::ma#4 (word) multiply_results_compare::ms (word) multiply_results_compare::ms#0 (word) multiply_results_compare::ms#1 (word) multiply_results_compare::ms#2 -(word) multiply_results_compare::ms#3 -(const string) multiply_results_compare::str = (string) "multiply mismatch slow:@" -(const string) multiply_results_compare::str1 = (string) " / fast asm:" -(const string) multiply_results_compare::str2 = (string) "multiply results match!@" +(const string) multiply_results_compare::str = (string) "multiply results match!@" (void()) multiply_tables_compare() (boolean~) multiply_tables_compare::$0 (boolean~) multiply_tables_compare::$1 @@ -2061,6 +3324,7 @@ SYMBOL TABLE SSA (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 (byte~) print_byte::$2 +(const string) print_byte::$4 = (string) "0123456789abcdef" (label) print_byte::@1 (label) print_byte::@2 (label) print_byte::@return @@ -2069,6 +3333,9 @@ SYMBOL TABLE SSA (byte) print_byte::b#1 (byte) print_byte::b#2 (byte) print_byte::b#3 +(byte) print_byte::b#4 +(byte) print_byte::b#5 +(byte) print_byte::b#6 (byte[]) print_byte::hextab (byte[]) print_byte::hextab#0 (void()) print_char((byte) print_char::ch) @@ -2077,6 +3344,8 @@ SYMBOL TABLE SSA (byte) print_char::ch#0 (byte) print_char::ch#1 (byte) print_char::ch#2 +(byte) print_char::ch#3 +(byte) print_char::ch#4 (void()) print_cls() (word/signed word~) print_cls::$0 (boolean~) print_cls::$1 @@ -2092,6 +3361,24 @@ SYMBOL TABLE SSA (label) print_ln::@1 (label) print_ln::@2 (label) print_ln::@return +(void()) print_sbyte((signed byte) print_sbyte::b) +(boolean~) print_sbyte::$0 +(boolean~) print_sbyte::$1 +(signed byte~) print_sbyte::$3 +(byte~) print_sbyte::$4 +(label) print_sbyte::@1 +(label) print_sbyte::@2 +(label) print_sbyte::@3 +(label) print_sbyte::@4 +(label) print_sbyte::@return +(signed byte) print_sbyte::b +(signed byte) print_sbyte::b#0 +(signed byte) print_sbyte::b#1 +(signed byte) print_sbyte::b#2 +(signed byte) print_sbyte::b#3 +(signed byte) print_sbyte::b#4 +(signed byte) print_sbyte::b#5 +(signed byte) print_sbyte::b#6 (void()) print_str((byte*) print_str::str) (boolean~) print_str::$0 (label) print_str::@1 @@ -2100,6 +3387,13 @@ SYMBOL TABLE SSA (byte*) print_str::str (byte*) print_str::str#0 (byte*) print_str::str#1 +(byte*) print_str::str#10 +(byte*) print_str::str#11 +(byte*) print_str::str#12 +(byte*) print_str::str#13 +(byte*) print_str::str#14 +(byte*) print_str::str#15 +(byte*) print_str::str#16 (byte*) print_str::str#2 (byte*) print_str::str#3 (byte*) print_str::str#4 @@ -2108,6 +3402,24 @@ SYMBOL TABLE SSA (byte*) print_str::str#7 (byte*) print_str::str#8 (byte*) print_str::str#9 +(void()) print_sword((signed word) print_sword::w) +(boolean~) print_sword::$0 +(boolean~) print_sword::$1 +(signed word~) print_sword::$3 +(word~) print_sword::$4 +(label) print_sword::@1 +(label) print_sword::@2 +(label) print_sword::@3 +(label) print_sword::@4 +(label) print_sword::@return +(signed word) print_sword::w +(signed word) print_sword::w#0 +(signed word) print_sword::w#1 +(signed word) print_sword::w#2 +(signed word) print_sword::w#3 +(signed word) print_sword::w#4 +(signed word) print_sword::w#5 +(signed word) print_sword::w#6 (void()) print_word((word) print_word::w) (byte~) print_word::$0 (byte~) print_word::$2 @@ -2121,6 +3433,149 @@ SYMBOL TABLE SSA (word) print_word::w#3 (word) print_word::w#4 (word) print_word::w#5 +(word) print_word::w#6 +(signed word()) signed_multiply((signed byte) signed_multiply::a , (signed byte) signed_multiply::b) +(byte~) signed_multiply::$0 +(byte~) signed_multiply::$1 +(boolean~) signed_multiply::$10 +(byte~) signed_multiply::$12 +(byte~) signed_multiply::$13 +(byte/signed byte/word/signed word~) signed_multiply::$14 +(signed word~) signed_multiply::$15 +(byte/signed byte/word/signed word~) signed_multiply::$16 +(byte/signed byte/word/signed word~) signed_multiply::$17 +(word~) signed_multiply::$2 +(boolean~) signed_multiply::$3 +(boolean~) signed_multiply::$4 +(byte~) signed_multiply::$6 +(byte~) signed_multiply::$7 +(byte/signed byte/word/signed word~) signed_multiply::$8 +(boolean~) signed_multiply::$9 +(label) signed_multiply::@1 +(label) signed_multiply::@2 +(label) signed_multiply::@3 +(label) signed_multiply::@4 +(label) signed_multiply::@6 +(label) signed_multiply::@return +(signed byte) signed_multiply::a +(signed byte) signed_multiply::a#0 +(signed byte) signed_multiply::a#1 +(signed byte) signed_multiply::a#2 +(signed byte) signed_multiply::a#3 +(signed byte) signed_multiply::a#4 +(signed byte) signed_multiply::a#5 +(signed byte) signed_multiply::b +(signed byte) signed_multiply::b#0 +(signed byte) signed_multiply::b#1 +(signed byte) signed_multiply::b#2 +(signed byte) signed_multiply::b#3 +(signed byte) signed_multiply::b#4 +(word) signed_multiply::m +(word) signed_multiply::m#0 +(word) signed_multiply::m#1 +(word) signed_multiply::m#2 +(word) signed_multiply::m#3 +(word) signed_multiply::m#4 +(word) signed_multiply::m#5 +(word) signed_multiply::m#6 +(signed word) signed_multiply::return +(signed word) signed_multiply::return#0 +(signed word) signed_multiply::return#1 +(signed word) signed_multiply::return#2 +(signed word) signed_multiply::return#3 +(signed word) signed_multiply::return#4 +(void()) signed_multiply_error((signed byte) signed_multiply_error::a , (signed byte) signed_multiply_error::b , (signed word) signed_multiply_error::ms , (signed word) signed_multiply_error::ma) +(label) signed_multiply_error::@1 +(label) signed_multiply_error::@2 +(label) signed_multiply_error::@3 +(label) signed_multiply_error::@4 +(label) signed_multiply_error::@5 +(label) signed_multiply_error::@6 +(label) signed_multiply_error::@7 +(label) signed_multiply_error::@8 +(label) signed_multiply_error::@9 +(label) signed_multiply_error::@return +(signed byte) signed_multiply_error::a +(signed byte) signed_multiply_error::a#0 +(signed byte) signed_multiply_error::a#1 +(signed byte) signed_multiply_error::a#2 +(signed byte) signed_multiply_error::b +(signed byte) signed_multiply_error::b#0 +(signed byte) signed_multiply_error::b#1 +(signed byte) signed_multiply_error::b#2 +(signed byte) signed_multiply_error::b#3 +(signed byte) signed_multiply_error::b#4 +(signed word) signed_multiply_error::ma +(signed word) signed_multiply_error::ma#0 +(signed word) signed_multiply_error::ma#1 +(signed word) signed_multiply_error::ma#2 +(signed word) signed_multiply_error::ma#3 +(signed word) signed_multiply_error::ma#4 +(signed word) signed_multiply_error::ma#5 +(signed word) signed_multiply_error::ma#6 +(signed word) signed_multiply_error::ma#7 +(signed word) signed_multiply_error::ma#8 +(signed word) signed_multiply_error::ms +(signed word) signed_multiply_error::ms#0 +(signed word) signed_multiply_error::ms#1 +(signed word) signed_multiply_error::ms#2 +(signed word) signed_multiply_error::ms#3 +(signed word) signed_multiply_error::ms#4 +(signed word) signed_multiply_error::ms#5 +(signed word) signed_multiply_error::ms#6 +(const string) signed_multiply_error::str = (string) "signed multiply mismatch @" +(const string) signed_multiply_error::str1 = (string) "*@" +(const string) signed_multiply_error::str2 = (string) " slow:@" +(const string) signed_multiply_error::str3 = (string) " / fast asm:@" +(void()) signed_multiply_results_compare() +(signed byte/signed word~) signed_multiply_results_compare::$0 +(signed byte/signed word~) signed_multiply_results_compare::$1 +(boolean~) signed_multiply_results_compare::$10 +(signed word~) signed_multiply_results_compare::$2 +(signed word~) signed_multiply_results_compare::$3 +(boolean~) signed_multiply_results_compare::$4 +(boolean~) signed_multiply_results_compare::$5 +(signed byte/signed word~) signed_multiply_results_compare::$7 +(boolean~) signed_multiply_results_compare::$8 +(signed byte/signed word~) signed_multiply_results_compare::$9 +(label) signed_multiply_results_compare::@1 +(label) signed_multiply_results_compare::@10 +(label) signed_multiply_results_compare::@11 +(label) signed_multiply_results_compare::@12 +(label) signed_multiply_results_compare::@2 +(label) signed_multiply_results_compare::@3 +(label) signed_multiply_results_compare::@4 +(label) signed_multiply_results_compare::@6 +(label) signed_multiply_results_compare::@7 +(label) signed_multiply_results_compare::@8 +(label) signed_multiply_results_compare::@9 +(label) signed_multiply_results_compare::@return +(signed byte) signed_multiply_results_compare::a +(signed byte) signed_multiply_results_compare::a#0 +(signed byte) signed_multiply_results_compare::a#1 +(signed byte) signed_multiply_results_compare::a#2 +(signed byte) signed_multiply_results_compare::a#3 +(signed byte) signed_multiply_results_compare::a#4 +(signed byte) signed_multiply_results_compare::a#5 +(signed byte) signed_multiply_results_compare::a#6 +(signed byte) signed_multiply_results_compare::a#7 +(signed byte) signed_multiply_results_compare::a#8 +(signed byte) signed_multiply_results_compare::b +(signed byte) signed_multiply_results_compare::b#0 +(signed byte) signed_multiply_results_compare::b#1 +(signed byte) signed_multiply_results_compare::b#2 +(signed byte) signed_multiply_results_compare::b#3 +(signed byte) signed_multiply_results_compare::b#4 +(signed byte) signed_multiply_results_compare::b#5 +(signed byte) signed_multiply_results_compare::b#6 +(signed word) signed_multiply_results_compare::ma +(signed word) signed_multiply_results_compare::ma#0 +(signed word) signed_multiply_results_compare::ma#1 +(signed word) signed_multiply_results_compare::ms +(signed word) signed_multiply_results_compare::ms#0 +(signed word) signed_multiply_results_compare::ms#1 +(signed word) signed_multiply_results_compare::ms#2 +(const string) signed_multiply_results_compare::str = (string) "signed multiply results match!@" (word()) slow_multiply((byte) slow_multiply::a , (byte) slow_multiply::b) (boolean~) slow_multiply::$0 (boolean~) slow_multiply::$1 @@ -2156,90 +3611,247 @@ SYMBOL TABLE SSA (word) slow_multiply::return#2 (word) slow_multiply::return#3 (word) slow_multiply::return#4 +(signed word()) slow_signed_multiply((signed byte) slow_signed_multiply::a , (signed byte) slow_signed_multiply::b) +(boolean~) slow_signed_multiply::$0 +(boolean~) slow_signed_multiply::$1 +(signed word~) slow_signed_multiply::$2 +(boolean~) slow_signed_multiply::$3 +(boolean~) slow_signed_multiply::$4 +(boolean~) slow_signed_multiply::$5 +(signed word~) slow_signed_multiply::$6 +(boolean~) slow_signed_multiply::$7 +(label) slow_signed_multiply::@1 +(label) slow_signed_multiply::@2 +(label) slow_signed_multiply::@3 +(label) slow_signed_multiply::@4 +(label) slow_signed_multiply::@5 +(label) slow_signed_multiply::@6 +(label) slow_signed_multiply::@9 +(label) slow_signed_multiply::@return +(signed byte) slow_signed_multiply::a +(signed byte) slow_signed_multiply::a#0 +(signed byte) slow_signed_multiply::a#1 +(signed byte) slow_signed_multiply::a#2 +(signed byte) slow_signed_multiply::a#3 +(signed byte) slow_signed_multiply::a#4 +(signed byte) slow_signed_multiply::a#5 +(signed byte) slow_signed_multiply::a#6 +(signed byte) slow_signed_multiply::b +(signed byte) slow_signed_multiply::b#0 +(signed byte) slow_signed_multiply::b#1 +(signed byte) slow_signed_multiply::b#2 +(signed byte) slow_signed_multiply::b#3 +(signed byte) slow_signed_multiply::b#4 +(signed byte) slow_signed_multiply::b#5 +(signed byte) slow_signed_multiply::b#6 +(signed byte) slow_signed_multiply::i +(signed byte) slow_signed_multiply::i#0 +(signed byte) slow_signed_multiply::i#1 +(signed byte) slow_signed_multiply::i#2 +(signed byte) slow_signed_multiply::j +(signed byte) slow_signed_multiply::j#0 +(signed byte) slow_signed_multiply::j#1 +(signed byte) slow_signed_multiply::j#2 +(signed word) slow_signed_multiply::m +(signed word) slow_signed_multiply::m#0 +(signed word) slow_signed_multiply::m#1 +(signed word) slow_signed_multiply::m#2 +(signed word) slow_signed_multiply::m#3 +(signed word) slow_signed_multiply::m#4 +(signed word) slow_signed_multiply::m#5 +(signed word) slow_signed_multiply::m#6 +(signed word) slow_signed_multiply::m#7 +(signed word) slow_signed_multiply::m#8 +(signed word) slow_signed_multiply::m#9 +(signed word) slow_signed_multiply::return +(signed word) slow_signed_multiply::return#0 +(signed word) slow_signed_multiply::return#1 +(signed word) slow_signed_multiply::return#2 +(signed word) slow_signed_multiply::return#3 +(signed word) slow_signed_multiply::return#4 OPTIMIZING CONTROL FLOW GRAPH +Inversing boolean not (boolean~) print_sword::$1 ← (signed word) print_sword::w#3 >= (byte/signed byte/word/signed word) 0 from (boolean~) print_sword::$0 ← (signed word) print_sword::w#3 < (byte/signed byte/word/signed word) 0 +Inversing boolean not (boolean~) print_sbyte::$1 ← (signed byte) print_sbyte::b#3 >= (byte/signed byte/word/signed word) 0 from (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b#3 < (byte/signed byte/word/signed word) 0 Inversing boolean not (boolean~) init_multiply::$4 ← (byte~) init_multiply::$2 != (byte/signed byte/word/signed word) 0 from (boolean~) init_multiply::$3 ← (byte~) init_multiply::$2 == (byte/signed byte/word/signed word) 0 Inversing boolean not (boolean~) init_multiply::$14 ← (byte) init_multiply::x_255#1 != (byte/signed byte/word/signed word) 0 from (boolean~) init_multiply::$13 ← (byte) init_multiply::x_255#1 == (byte/signed byte/word/signed word) 0 -Inversing boolean not (boolean~) slow_multiply::$1 ← (byte) slow_multiply::a#1 <= (byte/signed byte/word/signed word) 0 from (boolean~) slow_multiply::$0 ← (byte) slow_multiply::a#1 > (byte/signed byte/word/signed word) 0 +Inversing boolean not (boolean~) signed_multiply::$4 ← (signed byte) signed_multiply::a#2 >= (byte/signed byte/word/signed word) 0 from (boolean~) signed_multiply::$3 ← (signed byte) signed_multiply::a#2 < (byte/signed byte/word/signed word) 0 +Inversing boolean not (boolean~) signed_multiply::$10 ← (signed byte) signed_multiply::b#2 >= (byte/signed byte/word/signed word) 0 from (boolean~) signed_multiply::$9 ← (signed byte) signed_multiply::b#2 < (byte/signed byte/word/signed word) 0 +Inversing boolean not (boolean~) slow_multiply::$1 ← (byte) slow_multiply::a#1 == (byte/signed byte/word/signed word) 0 from (boolean~) slow_multiply::$0 ← (byte) slow_multiply::a#1 != (byte/signed byte/word/signed word) 0 +Inversing boolean not (boolean~) slow_signed_multiply::$1 ← (signed byte) slow_signed_multiply::a#1 >= (byte/signed byte/word/signed word) 0 from (boolean~) slow_signed_multiply::$0 ← (signed byte) slow_signed_multiply::a#1 < (byte/signed byte/word/signed word) 0 +Inversing boolean not (boolean~) slow_signed_multiply::$5 ← (signed byte) slow_signed_multiply::a#2 <= (byte/signed byte/word/signed word) 0 from (boolean~) slow_signed_multiply::$4 ← (signed byte) slow_signed_multiply::a#2 > (byte/signed byte/word/signed word) 0 Inversing boolean not (boolean~) multiply_tables_compare::$1 ← *((byte*) multiply_tables_compare::kc_sqr#2) == *((byte*) multiply_tables_compare::asm_sqr#2) from (boolean~) multiply_tables_compare::$0 ← *((byte*) multiply_tables_compare::kc_sqr#2) != *((byte*) multiply_tables_compare::asm_sqr#2) Inversing boolean not (boolean~) multiply_results_compare::$3 ← (word) multiply_results_compare::ms#1 == (word) multiply_results_compare::ma#0 from (boolean~) multiply_results_compare::$2 ← (word) multiply_results_compare::ms#1 != (word) multiply_results_compare::ma#0 +Inversing boolean not (boolean~) signed_multiply_results_compare::$5 ← (signed word) signed_multiply_results_compare::ms#1 == (signed word) signed_multiply_results_compare::ma#0 from (boolean~) signed_multiply_results_compare::$4 ← (signed word) signed_multiply_results_compare::ms#1 != (signed word) signed_multiply_results_compare::ma#0 Succesful SSA optimization Pass2UnaryNotSimplification -Not aliassing across scopes: print_str::str#9 print_str::str#5 -Not aliassing across scopes: char_cursor#71 char_cursor#24 -Not aliassing across scopes: line_cursor#22 line_cursor#27 -Not aliassing across scopes: char_cursor#62 char_cursor#28 -Not aliassing across scopes: print_word::w#4 print_word::w#2 -Not aliassing across scopes: char_cursor#63 char_cursor#23 -Not aliassing across scopes: char_cursor#35 char_cursor#10 -Not aliassing across scopes: char_cursor#36 char_cursor#10 -Not aliassing across scopes: print_byte::b#2 print_byte::b#0 -Not aliassing across scopes: char_cursor#64 char_cursor#63 -Not aliassing across scopes: char_cursor#38 char_cursor#12 -Not aliassing across scopes: char_cursor#39 char_cursor#12 -Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#41 char_cursor#64 +Not aliassing across scopes: print_str::str#16 print_str::str#5 +Not aliassing across scopes: char_cursor#135 char_cursor#130 +Not aliassing across scopes: line_cursor#40 line_cursor#46 +Not aliassing across scopes: char_cursor#118 char_cursor#41 +Not aliassing across scopes: print_sword::w#3 print_sword::w#1 +Not aliassing across scopes: char_cursor#136 char_cursor#52 +Not aliassing across scopes: char_cursor#63 char_cursor#13 +Not aliassing across scopes: char_cursor#64 char_cursor#18 +Not aliassing across scopes: print_sbyte::b#3 print_sbyte::b#1 +Not aliassing across scopes: char_cursor#137 char_cursor#48 +Not aliassing across scopes: char_cursor#66 char_cursor#16 +Not aliassing across scopes: char_cursor#67 char_cursor#18 +Not aliassing across scopes: print_word::w#5 print_word::w#3 +Not aliassing across scopes: char_cursor#123 char_cursor#38 +Not aliassing across scopes: char_cursor#69 char_cursor#16 +Not aliassing across scopes: char_cursor#70 char_cursor#16 +Not aliassing across scopes: print_byte::b#5 print_byte::b#3 +Not aliassing across scopes: char_cursor#124 char_cursor#34 +Not aliassing across scopes: char_cursor#72 char_cursor#18 +Not aliassing across scopes: char_cursor#73 char_cursor#18 +Not aliassing across scopes: print_char::ch#4 print_char::ch#2 +Not aliassing across scopes: char_cursor#75 char_cursor#124 Not aliassing across scopes: init_multiply::sqr2_hi#0 mul_sqr2_hi#0 Not aliassing across scopes: init_multiply::sqr2_lo#0 mul_sqr2_lo#0 -Not aliassing across scopes: multiply::a#1 multiply::a#0 -Not aliassing across scopes: multiply::b#1 multiply::b#0 -Not aliassing across scopes: BGCOL#1 BGCOL#4 -Not aliassing across scopes: char_cursor#84 char_cursor#70 -Not aliassing across scopes: line_cursor#42 line_cursor#28 -Not aliassing across scopes: char_cursor#43 char_cursor#20 -Not aliassing across scopes: line_cursor#14 line_cursor#6 -Not aliassing across scopes: char_cursor#44 char_cursor#27 -Not aliassing across scopes: line_cursor#15 line_cursor#8 +Not aliassing across scopes: multiply::a#2 multiply::a#1 +Not aliassing across scopes: multiply::b#2 multiply::b#1 +Not aliassing across scopes: signed_multiply::a#1 signed_multiply::a#0 +Not aliassing across scopes: signed_multiply::b#1 signed_multiply::b#0 +Not aliassing across scopes: multiply::return#2 multiply::return#1 +Not aliassing across scopes: signed_multiply::$2 multiply::return#5 +Not aliassing across scopes: BGCOL#1 BGCOL#5 +Not aliassing across scopes: char_cursor#154 char_cursor#134 +Not aliassing across scopes: line_cursor#72 line_cursor#50 +Not aliassing across scopes: char_cursor#77 char_cursor#27 +Not aliassing across scopes: line_cursor#23 line_cursor#7 +Not aliassing across scopes: char_cursor#78 char_cursor#31 +Not aliassing across scopes: line_cursor#24 line_cursor#10 +Not aliassing across scopes: char_cursor#79 char_cursor#45 +Not aliassing across scopes: line_cursor#25 line_cursor#15 Not aliassing across scopes: slow_multiply::a#1 slow_multiply::a#0 Not aliassing across scopes: slow_multiply::b#3 slow_multiply::b#0 Not aliassing identity: slow_multiply::b#1 slow_multiply::b#1 Not aliassing identity: slow_multiply::a#2 slow_multiply::a#2 -Not aliassing across scopes: BGCOL#7 BGCOL#11 -Not aliassing across scopes: char_cursor#80 char_cursor#65 -Not aliassing across scopes: line_cursor#47 line_cursor#23 +Not aliassing across scopes: slow_signed_multiply::a#1 slow_signed_multiply::a#0 +Not aliassing across scopes: slow_signed_multiply::b#5 slow_signed_multiply::b#0 +Not aliassing identity: slow_signed_multiply::b#1 slow_signed_multiply::b#1 +Not aliassing identity: slow_signed_multiply::a#3 slow_signed_multiply::a#3 +Not aliassing identity: slow_signed_multiply::b#2 slow_signed_multiply::b#2 +Not aliassing identity: slow_signed_multiply::a#4 slow_signed_multiply::a#4 +Not aliassing across scopes: BGCOL#9 BGCOL#14 +Not aliassing across scopes: char_cursor#148 char_cursor#125 +Not aliassing across scopes: line_cursor#81 line_cursor#41 Not aliassing across scopes: multiply_tables_compare::asm_sqr#0 asm_mul_sqr1_lo#0 Not aliassing across scopes: multiply_tables_compare::kc_sqr#0 mul_sqr1_lo#0 -Not aliassing across scopes: char_cursor#46 char_cursor#2 -Not aliassing across scopes: char_cursor#47 char_cursor#7 -Not aliassing across scopes: char_cursor#48 char_cursor#2 -Not aliassing across scopes: char_cursor#49 char_cursor#7 -Not aliassing across scopes: char_cursor#51 char_cursor#2 -Not aliassing across scopes: line_cursor#18 line_cursor#2 -Not aliassing across scopes: char_cursor#52 char_cursor#4 -Not aliassing across scopes: BGCOL#17 BGCOL#19 -Not aliassing across scopes: char_cursor#87 char_cursor#13 -Not aliassing across scopes: line_cursor#54 line_cursor#3 +Not aliassing across scopes: char_cursor#81 char_cursor#2 +Not aliassing across scopes: char_cursor#82 char_cursor#13 +Not aliassing across scopes: char_cursor#83 char_cursor#2 +Not aliassing across scopes: char_cursor#84 char_cursor#13 +Not aliassing across scopes: char_cursor#86 char_cursor#2 +Not aliassing across scopes: line_cursor#28 line_cursor#2 +Not aliassing across scopes: char_cursor#87 char_cursor#4 +Not aliassing across scopes: BGCOL#23 BGCOL#27 +Not aliassing across scopes: char_cursor#159 char_cursor#19 +Not aliassing across scopes: line_cursor#87 line_cursor#3 Not aliassing across scopes: slow_multiply::a#0 multiply_results_compare::a#2 Not aliassing across scopes: slow_multiply::b#0 multiply_results_compare::b#2 Not aliassing across scopes: slow_multiply::return#2 slow_multiply::return#1 Not aliassing across scopes: multiply_results_compare::$0 slow_multiply::return#4 -Not aliassing across scopes: multiply::a#0 multiply_results_compare::a#3 -Not aliassing across scopes: multiply::b#0 multiply_results_compare::b#3 -Not aliassing across scopes: multiply::return#2 multiply::return#1 -Not aliassing across scopes: multiply_results_compare::$1 multiply::return#4 -Not aliassing across scopes: char_cursor#53 char_cursor#2 -Not aliassing across scopes: print_word::w#2 multiply_results_compare::ms#2 -Not aliassing across scopes: char_cursor#54 char_cursor#7 -Not aliassing across scopes: char_cursor#55 char_cursor#2 -Not aliassing across scopes: print_word::w#3 multiply_results_compare::ma#1 -Not aliassing across scopes: char_cursor#56 char_cursor#7 -Not aliassing across scopes: char_cursor#58 char_cursor#2 -Not aliassing across scopes: line_cursor#20 line_cursor#2 -Not aliassing across scopes: char_cursor#59 char_cursor#4 -Not aliassing across scopes: char_cursor#60 char_cursor#15 -Not aliassing across scopes: line_cursor#21 line_cursor#5 -Alias (byte*) char_cursor#0 = (byte*) line_cursor#0 (byte*) char_cursor#83 (byte*) line_cursor#41 (byte*) char_cursor#79 (byte*) line_cursor#36 (byte*) char_cursor#77 (byte*) line_cursor#34 (byte*) char_cursor#70 (byte*) line_cursor#28 -Alias (byte*) print_str::str#7 = (byte*) print_str::str#8 -Alias (byte*) char_cursor#2 = (byte*) char_cursor#31 (byte*) char_cursor#61 (byte*) char_cursor#32 -Alias (byte*) line_cursor#1 = (byte*~) print_ln::$0 (byte*) line_cursor#12 (byte*) char_cursor#3 (byte*) line_cursor#13 (byte*) char_cursor#34 (byte*) line_cursor#2 (byte*) char_cursor#4 -Alias (byte) print_byte::b#0 = (byte~) print_word::$0 -Alias (word) print_word::w#4 = (word) print_word::w#5 -Alias (byte*) char_cursor#35 = (byte*) char_cursor#5 -Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) char_cursor#36 = (byte*) char_cursor#6 (byte*) char_cursor#37 (byte*) char_cursor#7 -Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) char_cursor#38 = (byte*) char_cursor#8 -Alias (byte*) char_cursor#10 = (byte*) char_cursor#9 (byte*) char_cursor#39 (byte*) char_cursor#40 -Alias (byte*) char_cursor#11 = (byte*) char_cursor#42 (byte*) char_cursor#12 +Not aliassing across scopes: multiply::a#1 multiply_results_compare::a#3 +Not aliassing across scopes: multiply::b#1 multiply_results_compare::b#3 +Not aliassing across scopes: multiply::return#3 multiply::return#1 +Not aliassing across scopes: multiply_results_compare::$1 multiply::return#6 +Not aliassing across scopes: multiply_error::a#0 multiply_results_compare::a#4 +Not aliassing across scopes: multiply_error::b#0 multiply_results_compare::b#5 +Not aliassing across scopes: multiply_error::ms#0 multiply_results_compare::ms#2 +Not aliassing across scopes: multiply_error::ma#0 multiply_results_compare::ma#1 +Not aliassing across scopes: char_cursor#88 char_cursor#43 +Not aliassing across scopes: line_cursor#29 line_cursor#13 +Not aliassing across scopes: char_cursor#90 char_cursor#2 +Not aliassing across scopes: line_cursor#31 line_cursor#2 +Not aliassing across scopes: char_cursor#91 char_cursor#4 +Not aliassing across scopes: char_cursor#130 char_cursor#128 +Not aliassing across scopes: multiply_error::a#2 multiply_error::a#0 +Not aliassing across scopes: multiply_error::b#4 multiply_error::b#0 +Not aliassing across scopes: multiply_error::ms#6 multiply_error::ms#0 +Not aliassing across scopes: multiply_error::ma#8 multiply_error::ma#0 +Not aliassing across scopes: line_cursor#95 line_cursor#44 +Not aliassing across scopes: char_cursor#92 char_cursor#2 +Not aliassing across scopes: print_byte::b#3 multiply_error::a#1 +Not aliassing across scopes: char_cursor#93 char_cursor#16 +Not aliassing across scopes: char_cursor#94 char_cursor#2 +Not aliassing across scopes: print_byte::b#4 multiply_error::b#1 +Not aliassing across scopes: char_cursor#95 char_cursor#16 +Not aliassing across scopes: char_cursor#96 char_cursor#2 +Not aliassing across scopes: print_word::w#3 multiply_error::ms#1 +Not aliassing across scopes: char_cursor#97 char_cursor#13 +Not aliassing across scopes: char_cursor#98 char_cursor#2 +Not aliassing across scopes: print_word::w#4 multiply_error::ma#1 +Not aliassing across scopes: char_cursor#99 char_cursor#13 +Not aliassing across scopes: line_cursor#32 line_cursor#2 +Not aliassing across scopes: char_cursor#100 char_cursor#4 +Not aliassing across scopes: BGCOL#25 BGCOL#28 +Not aliassing across scopes: char_cursor#160 char_cursor#20 +Not aliassing across scopes: line_cursor#89 line_cursor#4 +Not aliassing across scopes: slow_signed_multiply::a#0 signed_multiply_results_compare::a#2 +Not aliassing across scopes: slow_signed_multiply::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: slow_signed_multiply::return#2 slow_signed_multiply::return#1 +Not aliassing across scopes: signed_multiply_results_compare::$2 slow_signed_multiply::return#4 +Not aliassing across scopes: signed_multiply::a#0 signed_multiply_results_compare::a#3 +Not aliassing across scopes: signed_multiply::b#0 signed_multiply_results_compare::b#3 +Not aliassing across scopes: signed_multiply::return#2 signed_multiply::return#1 +Not aliassing across scopes: signed_multiply_results_compare::$3 signed_multiply::return#4 +Not aliassing across scopes: signed_multiply_error::a#0 signed_multiply_results_compare::a#4 +Not aliassing across scopes: signed_multiply_error::b#0 signed_multiply_results_compare::b#5 +Not aliassing across scopes: signed_multiply_error::ms#0 signed_multiply_results_compare::ms#2 +Not aliassing across scopes: signed_multiply_error::ma#0 signed_multiply_results_compare::ma#1 +Not aliassing across scopes: char_cursor#102 char_cursor#57 +Not aliassing across scopes: line_cursor#34 line_cursor#18 +Not aliassing across scopes: char_cursor#104 char_cursor#2 +Not aliassing across scopes: line_cursor#36 line_cursor#2 +Not aliassing across scopes: char_cursor#105 char_cursor#4 +Not aliassing across scopes: char_cursor#133 char_cursor#131 +Not aliassing across scopes: signed_multiply_error::a#2 signed_multiply_error::a#0 +Not aliassing across scopes: signed_multiply_error::b#4 signed_multiply_error::b#0 +Not aliassing across scopes: signed_multiply_error::ms#6 signed_multiply_error::ms#0 +Not aliassing across scopes: signed_multiply_error::ma#8 signed_multiply_error::ma#0 +Not aliassing across scopes: line_cursor#96 line_cursor#47 +Not aliassing across scopes: char_cursor#106 char_cursor#2 +Not aliassing across scopes: print_sbyte::b#1 signed_multiply_error::a#1 +Not aliassing across scopes: char_cursor#107 char_cursor#10 +Not aliassing across scopes: char_cursor#108 char_cursor#2 +Not aliassing across scopes: print_sbyte::b#2 signed_multiply_error::b#1 +Not aliassing across scopes: char_cursor#109 char_cursor#10 +Not aliassing across scopes: char_cursor#110 char_cursor#2 +Not aliassing across scopes: print_sword::w#1 signed_multiply_error::ms#1 +Not aliassing across scopes: char_cursor#111 char_cursor#7 +Not aliassing across scopes: char_cursor#112 char_cursor#2 +Not aliassing across scopes: print_sword::w#2 signed_multiply_error::ma#1 +Not aliassing across scopes: char_cursor#113 char_cursor#7 +Not aliassing across scopes: line_cursor#37 line_cursor#2 +Not aliassing across scopes: char_cursor#114 char_cursor#4 +Not aliassing across scopes: char_cursor#116 char_cursor#22 +Not aliassing across scopes: line_cursor#39 line_cursor#6 +Alias (byte*) char_cursor#0 = (byte*) line_cursor#0 (byte*) char_cursor#153 (byte*) line_cursor#71 (byte*) char_cursor#147 (byte*) line_cursor#62 (byte*) char_cursor#145 (byte*) line_cursor#60 (byte*) char_cursor#134 (byte*) line_cursor#50 +Alias (byte*) print_str::str#14 = (byte*) print_str::str#15 +Alias (byte*) char_cursor#117 = (byte*) char_cursor#59 (byte*) char_cursor#60 (byte*) char_cursor#2 +Alias (byte*) line_cursor#1 = (byte*~) print_ln::$0 (byte*) line_cursor#21 (byte*) char_cursor#3 (byte*) line_cursor#22 (byte*) char_cursor#62 (byte*) line_cursor#2 (byte*) char_cursor#4 +Alias (word) print_word::w#0 = (word~) print_sword::$4 +Alias (byte*) char_cursor#5 = (byte*) char_cursor#63 (byte*) char_cursor#65 (byte*) char_cursor#7 +Alias (byte*) char_cursor#120 = (byte*) char_cursor#136 +Alias (signed word) print_sword::w#3 = (signed word) print_sword::w#6 (signed word) print_sword::w#5 +Alias (byte*) char_cursor#6 = (byte*) char_cursor#64 +Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$3 +Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$4 +Alias (byte*) char_cursor#10 = (byte*) char_cursor#8 (byte*) char_cursor#66 (byte*) char_cursor#68 +Alias (byte*) char_cursor#122 = (byte*) char_cursor#137 +Alias (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#6 (signed byte) print_sbyte::b#5 +Alias (byte*) char_cursor#67 = (byte*) char_cursor#9 +Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$3 +Alias (byte) print_byte::b#1 = (byte~) print_word::$0 +Alias (word) print_word::w#5 = (word) print_word::w#6 +Alias (byte*) char_cursor#11 = (byte*) char_cursor#69 +Alias (byte) print_byte::b#2 = (byte~) print_word::$2 +Alias (byte*) char_cursor#12 = (byte*) char_cursor#70 (byte*) char_cursor#71 (byte*) char_cursor#13 +Alias (byte) print_byte::b#5 = (byte) print_byte::b#6 +Alias (byte*) char_cursor#14 = (byte*) char_cursor#72 +Alias (byte*) char_cursor#15 = (byte*) char_cursor#73 (byte*) char_cursor#74 (byte*) char_cursor#16 +Alias (byte*) char_cursor#17 = (byte*) char_cursor#76 (byte*) char_cursor#18 Alias (byte*) init_multiply::sqr1_hi#0 = (byte*~) init_multiply::$0 Alias (byte*) init_multiply::sqr1_lo#0 = (byte*~) init_multiply::$1 Alias (word) init_multiply::sqr#1 = (word~) init_multiply::$7 @@ -2252,269 +3864,575 @@ Alias (byte) init_multiply::x_255#0 = (byte~) init_multiply::$11 Alias (byte) init_multiply::x_255#1 = (byte/word~) init_multiply::$12 (byte) init_multiply::x_255#4 Alias (byte*) init_multiply::sqr2_lo#2 = (byte*) init_multiply::sqr2_lo#4 Alias (byte*) init_multiply::sqr2_hi#1 = (byte*) init_multiply::sqr2_hi#4 -Alias (word) multiply::return#0 = (word) multiply::return#3 (word) multiply::return#1 -Alias (byte*) char_cursor#65 = (byte*) char_cursor#78 (byte*) char_cursor#84 (byte*) char_cursor#72 -Alias (byte*) line_cursor#23 = (byte*) line_cursor#35 (byte*) line_cursor#42 (byte*) line_cursor#29 -Alias (byte*) BGCOL#1 = (byte*) BGCOL#16 (byte*) BGCOL#13 (byte*) BGCOL#11 (byte*) BGCOL#19 -Alias (byte*) char_cursor#13 = (byte*) char_cursor#43 -Alias (byte*) line_cursor#14 = (byte*) line_cursor#3 -Alias (byte*) char_cursor#14 = (byte*) char_cursor#44 (byte*) char_cursor#45 (byte*) char_cursor#15 -Alias (byte*) line_cursor#15 = (byte*) line_cursor#4 (byte*) line_cursor#16 (byte*) line_cursor#5 +Alias (word) multiply::return#0 = (word) multiply::return#4 (word) multiply::return#1 +Alias (byte) multiply::a#0 = (byte~) signed_multiply::$0 +Alias (byte) multiply::b#0 = (byte~) signed_multiply::$1 +Alias (word) multiply::return#2 = (word) multiply::return#5 +Alias (signed byte) signed_multiply::a#1 = (signed byte) signed_multiply::a#2 (signed byte) signed_multiply::a#5 +Alias (signed byte) signed_multiply::b#1 = (signed byte) signed_multiply::b#4 (signed byte) signed_multiply::b#3 +Alias (word) signed_multiply::m#0 = (word~) signed_multiply::$2 (word) signed_multiply::m#3 +Alias (byte/signed byte/word/signed word~) signed_multiply::$16 = (byte/signed byte/word/signed word~) signed_multiply::$8 +Alias (signed word) signed_multiply::return#0 = (signed word~) signed_multiply::$15 (signed word) signed_multiply::return#3 (signed word) signed_multiply::return#1 +Alias (word) signed_multiply::m#5 = (word) signed_multiply::m#6 +Alias (signed byte) signed_multiply::a#3 = (signed byte) signed_multiply::a#4 +Alias (byte/signed byte/word/signed word~) signed_multiply::$17 = (byte/signed byte/word/signed word~) signed_multiply::$14 +Alias (byte*) char_cursor#125 = (byte*) char_cursor#146 (byte*) char_cursor#154 (byte*) char_cursor#138 +Alias (byte*) line_cursor#41 = (byte*) line_cursor#61 (byte*) line_cursor#72 (byte*) line_cursor#51 +Alias (byte*) BGCOL#1 = (byte*) BGCOL#22 (byte*) BGCOL#17 (byte*) BGCOL#14 (byte*) BGCOL#27 (byte*) BGCOL#28 +Alias (byte*) char_cursor#19 = (byte*) char_cursor#77 +Alias (byte*) line_cursor#23 = (byte*) line_cursor#3 +Alias (byte*) char_cursor#20 = (byte*) char_cursor#78 +Alias (byte*) line_cursor#24 = (byte*) line_cursor#4 +Alias (byte*) char_cursor#21 = (byte*) char_cursor#79 (byte*) char_cursor#80 (byte*) char_cursor#22 +Alias (byte*) line_cursor#25 = (byte*) line_cursor#5 (byte*) line_cursor#26 (byte*) line_cursor#6 Alias (word) slow_multiply::return#0 = (word) slow_multiply::m#2 (word) slow_multiply::return#3 (word) slow_multiply::return#1 Alias (word) slow_multiply::m#0 = (word) slow_multiply::m#4 Alias (byte) slow_multiply::b#2 = (byte) slow_multiply::b#3 Alias (byte) slow_multiply::a#1 = (byte) slow_multiply::a#3 Alias (word) slow_multiply::m#1 = (word~) slow_multiply::$2 -Alias (byte*) BGCOL#0 = (byte*) BGCOL#10 (byte*) BGCOL#4 +Alias (signed byte) slow_signed_multiply::a#1 = (signed byte) slow_signed_multiply::a#2 (signed byte) slow_signed_multiply::a#5 (signed byte) slow_signed_multiply::a#6 +Alias (signed word) slow_signed_multiply::m#0 = (signed word) slow_signed_multiply::m#9 (signed word) slow_signed_multiply::m#6 (signed word) slow_signed_multiply::m#7 (signed word) slow_signed_multiply::m#8 +Alias (signed byte) slow_signed_multiply::b#3 = (signed byte) slow_signed_multiply::b#6 (signed byte) slow_signed_multiply::b#5 (signed byte) slow_signed_multiply::b#4 +Alias (signed word) slow_signed_multiply::m#1 = (signed word~) slow_signed_multiply::$2 +Alias (signed word) slow_signed_multiply::return#0 = (signed word) slow_signed_multiply::m#4 (signed word) slow_signed_multiply::return#3 (signed word) slow_signed_multiply::return#1 +Alias (signed word) slow_signed_multiply::m#2 = (signed word~) slow_signed_multiply::$6 +Alias (byte*) BGCOL#0 = (byte*) BGCOL#13 (byte*) BGCOL#5 Alias (byte*) multiply_tables_compare::asm_sqr#2 = (byte*) multiply_tables_compare::asm_sqr#3 (byte*) multiply_tables_compare::asm_sqr#5 (byte*) multiply_tables_compare::asm_sqr#4 Alias (byte*) multiply_tables_compare::kc_sqr#2 = (byte*) multiply_tables_compare::kc_sqr#3 (byte*) multiply_tables_compare::kc_sqr#7 (byte*) multiply_tables_compare::kc_sqr#6 (byte*) multiply_tables_compare::kc_sqr#5 (byte*) multiply_tables_compare::kc_sqr#4 -Alias (byte*) BGCOL#2 = (byte*) BGCOL#8 (byte*) BGCOL#5 -Alias (byte*) char_cursor#66 = (byte*) char_cursor#74 (byte*) char_cursor#73 (byte*) char_cursor#67 -Alias (byte*) line_cursor#24 = (byte*) line_cursor#38 (byte*) line_cursor#43 (byte*) line_cursor#48 (byte*) line_cursor#44 (byte*) line_cursor#37 (byte*) line_cursor#30 (byte*) line_cursor#31 (byte*) line_cursor#25 -Alias (byte*) char_cursor#16 = (byte*) char_cursor#46 -Alias (word) print_word::w#0 = (word~) multiply_tables_compare::$3 -Alias (byte*) char_cursor#17 = (byte*) char_cursor#47 -Alias (byte*) char_cursor#18 = (byte*) char_cursor#48 -Alias (word) print_word::w#1 = (word~) multiply_tables_compare::$6 -Alias (byte*) char_cursor#19 = (byte*) char_cursor#49 -Alias (byte*) char_cursor#20 = (byte*) char_cursor#50 -Alias (byte*) line_cursor#17 = (byte*) line_cursor#6 -Alias (byte*) char_cursor#21 = (byte*) char_cursor#51 -Alias (byte*) line_cursor#18 = (byte*) line_cursor#7 -Alias (byte*) char_cursor#22 = (byte*) char_cursor#52 +Alias (byte*) BGCOL#10 = (byte*) BGCOL#6 (byte*) BGCOL#2 +Alias (byte*) char_cursor#126 = (byte*) char_cursor#140 (byte*) char_cursor#139 (byte*) char_cursor#127 +Alias (byte*) line_cursor#42 = (byte*) line_cursor#64 (byte*) line_cursor#73 (byte*) line_cursor#82 (byte*) line_cursor#74 (byte*) line_cursor#63 (byte*) line_cursor#52 (byte*) line_cursor#53 (byte*) line_cursor#43 +Alias (byte*) char_cursor#23 = (byte*) char_cursor#81 +Alias (word) print_word::w#1 = (word~) multiply_tables_compare::$3 +Alias (byte*) char_cursor#24 = (byte*) char_cursor#82 +Alias (byte*) char_cursor#25 = (byte*) char_cursor#83 +Alias (word) print_word::w#2 = (word~) multiply_tables_compare::$6 +Alias (byte*) char_cursor#26 = (byte*) char_cursor#84 +Alias (byte*) char_cursor#27 = (byte*) char_cursor#85 +Alias (byte*) line_cursor#27 = (byte*) line_cursor#7 +Alias (byte*) char_cursor#28 = (byte*) char_cursor#86 +Alias (byte*) line_cursor#28 = (byte*) line_cursor#8 +Alias (byte*) char_cursor#29 = (byte*) char_cursor#87 Alias (word) slow_multiply::return#2 = (word) slow_multiply::return#4 -Alias (byte) multiply_results_compare::a#2 = (byte) multiply_results_compare::a#3 (byte) multiply_results_compare::a#7 (byte) multiply_results_compare::a#6 (byte) multiply_results_compare::a#4 -Alias (byte) multiply_results_compare::b#2 = (byte) multiply_results_compare::b#3 (byte) multiply_results_compare::b#5 (byte) multiply_results_compare::b#4 -Alias (byte*) BGCOL#12 = (byte*) BGCOL#9 (byte*) BGCOL#6 (byte*) BGCOL#15 (byte*) BGCOL#3 (byte*) BGCOL#18 -Alias (byte*) char_cursor#68 = (byte*) char_cursor#81 (byte*) char_cursor#85 (byte*) char_cursor#75 (byte*) char_cursor#82 (byte*) char_cursor#76 (byte*) char_cursor#69 -Alias (byte*) line_cursor#26 = (byte*) line_cursor#51 (byte*) line_cursor#52 (byte*) line_cursor#49 (byte*) line_cursor#46 (byte*) line_cursor#50 (byte*) line_cursor#45 (byte*) line_cursor#39 (byte*) line_cursor#32 (byte*) line_cursor#40 (byte*) line_cursor#33 (byte*) line_cursor#27 -Alias (word) multiply_results_compare::ms#0 = (word~) multiply_results_compare::$0 (word) multiply_results_compare::ms#1 (word) multiply_results_compare::ms#3 (word) multiply_results_compare::ms#2 -Alias (word) multiply::return#2 = (word) multiply::return#4 -Alias (word) multiply_results_compare::ma#0 = (word~) multiply_results_compare::$1 (word) multiply_results_compare::ma#4 (word) multiply_results_compare::ma#3 (word) multiply_results_compare::ma#2 (word) multiply_results_compare::ma#1 -Alias (byte*) char_cursor#23 = (byte*) char_cursor#53 -Alias (byte*) char_cursor#24 = (byte*) char_cursor#54 -Alias (byte*) char_cursor#25 = (byte*) char_cursor#55 -Alias (byte*) char_cursor#26 = (byte*) char_cursor#56 -Alias (byte*) char_cursor#27 = (byte*) char_cursor#57 -Alias (byte*) line_cursor#19 = (byte*) line_cursor#8 -Alias (byte*) char_cursor#28 = (byte*) char_cursor#58 -Alias (byte*) line_cursor#20 = (byte*) line_cursor#9 -Alias (byte*) char_cursor#29 = (byte*) char_cursor#59 -Alias (byte*) char_cursor#30 = (byte*) char_cursor#60 -Alias (byte*) line_cursor#10 = (byte*) line_cursor#21 +Alias (byte) multiply_results_compare::a#2 = (byte) multiply_results_compare::a#3 (byte) multiply_results_compare::a#8 (byte) multiply_results_compare::a#7 (byte) multiply_results_compare::a#4 (byte) multiply_results_compare::a#5 +Alias (byte) multiply_results_compare::b#2 = (byte) multiply_results_compare::b#3 (byte) multiply_results_compare::b#6 (byte) multiply_results_compare::b#4 (byte) multiply_results_compare::b#5 +Alias (byte*) BGCOL#11 = (byte*) BGCOL#15 (byte*) BGCOL#7 (byte*) BGCOL#19 (byte*) BGCOL#3 (byte*) BGCOL#24 +Alias (byte*) char_cursor#128 = (byte*) char_cursor#149 (byte*) char_cursor#155 (byte*) char_cursor#141 (byte*) char_cursor#150 (byte*) char_cursor#142 (byte*) char_cursor#129 +Alias (byte*) line_cursor#44 = (byte*) line_cursor#65 (byte*) line_cursor#75 (byte*) line_cursor#54 (byte*) line_cursor#76 (byte*) line_cursor#66 (byte*) line_cursor#55 (byte*) line_cursor#45 +Alias (word) multiply_results_compare::ms#0 = (word~) multiply_results_compare::$0 (word) multiply_results_compare::ms#1 (word) multiply_results_compare::ms#2 +Alias (word) multiply::return#3 = (word) multiply::return#6 +Alias (word) multiply_results_compare::ma#0 = (word~) multiply_results_compare::$1 (word) multiply_results_compare::ma#1 +Alias (byte*) char_cursor#30 = (byte*) char_cursor#88 +Alias (byte*) line_cursor#29 = (byte*) line_cursor#9 +Alias (byte*) char_cursor#31 = (byte*) char_cursor#89 +Alias (byte*) line_cursor#10 = (byte*) line_cursor#30 +Alias (byte*) char_cursor#32 = (byte*) char_cursor#90 +Alias (byte*) line_cursor#11 = (byte*) line_cursor#31 +Alias (byte*) char_cursor#33 = (byte*) char_cursor#91 +Alias (byte) multiply_error::a#1 = (byte) multiply_error::a#2 +Alias (byte) multiply_error::b#1 = (byte) multiply_error::b#3 (byte) multiply_error::b#4 (byte) multiply_error::b#2 +Alias (word) multiply_error::ms#1 = (word) multiply_error::ms#5 (word) multiply_error::ms#6 (word) multiply_error::ms#4 (word) multiply_error::ms#3 (word) multiply_error::ms#2 +Alias (word) multiply_error::ma#1 = (word) multiply_error::ma#7 (word) multiply_error::ma#8 (word) multiply_error::ma#6 (word) multiply_error::ma#5 (word) multiply_error::ma#4 (word) multiply_error::ma#3 (word) multiply_error::ma#2 +Alias (byte*) line_cursor#46 = (byte*) line_cursor#93 (byte*) line_cursor#95 (byte*) line_cursor#91 (byte*) line_cursor#88 (byte*) line_cursor#84 (byte*) line_cursor#77 (byte*) line_cursor#67 (byte*) line_cursor#56 +Alias (byte*) char_cursor#34 = (byte*) char_cursor#92 +Alias (byte*) char_cursor#35 = (byte*) char_cursor#93 +Alias (byte*) char_cursor#36 = (byte*) char_cursor#94 +Alias (byte*) char_cursor#37 = (byte*) char_cursor#95 +Alias (byte*) char_cursor#38 = (byte*) char_cursor#96 +Alias (byte*) char_cursor#39 = (byte*) char_cursor#97 +Alias (byte*) char_cursor#40 = (byte*) char_cursor#98 +Alias (byte*) char_cursor#41 = (byte*) char_cursor#99 +Alias (byte*) line_cursor#12 = (byte*) line_cursor#32 (byte*) line_cursor#33 (byte*) line_cursor#13 +Alias (byte*) char_cursor#100 = (byte*) char_cursor#42 (byte*) char_cursor#101 (byte*) char_cursor#43 +Alias (signed byte) signed_multiply_results_compare::a#0 = (signed byte/signed word~) signed_multiply_results_compare::$0 +Alias (signed byte) signed_multiply_results_compare::b#0 = (signed byte/signed word~) signed_multiply_results_compare::$1 +Alias (signed word) slow_signed_multiply::return#2 = (signed word) slow_signed_multiply::return#4 +Alias (signed byte) signed_multiply_results_compare::a#2 = (signed byte) signed_multiply_results_compare::a#3 (signed byte) signed_multiply_results_compare::a#8 (signed byte) signed_multiply_results_compare::a#7 (signed byte) signed_multiply_results_compare::a#4 (signed byte) signed_multiply_results_compare::a#5 +Alias (signed byte) signed_multiply_results_compare::b#2 = (signed byte) signed_multiply_results_compare::b#3 (signed byte) signed_multiply_results_compare::b#6 (signed byte) signed_multiply_results_compare::b#4 (signed byte) signed_multiply_results_compare::b#5 +Alias (byte*) BGCOL#12 = (byte*) BGCOL#16 (byte*) BGCOL#8 (byte*) BGCOL#21 (byte*) BGCOL#4 (byte*) BGCOL#26 +Alias (byte*) char_cursor#131 = (byte*) char_cursor#151 (byte*) char_cursor#156 (byte*) char_cursor#143 (byte*) char_cursor#152 (byte*) char_cursor#144 (byte*) char_cursor#132 +Alias (byte*) line_cursor#47 = (byte*) line_cursor#68 (byte*) line_cursor#78 (byte*) line_cursor#57 (byte*) line_cursor#79 (byte*) line_cursor#69 (byte*) line_cursor#58 (byte*) line_cursor#48 +Alias (signed word) signed_multiply_results_compare::ms#0 = (signed word~) signed_multiply_results_compare::$2 (signed word) signed_multiply_results_compare::ms#1 (signed word) signed_multiply_results_compare::ms#2 +Alias (signed word) signed_multiply::return#2 = (signed word) signed_multiply::return#4 +Alias (signed word) signed_multiply_results_compare::ma#0 = (signed word~) signed_multiply_results_compare::$3 (signed word) signed_multiply_results_compare::ma#1 +Alias (byte*) char_cursor#102 = (byte*) char_cursor#44 +Alias (byte*) line_cursor#14 = (byte*) line_cursor#34 +Alias (byte*) char_cursor#103 = (byte*) char_cursor#45 +Alias (byte*) line_cursor#15 = (byte*) line_cursor#35 +Alias (byte*) char_cursor#104 = (byte*) char_cursor#46 +Alias (byte*) line_cursor#16 = (byte*) line_cursor#36 +Alias (byte*) char_cursor#105 = (byte*) char_cursor#47 +Alias (signed byte) signed_multiply_error::a#1 = (signed byte) signed_multiply_error::a#2 +Alias (signed byte) signed_multiply_error::b#1 = (signed byte) signed_multiply_error::b#3 (signed byte) signed_multiply_error::b#4 (signed byte) signed_multiply_error::b#2 +Alias (signed word) signed_multiply_error::ms#1 = (signed word) signed_multiply_error::ms#5 (signed word) signed_multiply_error::ms#6 (signed word) signed_multiply_error::ms#4 (signed word) signed_multiply_error::ms#3 (signed word) signed_multiply_error::ms#2 +Alias (signed word) signed_multiply_error::ma#1 = (signed word) signed_multiply_error::ma#7 (signed word) signed_multiply_error::ma#8 (signed word) signed_multiply_error::ma#6 (signed word) signed_multiply_error::ma#5 (signed word) signed_multiply_error::ma#4 (signed word) signed_multiply_error::ma#3 (signed word) signed_multiply_error::ma#2 +Alias (byte*) line_cursor#49 = (byte*) line_cursor#94 (byte*) line_cursor#96 (byte*) line_cursor#92 (byte*) line_cursor#90 (byte*) line_cursor#86 (byte*) line_cursor#80 (byte*) line_cursor#70 (byte*) line_cursor#59 +Alias (byte*) char_cursor#106 = (byte*) char_cursor#48 +Alias (byte*) char_cursor#107 = (byte*) char_cursor#49 +Alias (byte*) char_cursor#108 = (byte*) char_cursor#50 +Alias (byte*) char_cursor#109 = (byte*) char_cursor#51 +Alias (byte*) char_cursor#110 = (byte*) char_cursor#52 +Alias (byte*) char_cursor#111 = (byte*) char_cursor#53 +Alias (byte*) char_cursor#112 = (byte*) char_cursor#54 +Alias (byte*) char_cursor#113 = (byte*) char_cursor#55 +Alias (byte*) line_cursor#17 = (byte*) line_cursor#37 (byte*) line_cursor#38 (byte*) line_cursor#18 +Alias (byte*) char_cursor#114 = (byte*) char_cursor#56 (byte*) char_cursor#115 (byte*) char_cursor#57 +Alias (byte*) char_cursor#116 = (byte*) char_cursor#58 +Alias (byte*) line_cursor#19 = (byte*) line_cursor#39 Succesful SSA optimization Pass2AliasElimination -Not aliassing across scopes: print_str::str#9 print_str::str#5 -Not aliassing across scopes: char_cursor#71 char_cursor#24 -Not aliassing across scopes: line_cursor#22 line_cursor#26 -Not aliassing across scopes: char_cursor#62 char_cursor#28 -Not aliassing across scopes: print_word::w#4 print_word::w#2 -Not aliassing across scopes: char_cursor#63 char_cursor#23 -Not aliassing across scopes: char_cursor#35 char_cursor#10 -Not aliassing across scopes: char_cursor#36 char_cursor#10 -Not aliassing across scopes: print_byte::b#2 print_byte::b#0 -Not aliassing across scopes: char_cursor#64 char_cursor#63 -Not aliassing across scopes: char_cursor#38 char_cursor#11 -Not aliassing across scopes: char_cursor#10 char_cursor#11 -Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#41 char_cursor#64 +Not aliassing across scopes: print_str::str#16 print_str::str#5 +Not aliassing across scopes: char_cursor#135 char_cursor#130 +Not aliassing across scopes: line_cursor#40 line_cursor#46 +Not aliassing across scopes: char_cursor#118 char_cursor#41 +Not aliassing across scopes: print_sword::w#3 print_sword::w#1 +Not aliassing across scopes: char_cursor#120 char_cursor#110 +Not aliassing across scopes: char_cursor#5 char_cursor#12 +Not aliassing across scopes: char_cursor#6 char_cursor#17 +Not aliassing across scopes: print_sbyte::b#3 print_sbyte::b#1 +Not aliassing across scopes: char_cursor#122 char_cursor#106 +Not aliassing across scopes: char_cursor#10 char_cursor#15 +Not aliassing across scopes: char_cursor#67 char_cursor#17 +Not aliassing across scopes: print_word::w#5 print_word::w#3 +Not aliassing across scopes: char_cursor#123 char_cursor#38 +Not aliassing across scopes: char_cursor#11 char_cursor#15 +Not aliassing across scopes: char_cursor#12 char_cursor#15 +Not aliassing across scopes: print_byte::b#5 print_byte::b#3 +Not aliassing across scopes: char_cursor#124 char_cursor#34 +Not aliassing across scopes: char_cursor#14 char_cursor#17 +Not aliassing across scopes: char_cursor#15 char_cursor#17 +Not aliassing across scopes: print_char::ch#4 print_char::ch#2 +Not aliassing across scopes: char_cursor#75 char_cursor#124 Not aliassing across scopes: init_multiply::sqr2_hi#0 mul_sqr2_hi#0 Not aliassing across scopes: init_multiply::sqr2_lo#0 mul_sqr2_lo#0 -Not aliassing across scopes: multiply::a#1 multiply::a#0 -Not aliassing across scopes: multiply::b#1 multiply::b#0 +Not aliassing across scopes: multiply::a#2 multiply::a#1 +Not aliassing across scopes: multiply::b#2 multiply::b#1 +Not aliassing across scopes: signed_multiply::a#1 signed_multiply::a#0 +Not aliassing across scopes: signed_multiply::b#1 signed_multiply::b#0 +Not aliassing across scopes: multiply::return#2 multiply::return#0 +Not aliassing across scopes: signed_multiply::m#0 multiply::return#2 Not aliassing across scopes: BGCOL#1 BGCOL#0 -Not aliassing across scopes: char_cursor#65 char_cursor#0 -Not aliassing across scopes: line_cursor#23 char_cursor#0 -Not aliassing across scopes: char_cursor#13 char_cursor#20 -Not aliassing across scopes: line_cursor#14 line_cursor#17 -Not aliassing across scopes: char_cursor#14 char_cursor#27 -Not aliassing across scopes: line_cursor#15 line_cursor#19 +Not aliassing across scopes: char_cursor#125 char_cursor#0 +Not aliassing across scopes: line_cursor#41 char_cursor#0 +Not aliassing across scopes: char_cursor#19 char_cursor#27 +Not aliassing across scopes: line_cursor#23 line_cursor#27 +Not aliassing across scopes: char_cursor#20 char_cursor#31 +Not aliassing across scopes: line_cursor#24 line_cursor#10 +Not aliassing across scopes: char_cursor#21 char_cursor#103 +Not aliassing across scopes: line_cursor#25 line_cursor#15 Not aliassing across scopes: slow_multiply::a#1 slow_multiply::a#0 Not aliassing across scopes: slow_multiply::b#2 slow_multiply::b#0 Not aliassing identity: slow_multiply::b#1 slow_multiply::b#1 Not aliassing identity: slow_multiply::a#2 slow_multiply::a#2 -Not aliassing across scopes: BGCOL#7 BGCOL#1 -Not aliassing across scopes: char_cursor#80 char_cursor#65 -Not aliassing across scopes: line_cursor#47 line_cursor#23 +Not aliassing across scopes: slow_signed_multiply::a#1 slow_signed_multiply::a#0 +Not aliassing across scopes: slow_signed_multiply::b#3 slow_signed_multiply::b#0 +Not aliassing identity: slow_signed_multiply::b#1 slow_signed_multiply::b#1 +Not aliassing identity: slow_signed_multiply::a#3 slow_signed_multiply::a#3 +Not aliassing identity: slow_signed_multiply::b#2 slow_signed_multiply::b#2 +Not aliassing identity: slow_signed_multiply::a#4 slow_signed_multiply::a#4 +Not aliassing across scopes: BGCOL#9 BGCOL#1 +Not aliassing across scopes: char_cursor#148 char_cursor#125 +Not aliassing across scopes: line_cursor#81 line_cursor#41 Not aliassing across scopes: multiply_tables_compare::asm_sqr#0 asm_mul_sqr1_lo#0 Not aliassing across scopes: multiply_tables_compare::kc_sqr#0 mul_sqr1_lo#0 -Not aliassing across scopes: char_cursor#16 char_cursor#2 -Not aliassing across scopes: char_cursor#17 char_cursor#36 -Not aliassing across scopes: char_cursor#18 char_cursor#2 -Not aliassing across scopes: char_cursor#19 char_cursor#36 -Not aliassing across scopes: char_cursor#21 char_cursor#2 -Not aliassing across scopes: line_cursor#18 line_cursor#1 -Not aliassing across scopes: char_cursor#22 line_cursor#1 -Not aliassing across scopes: BGCOL#17 BGCOL#1 -Not aliassing across scopes: char_cursor#87 char_cursor#13 -Not aliassing across scopes: line_cursor#54 line_cursor#14 +Not aliassing across scopes: char_cursor#23 char_cursor#117 +Not aliassing across scopes: char_cursor#24 char_cursor#12 +Not aliassing across scopes: char_cursor#25 char_cursor#117 +Not aliassing across scopes: char_cursor#26 char_cursor#12 +Not aliassing across scopes: char_cursor#28 char_cursor#117 +Not aliassing across scopes: line_cursor#28 line_cursor#1 +Not aliassing across scopes: char_cursor#29 line_cursor#1 +Not aliassing across scopes: BGCOL#23 BGCOL#1 +Not aliassing across scopes: char_cursor#159 char_cursor#19 +Not aliassing across scopes: line_cursor#87 line_cursor#23 Not aliassing across scopes: slow_multiply::a#0 multiply_results_compare::a#2 Not aliassing across scopes: slow_multiply::b#0 multiply_results_compare::b#2 Not aliassing across scopes: slow_multiply::return#2 slow_multiply::return#0 Not aliassing across scopes: multiply_results_compare::ms#0 slow_multiply::return#2 -Not aliassing across scopes: multiply::a#0 multiply_results_compare::a#2 -Not aliassing across scopes: multiply::b#0 multiply_results_compare::b#2 -Not aliassing across scopes: multiply::return#2 multiply::return#0 -Not aliassing across scopes: multiply_results_compare::ma#0 multiply::return#2 -Not aliassing across scopes: char_cursor#23 char_cursor#2 -Not aliassing across scopes: print_word::w#2 multiply_results_compare::ms#0 -Not aliassing across scopes: char_cursor#24 char_cursor#36 -Not aliassing across scopes: char_cursor#25 char_cursor#2 -Not aliassing across scopes: print_word::w#3 multiply_results_compare::ma#0 -Not aliassing across scopes: char_cursor#26 char_cursor#36 -Not aliassing across scopes: char_cursor#28 char_cursor#2 -Not aliassing across scopes: line_cursor#20 line_cursor#1 -Not aliassing across scopes: char_cursor#29 line_cursor#1 -Not aliassing across scopes: char_cursor#30 char_cursor#14 -Not aliassing across scopes: line_cursor#10 line_cursor#15 +Not aliassing across scopes: multiply::a#1 multiply_results_compare::a#2 +Not aliassing across scopes: multiply::b#1 multiply_results_compare::b#2 +Not aliassing across scopes: multiply::return#3 multiply::return#0 +Not aliassing across scopes: multiply_results_compare::ma#0 multiply::return#3 +Not aliassing across scopes: multiply_error::a#0 multiply_results_compare::a#2 +Not aliassing across scopes: multiply_error::b#0 multiply_results_compare::b#2 +Not aliassing across scopes: multiply_error::ms#0 multiply_results_compare::ms#0 +Not aliassing across scopes: multiply_error::ma#0 multiply_results_compare::ma#0 +Not aliassing across scopes: char_cursor#30 char_cursor#100 +Not aliassing across scopes: line_cursor#29 line_cursor#12 +Not aliassing across scopes: char_cursor#32 char_cursor#117 +Not aliassing across scopes: line_cursor#11 line_cursor#1 +Not aliassing across scopes: char_cursor#33 line_cursor#1 +Not aliassing across scopes: char_cursor#130 char_cursor#128 +Not aliassing across scopes: multiply_error::a#1 multiply_error::a#0 +Not aliassing across scopes: multiply_error::b#1 multiply_error::b#0 +Not aliassing across scopes: multiply_error::ms#1 multiply_error::ms#0 +Not aliassing across scopes: multiply_error::ma#1 multiply_error::ma#0 +Not aliassing across scopes: line_cursor#46 line_cursor#44 +Not aliassing across scopes: char_cursor#34 char_cursor#117 +Not aliassing across scopes: print_byte::b#3 multiply_error::a#1 +Not aliassing across scopes: char_cursor#35 char_cursor#15 +Not aliassing across scopes: char_cursor#36 char_cursor#117 +Not aliassing across scopes: print_byte::b#4 multiply_error::b#1 +Not aliassing across scopes: char_cursor#37 char_cursor#15 +Not aliassing across scopes: char_cursor#38 char_cursor#117 +Not aliassing across scopes: print_word::w#3 multiply_error::ms#1 +Not aliassing across scopes: char_cursor#39 char_cursor#12 +Not aliassing across scopes: char_cursor#40 char_cursor#117 +Not aliassing across scopes: print_word::w#4 multiply_error::ma#1 +Not aliassing across scopes: char_cursor#41 char_cursor#12 +Not aliassing across scopes: line_cursor#12 line_cursor#1 +Not aliassing across scopes: char_cursor#100 line_cursor#1 +Not aliassing across scopes: BGCOL#25 BGCOL#1 +Not aliassing across scopes: char_cursor#160 char_cursor#20 +Not aliassing across scopes: line_cursor#89 line_cursor#24 +Not aliassing across scopes: slow_signed_multiply::a#0 signed_multiply_results_compare::a#2 +Not aliassing across scopes: slow_signed_multiply::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: slow_signed_multiply::return#2 slow_signed_multiply::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ms#0 slow_signed_multiply::return#2 +Not aliassing across scopes: signed_multiply::a#0 signed_multiply_results_compare::a#2 +Not aliassing across scopes: signed_multiply::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: signed_multiply::return#2 signed_multiply::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ma#0 signed_multiply::return#2 +Not aliassing across scopes: signed_multiply_error::a#0 signed_multiply_results_compare::a#2 +Not aliassing across scopes: signed_multiply_error::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 +Not aliassing across scopes: signed_multiply_error::ma#0 signed_multiply_results_compare::ma#0 +Not aliassing across scopes: char_cursor#102 char_cursor#114 +Not aliassing across scopes: line_cursor#14 line_cursor#17 +Not aliassing across scopes: char_cursor#104 char_cursor#117 +Not aliassing across scopes: line_cursor#16 line_cursor#1 +Not aliassing across scopes: char_cursor#105 line_cursor#1 +Not aliassing across scopes: char_cursor#133 char_cursor#131 +Not aliassing across scopes: signed_multiply_error::a#1 signed_multiply_error::a#0 +Not aliassing across scopes: signed_multiply_error::b#1 signed_multiply_error::b#0 +Not aliassing across scopes: signed_multiply_error::ms#1 signed_multiply_error::ms#0 +Not aliassing across scopes: signed_multiply_error::ma#1 signed_multiply_error::ma#0 +Not aliassing across scopes: line_cursor#49 line_cursor#47 +Not aliassing across scopes: char_cursor#106 char_cursor#117 +Not aliassing across scopes: print_sbyte::b#1 signed_multiply_error::a#1 +Not aliassing across scopes: char_cursor#107 char_cursor#10 +Not aliassing across scopes: char_cursor#108 char_cursor#117 +Not aliassing across scopes: print_sbyte::b#2 signed_multiply_error::b#1 +Not aliassing across scopes: char_cursor#109 char_cursor#10 +Not aliassing across scopes: char_cursor#110 char_cursor#117 +Not aliassing across scopes: print_sword::w#1 signed_multiply_error::ms#1 +Not aliassing across scopes: char_cursor#111 char_cursor#5 +Not aliassing across scopes: char_cursor#112 char_cursor#117 +Not aliassing across scopes: print_sword::w#2 signed_multiply_error::ma#1 +Not aliassing across scopes: char_cursor#113 char_cursor#5 +Not aliassing across scopes: line_cursor#17 line_cursor#1 +Not aliassing across scopes: char_cursor#114 line_cursor#1 +Not aliassing across scopes: char_cursor#116 char_cursor#21 +Not aliassing across scopes: line_cursor#19 line_cursor#25 Alias (byte*) init_multiply::sqr1_lo#2 = (byte*) init_multiply::sqr1_lo#3 Alias (byte*) init_multiply::sqr1_hi#2 = (byte*) init_multiply::sqr1_hi#3 Alias (byte) init_multiply::c#1 = (byte) init_multiply::c#3 Alias (byte*) init_multiply::sqr2_lo#2 = (byte*) init_multiply::sqr2_lo#3 Alias (byte) init_multiply::x_255#1 = (byte) init_multiply::x_255#3 Alias (byte*) init_multiply::sqr2_hi#1 = (byte*) init_multiply::sqr2_hi#3 +Alias (signed byte) signed_multiply::b#1 = (signed byte) signed_multiply::b#2 +Alias (signed byte) signed_multiply::a#1 = (signed byte) signed_multiply::a#3 Succesful SSA optimization Pass2AliasElimination -Not aliassing across scopes: print_str::str#9 print_str::str#5 -Not aliassing across scopes: char_cursor#71 char_cursor#24 -Not aliassing across scopes: line_cursor#22 line_cursor#26 -Not aliassing across scopes: char_cursor#62 char_cursor#28 -Not aliassing across scopes: print_word::w#4 print_word::w#2 -Not aliassing across scopes: char_cursor#63 char_cursor#23 -Not aliassing across scopes: char_cursor#35 char_cursor#10 -Not aliassing across scopes: char_cursor#36 char_cursor#10 -Not aliassing across scopes: print_byte::b#2 print_byte::b#0 -Not aliassing across scopes: char_cursor#64 char_cursor#63 -Not aliassing across scopes: char_cursor#38 char_cursor#11 -Not aliassing across scopes: char_cursor#10 char_cursor#11 -Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#41 char_cursor#64 +Not aliassing across scopes: print_str::str#16 print_str::str#5 +Not aliassing across scopes: char_cursor#135 char_cursor#130 +Not aliassing across scopes: line_cursor#40 line_cursor#46 +Not aliassing across scopes: char_cursor#118 char_cursor#41 +Not aliassing across scopes: print_sword::w#3 print_sword::w#1 +Not aliassing across scopes: char_cursor#120 char_cursor#110 +Not aliassing across scopes: char_cursor#5 char_cursor#12 +Not aliassing across scopes: char_cursor#6 char_cursor#17 +Not aliassing across scopes: print_sbyte::b#3 print_sbyte::b#1 +Not aliassing across scopes: char_cursor#122 char_cursor#106 +Not aliassing across scopes: char_cursor#10 char_cursor#15 +Not aliassing across scopes: char_cursor#67 char_cursor#17 +Not aliassing across scopes: print_word::w#5 print_word::w#3 +Not aliassing across scopes: char_cursor#123 char_cursor#38 +Not aliassing across scopes: char_cursor#11 char_cursor#15 +Not aliassing across scopes: char_cursor#12 char_cursor#15 +Not aliassing across scopes: print_byte::b#5 print_byte::b#3 +Not aliassing across scopes: char_cursor#124 char_cursor#34 +Not aliassing across scopes: char_cursor#14 char_cursor#17 +Not aliassing across scopes: char_cursor#15 char_cursor#17 +Not aliassing across scopes: print_char::ch#4 print_char::ch#2 +Not aliassing across scopes: char_cursor#75 char_cursor#124 Not aliassing across scopes: init_multiply::sqr2_hi#0 mul_sqr2_hi#0 Not aliassing across scopes: init_multiply::sqr2_lo#0 mul_sqr2_lo#0 -Not aliassing across scopes: multiply::a#1 multiply::a#0 -Not aliassing across scopes: multiply::b#1 multiply::b#0 +Not aliassing across scopes: multiply::a#2 multiply::a#1 +Not aliassing across scopes: multiply::b#2 multiply::b#1 +Not aliassing across scopes: signed_multiply::a#1 signed_multiply::a#0 +Not aliassing across scopes: signed_multiply::b#1 signed_multiply::b#0 +Not aliassing across scopes: multiply::return#2 multiply::return#0 +Not aliassing across scopes: signed_multiply::m#0 multiply::return#2 Not aliassing across scopes: BGCOL#1 BGCOL#0 -Not aliassing across scopes: char_cursor#65 char_cursor#0 -Not aliassing across scopes: line_cursor#23 char_cursor#0 -Not aliassing across scopes: char_cursor#13 char_cursor#20 -Not aliassing across scopes: line_cursor#14 line_cursor#17 -Not aliassing across scopes: char_cursor#14 char_cursor#27 -Not aliassing across scopes: line_cursor#15 line_cursor#19 +Not aliassing across scopes: char_cursor#125 char_cursor#0 +Not aliassing across scopes: line_cursor#41 char_cursor#0 +Not aliassing across scopes: char_cursor#19 char_cursor#27 +Not aliassing across scopes: line_cursor#23 line_cursor#27 +Not aliassing across scopes: char_cursor#20 char_cursor#31 +Not aliassing across scopes: line_cursor#24 line_cursor#10 +Not aliassing across scopes: char_cursor#21 char_cursor#103 +Not aliassing across scopes: line_cursor#25 line_cursor#15 Not aliassing across scopes: slow_multiply::a#1 slow_multiply::a#0 Not aliassing across scopes: slow_multiply::b#2 slow_multiply::b#0 Not aliassing identity: slow_multiply::b#1 slow_multiply::b#1 Not aliassing identity: slow_multiply::a#2 slow_multiply::a#2 -Not aliassing across scopes: BGCOL#7 BGCOL#1 -Not aliassing across scopes: char_cursor#80 char_cursor#65 -Not aliassing across scopes: line_cursor#47 line_cursor#23 +Not aliassing across scopes: slow_signed_multiply::a#1 slow_signed_multiply::a#0 +Not aliassing across scopes: slow_signed_multiply::b#3 slow_signed_multiply::b#0 +Not aliassing identity: slow_signed_multiply::b#1 slow_signed_multiply::b#1 +Not aliassing identity: slow_signed_multiply::a#3 slow_signed_multiply::a#3 +Not aliassing identity: slow_signed_multiply::b#2 slow_signed_multiply::b#2 +Not aliassing identity: slow_signed_multiply::a#4 slow_signed_multiply::a#4 +Not aliassing across scopes: BGCOL#9 BGCOL#1 +Not aliassing across scopes: char_cursor#148 char_cursor#125 +Not aliassing across scopes: line_cursor#81 line_cursor#41 Not aliassing across scopes: multiply_tables_compare::asm_sqr#0 asm_mul_sqr1_lo#0 Not aliassing across scopes: multiply_tables_compare::kc_sqr#0 mul_sqr1_lo#0 -Not aliassing across scopes: char_cursor#16 char_cursor#2 -Not aliassing across scopes: char_cursor#17 char_cursor#36 -Not aliassing across scopes: char_cursor#18 char_cursor#2 -Not aliassing across scopes: char_cursor#19 char_cursor#36 -Not aliassing across scopes: char_cursor#21 char_cursor#2 -Not aliassing across scopes: line_cursor#18 line_cursor#1 -Not aliassing across scopes: char_cursor#22 line_cursor#1 -Not aliassing across scopes: BGCOL#17 BGCOL#1 -Not aliassing across scopes: char_cursor#87 char_cursor#13 -Not aliassing across scopes: line_cursor#54 line_cursor#14 +Not aliassing across scopes: char_cursor#23 char_cursor#117 +Not aliassing across scopes: char_cursor#24 char_cursor#12 +Not aliassing across scopes: char_cursor#25 char_cursor#117 +Not aliassing across scopes: char_cursor#26 char_cursor#12 +Not aliassing across scopes: char_cursor#28 char_cursor#117 +Not aliassing across scopes: line_cursor#28 line_cursor#1 +Not aliassing across scopes: char_cursor#29 line_cursor#1 +Not aliassing across scopes: BGCOL#23 BGCOL#1 +Not aliassing across scopes: char_cursor#159 char_cursor#19 +Not aliassing across scopes: line_cursor#87 line_cursor#23 Not aliassing across scopes: slow_multiply::a#0 multiply_results_compare::a#2 Not aliassing across scopes: slow_multiply::b#0 multiply_results_compare::b#2 Not aliassing across scopes: slow_multiply::return#2 slow_multiply::return#0 Not aliassing across scopes: multiply_results_compare::ms#0 slow_multiply::return#2 -Not aliassing across scopes: multiply::a#0 multiply_results_compare::a#2 -Not aliassing across scopes: multiply::b#0 multiply_results_compare::b#2 -Not aliassing across scopes: multiply::return#2 multiply::return#0 -Not aliassing across scopes: multiply_results_compare::ma#0 multiply::return#2 -Not aliassing across scopes: char_cursor#23 char_cursor#2 -Not aliassing across scopes: print_word::w#2 multiply_results_compare::ms#0 -Not aliassing across scopes: char_cursor#24 char_cursor#36 -Not aliassing across scopes: char_cursor#25 char_cursor#2 -Not aliassing across scopes: print_word::w#3 multiply_results_compare::ma#0 -Not aliassing across scopes: char_cursor#26 char_cursor#36 -Not aliassing across scopes: char_cursor#28 char_cursor#2 -Not aliassing across scopes: line_cursor#20 line_cursor#1 -Not aliassing across scopes: char_cursor#29 line_cursor#1 -Not aliassing across scopes: char_cursor#30 char_cursor#14 -Not aliassing across scopes: line_cursor#10 line_cursor#15 -Self Phi Eliminated (byte*) char_cursor#33 +Not aliassing across scopes: multiply::a#1 multiply_results_compare::a#2 +Not aliassing across scopes: multiply::b#1 multiply_results_compare::b#2 +Not aliassing across scopes: multiply::return#3 multiply::return#0 +Not aliassing across scopes: multiply_results_compare::ma#0 multiply::return#3 +Not aliassing across scopes: multiply_error::a#0 multiply_results_compare::a#2 +Not aliassing across scopes: multiply_error::b#0 multiply_results_compare::b#2 +Not aliassing across scopes: multiply_error::ms#0 multiply_results_compare::ms#0 +Not aliassing across scopes: multiply_error::ma#0 multiply_results_compare::ma#0 +Not aliassing across scopes: char_cursor#30 char_cursor#100 +Not aliassing across scopes: line_cursor#29 line_cursor#12 +Not aliassing across scopes: char_cursor#32 char_cursor#117 +Not aliassing across scopes: line_cursor#11 line_cursor#1 +Not aliassing across scopes: char_cursor#33 line_cursor#1 +Not aliassing across scopes: char_cursor#130 char_cursor#128 +Not aliassing across scopes: multiply_error::a#1 multiply_error::a#0 +Not aliassing across scopes: multiply_error::b#1 multiply_error::b#0 +Not aliassing across scopes: multiply_error::ms#1 multiply_error::ms#0 +Not aliassing across scopes: multiply_error::ma#1 multiply_error::ma#0 +Not aliassing across scopes: line_cursor#46 line_cursor#44 +Not aliassing across scopes: char_cursor#34 char_cursor#117 +Not aliassing across scopes: print_byte::b#3 multiply_error::a#1 +Not aliassing across scopes: char_cursor#35 char_cursor#15 +Not aliassing across scopes: char_cursor#36 char_cursor#117 +Not aliassing across scopes: print_byte::b#4 multiply_error::b#1 +Not aliassing across scopes: char_cursor#37 char_cursor#15 +Not aliassing across scopes: char_cursor#38 char_cursor#117 +Not aliassing across scopes: print_word::w#3 multiply_error::ms#1 +Not aliassing across scopes: char_cursor#39 char_cursor#12 +Not aliassing across scopes: char_cursor#40 char_cursor#117 +Not aliassing across scopes: print_word::w#4 multiply_error::ma#1 +Not aliassing across scopes: char_cursor#41 char_cursor#12 +Not aliassing across scopes: line_cursor#12 line_cursor#1 +Not aliassing across scopes: char_cursor#100 line_cursor#1 +Not aliassing across scopes: BGCOL#25 BGCOL#1 +Not aliassing across scopes: char_cursor#160 char_cursor#20 +Not aliassing across scopes: line_cursor#89 line_cursor#24 +Not aliassing across scopes: slow_signed_multiply::a#0 signed_multiply_results_compare::a#2 +Not aliassing across scopes: slow_signed_multiply::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: slow_signed_multiply::return#2 slow_signed_multiply::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ms#0 slow_signed_multiply::return#2 +Not aliassing across scopes: signed_multiply::a#0 signed_multiply_results_compare::a#2 +Not aliassing across scopes: signed_multiply::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: signed_multiply::return#2 signed_multiply::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ma#0 signed_multiply::return#2 +Not aliassing across scopes: signed_multiply_error::a#0 signed_multiply_results_compare::a#2 +Not aliassing across scopes: signed_multiply_error::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 +Not aliassing across scopes: signed_multiply_error::ma#0 signed_multiply_results_compare::ma#0 +Not aliassing across scopes: char_cursor#102 char_cursor#114 +Not aliassing across scopes: line_cursor#14 line_cursor#17 +Not aliassing across scopes: char_cursor#104 char_cursor#117 +Not aliassing across scopes: line_cursor#16 line_cursor#1 +Not aliassing across scopes: char_cursor#105 line_cursor#1 +Not aliassing across scopes: char_cursor#133 char_cursor#131 +Not aliassing across scopes: signed_multiply_error::a#1 signed_multiply_error::a#0 +Not aliassing across scopes: signed_multiply_error::b#1 signed_multiply_error::b#0 +Not aliassing across scopes: signed_multiply_error::ms#1 signed_multiply_error::ms#0 +Not aliassing across scopes: signed_multiply_error::ma#1 signed_multiply_error::ma#0 +Not aliassing across scopes: line_cursor#49 line_cursor#47 +Not aliassing across scopes: char_cursor#106 char_cursor#117 +Not aliassing across scopes: print_sbyte::b#1 signed_multiply_error::a#1 +Not aliassing across scopes: char_cursor#107 char_cursor#10 +Not aliassing across scopes: char_cursor#108 char_cursor#117 +Not aliassing across scopes: print_sbyte::b#2 signed_multiply_error::b#1 +Not aliassing across scopes: char_cursor#109 char_cursor#10 +Not aliassing across scopes: char_cursor#110 char_cursor#117 +Not aliassing across scopes: print_sword::w#1 signed_multiply_error::ms#1 +Not aliassing across scopes: char_cursor#111 char_cursor#5 +Not aliassing across scopes: char_cursor#112 char_cursor#117 +Not aliassing across scopes: print_sword::w#2 signed_multiply_error::ma#1 +Not aliassing across scopes: char_cursor#113 char_cursor#5 +Not aliassing across scopes: line_cursor#17 line_cursor#1 +Not aliassing across scopes: char_cursor#114 line_cursor#1 +Not aliassing across scopes: char_cursor#116 char_cursor#21 +Not aliassing across scopes: line_cursor#19 line_cursor#25 +Self Phi Eliminated (byte*) char_cursor#61 Self Phi Eliminated (byte) slow_multiply::b#1 Self Phi Eliminated (byte) slow_multiply::a#2 -Self Phi Eliminated (byte*) BGCOL#2 -Self Phi Eliminated (byte*) char_cursor#66 -Self Phi Eliminated (byte*) line_cursor#24 +Self Phi Eliminated (signed byte) slow_signed_multiply::b#1 +Self Phi Eliminated (signed byte) slow_signed_multiply::a#3 +Self Phi Eliminated (signed byte) slow_signed_multiply::b#2 +Self Phi Eliminated (signed byte) slow_signed_multiply::a#4 +Self Phi Eliminated (byte*) BGCOL#10 +Self Phi Eliminated (byte*) char_cursor#126 +Self Phi Eliminated (byte*) line_cursor#42 Self Phi Eliminated (byte) multiply_results_compare::a#2 +Self Phi Eliminated (byte*) BGCOL#11 +Self Phi Eliminated (byte*) char_cursor#128 +Self Phi Eliminated (byte*) line_cursor#44 +Self Phi Eliminated (signed byte) signed_multiply_results_compare::a#2 Self Phi Eliminated (byte*) BGCOL#12 -Self Phi Eliminated (byte*) char_cursor#68 -Self Phi Eliminated (byte*) line_cursor#26 +Self Phi Eliminated (byte*) char_cursor#131 +Self Phi Eliminated (byte*) line_cursor#47 Succesful SSA optimization Pass2SelfPhiElimination -Redundant Phi (byte*) char_cursor#33 (byte*) char_cursor#62 -Redundant Phi (byte*) char_cursor#35 (byte*) char_cursor#10 -Redundant Phi (byte*) char_cursor#36 (byte*) char_cursor#10 -Redundant Phi (byte*) char_cursor#38 (byte*) char_cursor#11 -Redundant Phi (byte*) char_cursor#10 (byte*) char_cursor#11 -Redundant Phi (byte) multiply::a#1 (byte) multiply::a#0 -Redundant Phi (byte) multiply::b#1 (byte) multiply::b#0 +Redundant Phi (byte*) char_cursor#61 (byte*) char_cursor#118 +Redundant Phi (byte*) char_cursor#5 (byte*) char_cursor#12 +Redundant Phi (byte*) char_cursor#6 (byte*) char_cursor#17 +Redundant Phi (byte*) char_cursor#10 (byte*) char_cursor#15 +Redundant Phi (byte*) char_cursor#67 (byte*) char_cursor#17 +Redundant Phi (byte*) char_cursor#11 (byte*) char_cursor#15 +Redundant Phi (byte*) char_cursor#12 (byte*) char_cursor#15 +Redundant Phi (byte*) char_cursor#14 (byte*) char_cursor#17 +Redundant Phi (byte*) char_cursor#15 (byte*) char_cursor#17 +Redundant Phi (signed byte) signed_multiply::a#1 (signed byte) signed_multiply::a#0 +Redundant Phi (signed byte) signed_multiply::b#1 (signed byte) signed_multiply::b#0 Redundant Phi (byte*) BGCOL#1 (byte*) BGCOL#0 -Redundant Phi (byte*) char_cursor#65 (byte*) char_cursor#0 -Redundant Phi (byte*) line_cursor#23 (byte*) char_cursor#0 -Redundant Phi (byte*) char_cursor#13 (byte*) char_cursor#20 -Redundant Phi (byte*) line_cursor#14 (byte*) line_cursor#17 -Redundant Phi (byte*) char_cursor#14 (byte*) char_cursor#27 -Redundant Phi (byte*) line_cursor#15 (byte*) line_cursor#19 +Redundant Phi (byte*) char_cursor#125 (byte*) char_cursor#0 +Redundant Phi (byte*) line_cursor#41 (byte*) char_cursor#0 +Redundant Phi (byte*) char_cursor#19 (byte*) char_cursor#27 +Redundant Phi (byte*) line_cursor#23 (byte*) line_cursor#27 +Redundant Phi (byte*) char_cursor#20 (byte*) char_cursor#31 +Redundant Phi (byte*) line_cursor#24 (byte*) line_cursor#10 +Redundant Phi (byte*) char_cursor#21 (byte*) char_cursor#103 +Redundant Phi (byte*) line_cursor#25 (byte*) line_cursor#15 Redundant Phi (byte) slow_multiply::a#1 (byte) slow_multiply::a#0 Redundant Phi (byte) slow_multiply::b#2 (byte) slow_multiply::b#0 Redundant Phi (byte) slow_multiply::b#1 (byte) slow_multiply::b#2 Redundant Phi (byte) slow_multiply::a#2 (byte) slow_multiply::a#1 -Redundant Phi (byte*) BGCOL#7 (byte*) BGCOL#1 -Redundant Phi (byte*) char_cursor#80 (byte*) char_cursor#65 -Redundant Phi (byte*) line_cursor#47 (byte*) line_cursor#23 -Redundant Phi (byte*) BGCOL#2 (byte*) BGCOL#7 -Redundant Phi (byte*) char_cursor#66 (byte*) char_cursor#80 -Redundant Phi (byte*) line_cursor#24 (byte*) line_cursor#47 -Redundant Phi (byte*) char_cursor#16 (byte*) char_cursor#2 -Redundant Phi (byte*) char_cursor#17 (byte*) char_cursor#36 -Redundant Phi (byte*) char_cursor#18 (byte*) char_cursor#2 -Redundant Phi (byte*) char_cursor#19 (byte*) char_cursor#36 -Redundant Phi (byte*) char_cursor#21 (byte*) char_cursor#2 -Redundant Phi (byte*) line_cursor#18 (byte*) line_cursor#1 -Redundant Phi (byte*) char_cursor#22 (byte*) line_cursor#1 -Redundant Phi (byte*) BGCOL#17 (byte*) BGCOL#1 -Redundant Phi (byte*) char_cursor#87 (byte*) char_cursor#13 -Redundant Phi (byte*) line_cursor#54 (byte*) line_cursor#14 -Redundant Phi (byte) multiply_results_compare::a#2 (byte) multiply_results_compare::a#5 -Redundant Phi (byte*) BGCOL#12 (byte*) BGCOL#14 -Redundant Phi (byte*) char_cursor#68 (byte*) char_cursor#86 -Redundant Phi (byte*) line_cursor#26 (byte*) line_cursor#53 -Redundant Phi (byte*) char_cursor#23 (byte*) char_cursor#2 -Redundant Phi (byte*) char_cursor#24 (byte*) char_cursor#36 -Redundant Phi (byte*) char_cursor#25 (byte*) char_cursor#2 -Redundant Phi (byte*) char_cursor#26 (byte*) char_cursor#36 -Redundant Phi (byte*) char_cursor#28 (byte*) char_cursor#2 -Redundant Phi (byte*) line_cursor#20 (byte*) line_cursor#1 +Redundant Phi (signed byte) slow_signed_multiply::a#1 (signed byte) slow_signed_multiply::a#0 +Redundant Phi (signed byte) slow_signed_multiply::b#3 (signed byte) slow_signed_multiply::b#0 +Redundant Phi (signed byte) slow_signed_multiply::b#1 (signed byte) slow_signed_multiply::b#3 +Redundant Phi (signed byte) slow_signed_multiply::a#3 (signed byte) slow_signed_multiply::a#1 +Redundant Phi (signed byte) slow_signed_multiply::b#2 (signed byte) slow_signed_multiply::b#3 +Redundant Phi (signed byte) slow_signed_multiply::a#4 (signed byte) slow_signed_multiply::a#1 +Redundant Phi (byte*) BGCOL#9 (byte*) BGCOL#1 +Redundant Phi (byte*) char_cursor#148 (byte*) char_cursor#125 +Redundant Phi (byte*) line_cursor#81 (byte*) line_cursor#41 +Redundant Phi (byte*) BGCOL#10 (byte*) BGCOL#9 +Redundant Phi (byte*) char_cursor#126 (byte*) char_cursor#148 +Redundant Phi (byte*) line_cursor#42 (byte*) line_cursor#81 +Redundant Phi (byte*) char_cursor#23 (byte*) char_cursor#117 +Redundant Phi (byte*) char_cursor#24 (byte*) char_cursor#12 +Redundant Phi (byte*) char_cursor#25 (byte*) char_cursor#117 +Redundant Phi (byte*) char_cursor#26 (byte*) char_cursor#12 +Redundant Phi (byte*) char_cursor#28 (byte*) char_cursor#117 +Redundant Phi (byte*) line_cursor#28 (byte*) line_cursor#1 Redundant Phi (byte*) char_cursor#29 (byte*) line_cursor#1 -Redundant Phi (byte*) char_cursor#30 (byte*) char_cursor#14 -Redundant Phi (byte*) line_cursor#10 (byte*) line_cursor#15 +Redundant Phi (byte*) BGCOL#23 (byte*) BGCOL#1 +Redundant Phi (byte*) char_cursor#159 (byte*) char_cursor#19 +Redundant Phi (byte*) line_cursor#87 (byte*) line_cursor#23 +Redundant Phi (byte) multiply_results_compare::a#2 (byte) multiply_results_compare::a#6 +Redundant Phi (byte*) BGCOL#11 (byte*) BGCOL#18 +Redundant Phi (byte*) char_cursor#128 (byte*) char_cursor#157 +Redundant Phi (byte*) line_cursor#44 (byte*) line_cursor#83 +Redundant Phi (byte*) char_cursor#30 (byte*) char_cursor#100 +Redundant Phi (byte*) line_cursor#29 (byte*) line_cursor#12 +Redundant Phi (byte*) char_cursor#32 (byte*) char_cursor#117 +Redundant Phi (byte*) line_cursor#11 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#33 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#130 (byte*) char_cursor#128 +Redundant Phi (byte) multiply_error::a#1 (byte) multiply_error::a#0 +Redundant Phi (byte) multiply_error::b#1 (byte) multiply_error::b#0 +Redundant Phi (word) multiply_error::ms#1 (word) multiply_error::ms#0 +Redundant Phi (word) multiply_error::ma#1 (word) multiply_error::ma#0 +Redundant Phi (byte*) line_cursor#46 (byte*) line_cursor#44 +Redundant Phi (byte*) char_cursor#34 (byte*) char_cursor#117 +Redundant Phi (byte*) char_cursor#35 (byte*) char_cursor#15 +Redundant Phi (byte*) char_cursor#36 (byte*) char_cursor#117 +Redundant Phi (byte*) char_cursor#37 (byte*) char_cursor#15 +Redundant Phi (byte*) char_cursor#38 (byte*) char_cursor#117 +Redundant Phi (byte*) char_cursor#39 (byte*) char_cursor#12 +Redundant Phi (byte*) char_cursor#40 (byte*) char_cursor#117 +Redundant Phi (byte*) char_cursor#41 (byte*) char_cursor#12 +Redundant Phi (byte*) line_cursor#12 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#100 (byte*) line_cursor#1 +Redundant Phi (byte*) BGCOL#25 (byte*) BGCOL#1 +Redundant Phi (byte*) char_cursor#160 (byte*) char_cursor#20 +Redundant Phi (byte*) line_cursor#89 (byte*) line_cursor#24 +Redundant Phi (signed byte) signed_multiply_results_compare::a#2 (signed byte) signed_multiply_results_compare::a#6 +Redundant Phi (byte*) BGCOL#12 (byte*) BGCOL#20 +Redundant Phi (byte*) char_cursor#131 (byte*) char_cursor#158 +Redundant Phi (byte*) line_cursor#47 (byte*) line_cursor#85 +Redundant Phi (byte*) char_cursor#102 (byte*) char_cursor#114 +Redundant Phi (byte*) line_cursor#14 (byte*) line_cursor#17 +Redundant Phi (byte*) char_cursor#104 (byte*) char_cursor#117 +Redundant Phi (byte*) line_cursor#16 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#105 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#133 (byte*) char_cursor#131 +Redundant Phi (signed byte) signed_multiply_error::a#1 (signed byte) signed_multiply_error::a#0 +Redundant Phi (signed byte) signed_multiply_error::b#1 (signed byte) signed_multiply_error::b#0 +Redundant Phi (signed word) signed_multiply_error::ms#1 (signed word) signed_multiply_error::ms#0 +Redundant Phi (signed word) signed_multiply_error::ma#1 (signed word) signed_multiply_error::ma#0 +Redundant Phi (byte*) line_cursor#49 (byte*) line_cursor#47 +Redundant Phi (byte*) char_cursor#106 (byte*) char_cursor#117 +Redundant Phi (byte*) char_cursor#107 (byte*) char_cursor#10 +Redundant Phi (byte*) char_cursor#108 (byte*) char_cursor#117 +Redundant Phi (byte*) char_cursor#109 (byte*) char_cursor#10 +Redundant Phi (byte*) char_cursor#110 (byte*) char_cursor#117 +Redundant Phi (byte*) char_cursor#111 (byte*) char_cursor#5 +Redundant Phi (byte*) char_cursor#112 (byte*) char_cursor#117 +Redundant Phi (byte*) char_cursor#113 (byte*) char_cursor#5 +Redundant Phi (byte*) line_cursor#17 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#114 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#116 (byte*) char_cursor#21 +Redundant Phi (byte*) line_cursor#19 (byte*) line_cursor#25 Succesful SSA optimization Pass2RedundantPhiElimination -Redundant Phi (byte*) char_cursor#62 (byte*) char_cursor#2 -Redundant Phi (byte*) char_cursor#63 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#120 (byte*) char_cursor#117 +Redundant Phi (byte*) char_cursor#122 (byte*) char_cursor#117 +Redundant Phi (byte*) char_cursor#31 (byte*) line_cursor#1 +Redundant Phi (byte*) line_cursor#10 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#103 (byte*) line_cursor#1 +Redundant Phi (byte*) line_cursor#15 (byte*) line_cursor#1 Succesful SSA optimization Pass2RedundantPhiElimination -Simple Condition (boolean~) print_str::$0 if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 -Simple Condition (boolean~) print_ln::$1 if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 +Simple Condition (boolean~) print_str::$0 if(*((byte*) print_str::str#14)!=(byte) '@') goto print_str::@2 +Simple Condition (boolean~) print_ln::$1 if((byte*) line_cursor#1<(byte*) char_cursor#118) goto print_ln::@1 +Simple Condition (boolean~) print_sword::$1 if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word) 0) goto print_sword::@1 +Simple Condition (boolean~) print_sbyte::$1 if((signed byte) print_sbyte::b#3>=(byte/signed byte/word/signed word) 0) goto print_sbyte::@1 Simple Condition (boolean~) print_cls::$1 if((byte*) print_cls::sc#1!=(word/signed word~) print_cls::$0) goto print_cls::@1 Simple Condition (boolean~) init_multiply::$4 if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word) 0) goto init_multiply::@2 Simple Condition (boolean~) init_multiply::$9 if((byte*) init_multiply::sqr1_lo#1!=(byte*~) init_multiply::$8) goto init_multiply::@1 Simple Condition (boolean~) init_multiply::$14 if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_multiply::@4 Simple Condition (boolean~) init_multiply::$16 if((byte*) init_multiply::sqr2_lo#1!=(byte*~) init_multiply::$15) goto init_multiply::@3 -Simple Condition (boolean~) slow_multiply::$1 if((byte) slow_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 +Simple Condition (boolean~) signed_multiply::$4 if((signed byte) signed_multiply::a#0>=(byte/signed byte/word/signed word) 0) goto signed_multiply::@1 +Simple Condition (boolean~) signed_multiply::$10 if((signed byte) signed_multiply::b#0>=(byte/signed byte/word/signed word) 0) goto signed_multiply::@2 +Simple Condition (boolean~) slow_multiply::$1 if((byte) slow_multiply::a#0==(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 Simple Condition (boolean~) slow_multiply::$3 if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 +Simple Condition (boolean~) slow_signed_multiply::$1 if((signed byte) slow_signed_multiply::a#0>=(byte/signed byte/word/signed word) 0) goto slow_signed_multiply::@1 +Simple Condition (boolean~) slow_signed_multiply::$5 if((signed byte) slow_signed_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_signed_multiply::@4 +Simple Condition (boolean~) slow_signed_multiply::$3 if((signed byte) slow_signed_multiply::i#1!=(signed byte) slow_signed_multiply::a#0) goto slow_signed_multiply::@2 +Simple Condition (boolean~) slow_signed_multiply::$7 if((signed byte) slow_signed_multiply::j#1!=(signed byte) slow_signed_multiply::a#0) goto slow_signed_multiply::@5 Simple Condition (boolean~) multiply_tables_compare::$1 if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 Simple Condition (boolean~) multiply_tables_compare::$10 if((byte*) multiply_tables_compare::kc_sqr#1<(byte*~) multiply_tables_compare::$9) goto multiply_tables_compare::@1 Simple Condition (boolean~) multiply_results_compare::$3 if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 -Simple Condition (boolean~) multiply_results_compare::$8 if((byte) multiply_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@2 -Simple Condition (boolean~) multiply_results_compare::$9 if((byte) multiply_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@1 +Simple Condition (boolean~) multiply_results_compare::$5 if((byte) multiply_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@2 +Simple Condition (boolean~) multiply_results_compare::$6 if((byte) multiply_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@1 +Simple Condition (boolean~) signed_multiply_results_compare::$5 if((signed word) signed_multiply_results_compare::ms#0==(signed word) signed_multiply_results_compare::ma#0) goto signed_multiply_results_compare::@3 +Simple Condition (boolean~) signed_multiply_results_compare::$8 if((signed byte) signed_multiply_results_compare::b#1!=(signed byte/signed word~) signed_multiply_results_compare::$7) goto signed_multiply_results_compare::@2 +Simple Condition (boolean~) signed_multiply_results_compare::$10 if((signed byte) signed_multiply_results_compare::a#1!=(signed byte/signed word~) signed_multiply_results_compare::$9) goto signed_multiply_results_compare::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) char_cursor#0 = ((byte*))1024 -Constant (const byte[]) print_byte::hextab#0 = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' } +Constant (const byte) print_char::ch#0 = '-' +Constant (const byte) print_char::ch#1 = '-' +Constant (const string) print_byte::hextab#0 = print_byte::$4 Constant (const byte*) print_cls::sc#0 = ((byte*))1024 Constant (const word/signed word) print_cls::$0 = 1024+1000 Constant (const byte[512]) mul_sqr1_lo#0 = { fill( 512, 0) } @@ -2532,6 +4450,9 @@ Constant (const byte*) multiply::memB#0 = ((byte*))255 Constant (const byte*) BGCOL#0 = ((byte*))53281 Constant (const word) slow_multiply::m#0 = 0 Constant (const byte) slow_multiply::i#0 = 0 +Constant (const signed word) slow_signed_multiply::m#0 = 0 +Constant (const signed byte) slow_signed_multiply::i#0 = 0 +Constant (const signed byte) slow_signed_multiply::j#0 = 0 Constant (const byte[512]) asm_mul_sqr1_lo#0 = { fill( 512, 0) } Constant (const byte[512]) asm_mul_sqr1_hi#0 = { fill( 512, 0) } Constant (const byte[512]) asm_mul_sqr2_lo#0 = { fill( 512, 0) } @@ -2544,8 +4465,19 @@ Constant (const string) print_str::str#3 = multiply_tables_compare::str2 Constant (const byte) multiply_results_compare::a#0 = 0 Constant (const byte) multiply_results_compare::b#0 = 0 Constant (const string) print_str::str#4 = multiply_results_compare::str -Constant (const string) print_str::str#5 = multiply_results_compare::str1 -Constant (const string) print_str::str#6 = multiply_results_compare::str2 +Constant (const string) print_str::str#5 = multiply_error::str +Constant (const string) print_str::str#6 = multiply_error::str1 +Constant (const string) print_str::str#7 = multiply_error::str2 +Constant (const string) print_str::str#8 = multiply_error::str3 +Constant (const signed byte) signed_multiply_results_compare::a#0 = -128 +Constant (const signed byte) signed_multiply_results_compare::b#0 = -128 +Constant (const signed byte/signed word) signed_multiply_results_compare::$7 = -128 +Constant (const signed byte/signed word) signed_multiply_results_compare::$9 = -128 +Constant (const string) print_str::str#9 = signed_multiply_results_compare::str +Constant (const string) print_str::str#10 = signed_multiply_error::str +Constant (const string) print_str::str#11 = signed_multiply_error::str1 +Constant (const string) print_str::str#12 = signed_multiply_error::str2 +Constant (const string) print_str::str#13 = signed_multiply_error::str3 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) init_multiply::sqr1_hi#0 = mul_sqr1_hi#0+1 Constant (const byte*) init_multiply::sqr1_lo#0 = mul_sqr1_lo#0+1 @@ -2565,98 +4497,209 @@ Succesful SSA optimization Pass2ConstantIdentification Fixing word constructor with multiply::$0 ← *(multiply::memB#0) w= *(multiply::memA#0) Succesful SSA optimization Pass2FixWordConstructors Culled Empty Block (label) print_ln::@2 +Culled Empty Block (label) print_sword::@3 +Culled Empty Block (label) print_sbyte::@3 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 -Culled Empty Block (label) @6 +Culled Empty Block (label) @8 Culled Empty Block (label) init_multiply::@6 Not culling empty block because it shares successor with its predecessor. (label) init_multiply::@7 -Culled Empty Block (label) @8 -Culled Empty Block (label) main::@5 +Culled Empty Block (label) @11 +Culled Empty Block (label) main::@6 Culled Empty Block (label) slow_multiply::@3 -Culled Empty Block (label) @10 +Culled Empty Block (label) slow_signed_multiply::@6 +Culled Empty Block (label) slow_signed_multiply::@4 +Culled Empty Block (label) slow_signed_multiply::@9 +Culled Empty Block (label) @14 Culled Empty Block (label) multiply_tables_compare::@9 Culled Empty Block (label) multiply_tables_compare::@11 -Culled Empty Block (label) multiply_results_compare::@13 -Culled Empty Block (label) multiply_results_compare::@15 -Culled Empty Block (label) @14 +Culled Empty Block (label) multiply_results_compare::@10 +Culled Empty Block (label) multiply_results_compare::@12 +Culled Empty Block (label) multiply_error::@9 +Culled Empty Block (label) signed_multiply_results_compare::@10 +Culled Empty Block (label) signed_multiply_results_compare::@12 +Culled Empty Block (label) signed_multiply_error::@9 +Culled Empty Block (label) @21 Succesful SSA optimization Pass2CullEmptyBlocks Not culling empty block because it shares successor with its predecessor. (label) init_multiply::@7 -Not aliassing across scopes: char_cursor#71 char_cursor#11 -Not aliassing across scopes: line_cursor#22 line_cursor#53 -Not aliassing across scopes: print_word::w#4 print_word::w#2 -Not aliassing across scopes: print_byte::b#2 print_byte::b#0 -Not aliassing across scopes: char_cursor#64 char_cursor#2 -Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#41 char_cursor#64 -Not aliassing across scopes: char_cursor#20 line_cursor#1 -Not aliassing across scopes: line_cursor#17 line_cursor#1 -Not aliassing across scopes: char_cursor#86 char_cursor#20 -Not aliassing across scopes: line_cursor#53 line_cursor#17 -Not aliassing across scopes: slow_multiply::a#0 multiply_results_compare::a#5 +Not aliassing across scopes: char_cursor#135 char_cursor#157 +Not aliassing across scopes: line_cursor#40 line_cursor#83 +Not aliassing across scopes: char_cursor#118 char_cursor#17 +Not aliassing across scopes: print_sword::w#3 print_sword::w#1 +Not aliassing across scopes: char_cursor#119 char_cursor#117 +Not aliassing across scopes: print_sbyte::b#3 print_sbyte::b#1 +Not aliassing across scopes: char_cursor#121 char_cursor#117 +Not aliassing across scopes: print_word::w#5 print_word::w#3 +Not aliassing across scopes: char_cursor#123 char_cursor#117 +Not aliassing across scopes: print_byte::b#5 print_byte::b#3 +Not aliassing across scopes: char_cursor#124 char_cursor#117 +Not aliassing across scopes: print_char::ch#4 print_char::ch#2 +Not aliassing across scopes: char_cursor#75 char_cursor#124 +Not aliassing across scopes: multiply::a#2 multiply::a#1 +Not aliassing across scopes: multiply::b#2 multiply::b#1 +Not aliassing across scopes: multiply::return#2 multiply::return#0 +Not aliassing across scopes: signed_multiply::m#0 multiply::return#2 +Not aliassing across scopes: char_cursor#27 line_cursor#1 +Not aliassing across scopes: line_cursor#27 line_cursor#1 +Not aliassing across scopes: char_cursor#157 char_cursor#27 +Not aliassing across scopes: line_cursor#83 line_cursor#27 +Not aliassing across scopes: slow_multiply::a#0 multiply_results_compare::a#6 Not aliassing across scopes: slow_multiply::b#0 multiply_results_compare::b#2 Not aliassing across scopes: slow_multiply::return#2 slow_multiply::return#0 Not aliassing across scopes: multiply_results_compare::ms#0 slow_multiply::return#2 -Not aliassing across scopes: multiply::a#0 multiply_results_compare::a#5 -Not aliassing across scopes: multiply::b#0 multiply_results_compare::b#2 -Not aliassing across scopes: multiply::return#2 multiply::return#0 -Not aliassing across scopes: multiply_results_compare::ma#0 multiply::return#2 -Not aliassing across scopes: print_word::w#2 multiply_results_compare::ms#0 -Not aliassing across scopes: print_word::w#3 multiply_results_compare::ma#0 -Not aliassing across scopes: char_cursor#27 char_cursor#11 +Not aliassing across scopes: multiply::a#1 multiply_results_compare::a#6 +Not aliassing across scopes: multiply::b#1 multiply_results_compare::b#2 +Not aliassing across scopes: multiply::return#3 multiply::return#0 +Not aliassing across scopes: multiply_results_compare::ma#0 multiply::return#3 +Not aliassing across scopes: multiply_error::a#0 multiply_results_compare::a#6 +Not aliassing across scopes: multiply_error::b#0 multiply_results_compare::b#2 +Not aliassing across scopes: multiply_error::ms#0 multiply_results_compare::ms#0 +Not aliassing across scopes: multiply_error::ma#0 multiply_results_compare::ma#0 +Not aliassing across scopes: print_byte::b#3 multiply_error::a#0 +Not aliassing across scopes: print_byte::b#4 multiply_error::b#0 +Not aliassing across scopes: print_word::w#3 multiply_error::ms#0 +Not aliassing across scopes: print_word::w#4 multiply_error::ma#0 +Not aliassing across scopes: char_cursor#158 line_cursor#1 +Not aliassing across scopes: line_cursor#85 line_cursor#1 +Not aliassing across scopes: slow_signed_multiply::a#0 signed_multiply_results_compare::a#6 +Not aliassing across scopes: slow_signed_multiply::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: slow_signed_multiply::return#2 slow_signed_multiply::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ms#0 slow_signed_multiply::return#2 +Not aliassing across scopes: signed_multiply::a#0 signed_multiply_results_compare::a#6 +Not aliassing across scopes: signed_multiply::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: signed_multiply::return#2 signed_multiply::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ma#0 signed_multiply::return#2 +Not aliassing across scopes: signed_multiply_error::a#0 signed_multiply_results_compare::a#6 +Not aliassing across scopes: signed_multiply_error::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 +Not aliassing across scopes: signed_multiply_error::ma#0 signed_multiply_results_compare::ma#0 +Not aliassing across scopes: print_sbyte::b#1 signed_multiply_error::a#0 +Not aliassing across scopes: print_sbyte::b#2 signed_multiply_error::b#0 +Not aliassing across scopes: print_sword::w#1 signed_multiply_error::ms#0 +Not aliassing across scopes: print_sword::w#2 signed_multiply_error::ma#0 Alias (word) multiply::return#0 = (word~) multiply::$0 Succesful SSA optimization Pass2AliasElimination -Not aliassing across scopes: char_cursor#71 char_cursor#11 -Not aliassing across scopes: line_cursor#22 line_cursor#53 -Not aliassing across scopes: print_word::w#4 print_word::w#2 -Not aliassing across scopes: print_byte::b#2 print_byte::b#0 -Not aliassing across scopes: char_cursor#64 char_cursor#2 -Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#41 char_cursor#64 -Not aliassing across scopes: char_cursor#20 line_cursor#1 -Not aliassing across scopes: line_cursor#17 line_cursor#1 -Not aliassing across scopes: char_cursor#86 char_cursor#20 -Not aliassing across scopes: line_cursor#53 line_cursor#17 -Not aliassing across scopes: slow_multiply::a#0 multiply_results_compare::a#5 +Not aliassing across scopes: char_cursor#135 char_cursor#157 +Not aliassing across scopes: line_cursor#40 line_cursor#83 +Not aliassing across scopes: char_cursor#118 char_cursor#17 +Not aliassing across scopes: print_sword::w#3 print_sword::w#1 +Not aliassing across scopes: char_cursor#119 char_cursor#117 +Not aliassing across scopes: print_sbyte::b#3 print_sbyte::b#1 +Not aliassing across scopes: char_cursor#121 char_cursor#117 +Not aliassing across scopes: print_word::w#5 print_word::w#3 +Not aliassing across scopes: char_cursor#123 char_cursor#117 +Not aliassing across scopes: print_byte::b#5 print_byte::b#3 +Not aliassing across scopes: char_cursor#124 char_cursor#117 +Not aliassing across scopes: print_char::ch#4 print_char::ch#2 +Not aliassing across scopes: char_cursor#75 char_cursor#124 +Not aliassing across scopes: multiply::a#2 multiply::a#1 +Not aliassing across scopes: multiply::b#2 multiply::b#1 +Not aliassing across scopes: multiply::return#2 multiply::return#0 +Not aliassing across scopes: signed_multiply::m#0 multiply::return#2 +Not aliassing across scopes: char_cursor#27 line_cursor#1 +Not aliassing across scopes: line_cursor#27 line_cursor#1 +Not aliassing across scopes: char_cursor#157 char_cursor#27 +Not aliassing across scopes: line_cursor#83 line_cursor#27 +Not aliassing across scopes: slow_multiply::a#0 multiply_results_compare::a#6 Not aliassing across scopes: slow_multiply::b#0 multiply_results_compare::b#2 Not aliassing across scopes: slow_multiply::return#2 slow_multiply::return#0 Not aliassing across scopes: multiply_results_compare::ms#0 slow_multiply::return#2 -Not aliassing across scopes: multiply::a#0 multiply_results_compare::a#5 -Not aliassing across scopes: multiply::b#0 multiply_results_compare::b#2 -Not aliassing across scopes: multiply::return#2 multiply::return#0 -Not aliassing across scopes: multiply_results_compare::ma#0 multiply::return#2 -Not aliassing across scopes: print_word::w#2 multiply_results_compare::ms#0 -Not aliassing across scopes: print_word::w#3 multiply_results_compare::ma#0 -Not aliassing across scopes: char_cursor#27 char_cursor#11 -Self Phi Eliminated (byte*) BGCOL#14 -Self Phi Eliminated (byte*) char_cursor#86 -Self Phi Eliminated (byte*) line_cursor#53 +Not aliassing across scopes: multiply::a#1 multiply_results_compare::a#6 +Not aliassing across scopes: multiply::b#1 multiply_results_compare::b#2 +Not aliassing across scopes: multiply::return#3 multiply::return#0 +Not aliassing across scopes: multiply_results_compare::ma#0 multiply::return#3 +Not aliassing across scopes: multiply_error::a#0 multiply_results_compare::a#6 +Not aliassing across scopes: multiply_error::b#0 multiply_results_compare::b#2 +Not aliassing across scopes: multiply_error::ms#0 multiply_results_compare::ms#0 +Not aliassing across scopes: multiply_error::ma#0 multiply_results_compare::ma#0 +Not aliassing across scopes: print_byte::b#3 multiply_error::a#0 +Not aliassing across scopes: print_byte::b#4 multiply_error::b#0 +Not aliassing across scopes: print_word::w#3 multiply_error::ms#0 +Not aliassing across scopes: print_word::w#4 multiply_error::ma#0 +Not aliassing across scopes: char_cursor#158 line_cursor#1 +Not aliassing across scopes: line_cursor#85 line_cursor#1 +Not aliassing across scopes: slow_signed_multiply::a#0 signed_multiply_results_compare::a#6 +Not aliassing across scopes: slow_signed_multiply::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: slow_signed_multiply::return#2 slow_signed_multiply::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ms#0 slow_signed_multiply::return#2 +Not aliassing across scopes: signed_multiply::a#0 signed_multiply_results_compare::a#6 +Not aliassing across scopes: signed_multiply::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: signed_multiply::return#2 signed_multiply::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ma#0 signed_multiply::return#2 +Not aliassing across scopes: signed_multiply_error::a#0 signed_multiply_results_compare::a#6 +Not aliassing across scopes: signed_multiply_error::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 +Not aliassing across scopes: signed_multiply_error::ma#0 signed_multiply_results_compare::ma#0 +Not aliassing across scopes: print_sbyte::b#1 signed_multiply_error::a#0 +Not aliassing across scopes: print_sbyte::b#2 signed_multiply_error::b#0 +Not aliassing across scopes: print_sword::w#1 signed_multiply_error::ms#0 +Not aliassing across scopes: print_sword::w#2 signed_multiply_error::ma#0 +Self Phi Eliminated (byte*) BGCOL#18 +Self Phi Eliminated (byte*) char_cursor#157 +Self Phi Eliminated (byte*) line_cursor#83 +Self Phi Eliminated (byte*) BGCOL#20 +Self Phi Eliminated (byte*) char_cursor#158 +Self Phi Eliminated (byte*) line_cursor#85 Succesful SSA optimization Pass2SelfPhiElimination -Redundant Phi (byte*) BGCOL#14 (const byte*) BGCOL#0 -Redundant Phi (byte*) char_cursor#86 (byte*) char_cursor#20 -Redundant Phi (byte*) line_cursor#53 (byte*) line_cursor#17 +Redundant Phi (byte*) BGCOL#18 (const byte*) BGCOL#0 +Redundant Phi (byte*) char_cursor#157 (byte*) char_cursor#27 +Redundant Phi (byte*) line_cursor#83 (byte*) line_cursor#27 +Redundant Phi (byte*) BGCOL#20 (const byte*) BGCOL#0 +Redundant Phi (byte*) char_cursor#158 (byte*) line_cursor#1 +Redundant Phi (byte*) line_cursor#85 (byte*) line_cursor#1 Succesful SSA optimization Pass2RedundantPhiElimination Not culling empty block because it shares successor with its predecessor. (label) init_multiply::@7 -Not aliassing across scopes: char_cursor#71 char_cursor#11 -Not aliassing across scopes: line_cursor#22 line_cursor#17 -Not aliassing across scopes: print_word::w#4 print_word::w#2 -Not aliassing across scopes: print_byte::b#2 print_byte::b#0 -Not aliassing across scopes: char_cursor#64 char_cursor#2 -Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#41 char_cursor#64 -Not aliassing across scopes: char_cursor#20 line_cursor#1 -Not aliassing across scopes: line_cursor#17 line_cursor#1 -Not aliassing across scopes: slow_multiply::a#0 multiply_results_compare::a#5 +Not aliassing across scopes: char_cursor#135 char_cursor#27 +Not aliassing across scopes: line_cursor#40 line_cursor#27 +Not aliassing across scopes: char_cursor#118 char_cursor#17 +Not aliassing across scopes: print_sword::w#3 print_sword::w#1 +Not aliassing across scopes: char_cursor#119 char_cursor#117 +Not aliassing across scopes: print_sbyte::b#3 print_sbyte::b#1 +Not aliassing across scopes: char_cursor#121 char_cursor#117 +Not aliassing across scopes: print_word::w#5 print_word::w#3 +Not aliassing across scopes: char_cursor#123 char_cursor#117 +Not aliassing across scopes: print_byte::b#5 print_byte::b#3 +Not aliassing across scopes: char_cursor#124 char_cursor#117 +Not aliassing across scopes: print_char::ch#4 print_char::ch#2 +Not aliassing across scopes: char_cursor#75 char_cursor#124 +Not aliassing across scopes: multiply::a#2 multiply::a#1 +Not aliassing across scopes: multiply::b#2 multiply::b#1 +Not aliassing across scopes: multiply::return#2 multiply::return#0 +Not aliassing across scopes: signed_multiply::m#0 multiply::return#2 +Not aliassing across scopes: char_cursor#27 line_cursor#1 +Not aliassing across scopes: line_cursor#27 line_cursor#1 +Not aliassing across scopes: slow_multiply::a#0 multiply_results_compare::a#6 Not aliassing across scopes: slow_multiply::b#0 multiply_results_compare::b#2 Not aliassing across scopes: slow_multiply::return#2 slow_multiply::return#0 Not aliassing across scopes: multiply_results_compare::ms#0 slow_multiply::return#2 -Not aliassing across scopes: multiply::a#0 multiply_results_compare::a#5 -Not aliassing across scopes: multiply::b#0 multiply_results_compare::b#2 -Not aliassing across scopes: multiply::return#2 multiply::return#0 -Not aliassing across scopes: multiply_results_compare::ma#0 multiply::return#2 -Not aliassing across scopes: print_word::w#2 multiply_results_compare::ms#0 -Not aliassing across scopes: print_word::w#3 multiply_results_compare::ma#0 -Not aliassing across scopes: char_cursor#27 char_cursor#11 -Not aliassing across scopes: line_cursor#19 line_cursor#17 +Not aliassing across scopes: multiply::a#1 multiply_results_compare::a#6 +Not aliassing across scopes: multiply::b#1 multiply_results_compare::b#2 +Not aliassing across scopes: multiply::return#3 multiply::return#0 +Not aliassing across scopes: multiply_results_compare::ma#0 multiply::return#3 +Not aliassing across scopes: multiply_error::a#0 multiply_results_compare::a#6 +Not aliassing across scopes: multiply_error::b#0 multiply_results_compare::b#2 +Not aliassing across scopes: multiply_error::ms#0 multiply_results_compare::ms#0 +Not aliassing across scopes: multiply_error::ma#0 multiply_results_compare::ma#0 +Not aliassing across scopes: print_byte::b#3 multiply_error::a#0 +Not aliassing across scopes: print_byte::b#4 multiply_error::b#0 +Not aliassing across scopes: print_word::w#3 multiply_error::ms#0 +Not aliassing across scopes: print_word::w#4 multiply_error::ma#0 +Not aliassing across scopes: slow_signed_multiply::a#0 signed_multiply_results_compare::a#6 +Not aliassing across scopes: slow_signed_multiply::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: slow_signed_multiply::return#2 slow_signed_multiply::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ms#0 slow_signed_multiply::return#2 +Not aliassing across scopes: signed_multiply::a#0 signed_multiply_results_compare::a#6 +Not aliassing across scopes: signed_multiply::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: signed_multiply::return#2 signed_multiply::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ma#0 signed_multiply::return#2 +Not aliassing across scopes: signed_multiply_error::a#0 signed_multiply_results_compare::a#6 +Not aliassing across scopes: signed_multiply_error::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 +Not aliassing across scopes: signed_multiply_error::ma#0 signed_multiply_results_compare::ma#0 +Not aliassing across scopes: print_sbyte::b#1 signed_multiply_error::a#0 +Not aliassing across scopes: print_sbyte::b#2 signed_multiply_error::b#0 +Not aliassing across scopes: print_sword::w#1 signed_multiply_error::ms#0 +Not aliassing across scopes: print_sword::w#2 signed_multiply_error::ma#0 OPTIMIZING CONTROL FLOW GRAPH Inlining constant with var siblings (const string) print_str::str#1 Inlining constant with var siblings (const string) print_str::str#1 @@ -2676,6 +4719,35 @@ Inlining constant with var siblings (const string) print_str::str#5 Inlining constant with var siblings (const string) print_str::str#6 Inlining constant with var siblings (const string) print_str::str#6 Inlining constant with var siblings (const string) print_str::str#6 +Inlining constant with var siblings (const string) print_str::str#7 +Inlining constant with var siblings (const string) print_str::str#7 +Inlining constant with var siblings (const string) print_str::str#7 +Inlining constant with var siblings (const string) print_str::str#8 +Inlining constant with var siblings (const string) print_str::str#8 +Inlining constant with var siblings (const string) print_str::str#8 +Inlining constant with var siblings (const string) print_str::str#9 +Inlining constant with var siblings (const string) print_str::str#9 +Inlining constant with var siblings (const string) print_str::str#9 +Inlining constant with var siblings (const string) print_str::str#10 +Inlining constant with var siblings (const string) print_str::str#10 +Inlining constant with var siblings (const string) print_str::str#10 +Inlining constant with var siblings (const string) print_str::str#11 +Inlining constant with var siblings (const string) print_str::str#11 +Inlining constant with var siblings (const string) print_str::str#11 +Inlining constant with var siblings (const string) print_str::str#12 +Inlining constant with var siblings (const string) print_str::str#12 +Inlining constant with var siblings (const string) print_str::str#12 +Inlining constant with var siblings (const string) print_str::str#13 +Inlining constant with var siblings (const string) print_str::str#13 +Inlining constant with var siblings (const string) print_str::str#13 +Inlining constant with var siblings (const byte) print_char::ch#0 +Inlining constant with var siblings (const byte) print_char::ch#0 +Inlining constant with var siblings (const byte) print_char::ch#0 +Inlining constant with different constant siblings (const byte) print_char::ch#0 +Inlining constant with var siblings (const byte) print_char::ch#1 +Inlining constant with var siblings (const byte) print_char::ch#1 +Inlining constant with var siblings (const byte) print_char::ch#1 +Inlining constant with different constant siblings (const byte) print_char::ch#1 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const word) init_multiply::sqr#0 @@ -2707,6 +4779,14 @@ Inlining constant with var siblings (const word) slow_multiply::m#0 Inlining constant with var siblings (const word) slow_multiply::m#0 Inlining constant with var siblings (const byte) slow_multiply::i#0 Inlining constant with var siblings (const byte) slow_multiply::i#0 +Inlining constant with var siblings (const signed word) slow_signed_multiply::m#0 +Inlining constant with var siblings (const signed word) slow_signed_multiply::m#0 +Inlining constant with var siblings (const signed word) slow_signed_multiply::m#0 +Inlining constant with var siblings (const signed word) slow_signed_multiply::m#0 +Inlining constant with var siblings (const signed byte) slow_signed_multiply::i#0 +Inlining constant with var siblings (const signed byte) slow_signed_multiply::i#0 +Inlining constant with var siblings (const signed byte) slow_signed_multiply::j#0 +Inlining constant with var siblings (const signed byte) slow_signed_multiply::j#0 Inlining constant with var siblings (const byte[512]) multiply_tables_compare::asm_sqr#0 Inlining constant with var siblings (const byte[512]) multiply_tables_compare::asm_sqr#0 Inlining constant with var siblings (const byte[512]) multiply_tables_compare::kc_sqr#0 @@ -2715,6 +4795,13 @@ Inlining constant with var siblings (const byte) multiply_results_compare::a#0 Inlining constant with var siblings (const byte) multiply_results_compare::a#0 Inlining constant with var siblings (const byte) multiply_results_compare::b#0 Inlining constant with var siblings (const byte) multiply_results_compare::b#0 +Inlining constant with var siblings (const signed byte) signed_multiply_results_compare::a#0 +Inlining constant with var siblings (const signed byte) signed_multiply_results_compare::a#0 +Inlining constant with var siblings (const signed byte) signed_multiply_results_compare::b#0 +Inlining constant with var siblings (const signed byte) signed_multiply_results_compare::b#0 +Inlining constant with var siblings (const byte*) char_cursor#0 +Inlining constant with var siblings (const byte*) char_cursor#0 +Inlining constant with var siblings (const byte*) char_cursor#0 Inlining constant with var siblings (const byte*) char_cursor#0 Inlining constant with var siblings (const byte*) char_cursor#0 Inlining constant with var siblings (const byte*) char_cursor#0 @@ -2725,43 +4812,70 @@ Inlining constant with var siblings (const byte*) char_cursor#0 Inlining constant with var siblings (const byte*) char_cursor#0 Constant inlined slow_multiply::m#0 = (byte/signed byte/word/signed word) 0 Constant inlined init_multiply::dir#0 = (byte/word/signed word) 255 -Constant inlined print_cls::$0 = (word/signed word) 1024+(word/signed word) 1000 Constant inlined init_multiply::$8 = (const byte[512]) mul_sqr1_lo#0+(word/signed word) 512 +Constant inlined slow_signed_multiply::m#0 = (byte/signed byte/word/signed word) 0 Constant inlined slow_multiply::i#0 = (byte/signed byte/word/signed word) 0 Constant inlined init_multiply::x_255#0 = ((byte))-(byte/signed byte/word/signed word) 1 Constant inlined init_multiply::dir#1 = (byte/signed byte/word/signed word) 1 -Constant inlined init_multiply::sqr#0 = (byte/signed byte/word/signed word) 0 Constant inlined multiply_tables_compare::asm_sqr#0 = (const byte[512]) asm_mul_sqr1_lo#0 Constant inlined init_multiply::$20 = (const byte[512]) mul_sqr1_hi#0+(word/signed word) 256 -Constant inlined multiply_tables_compare::$9 = (const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4 -Constant inlined multiply_tables_compare::$8 = (word/signed word) 512*(byte/signed byte/word/signed word) 4 +Constant inlined slow_signed_multiply::i#0 = (byte/signed byte/word/signed word) 0 Constant inlined init_multiply::sqr2_hi#0 = (const byte[512]) mul_sqr2_hi#0 Constant inlined init_multiply::sqr2_lo#0 = (const byte[512]) mul_sqr2_lo#0 Constant inlined multiply_tables_compare::kc_sqr#0 = (const byte[512]) mul_sqr1_lo#0 -Constant inlined init_multiply::$18 = (const byte[512]) mul_sqr1_lo#0+(word/signed word) 256 -Constant inlined init_multiply::$19 = (const byte[512]) mul_sqr2_hi#0+(word/signed word) 511 +Constant inlined signed_multiply_results_compare::$7 = -(byte/word/signed word) 128 Constant inlined init_multiply::c#0 = (byte/signed byte/word/signed word) 0 -Constant inlined init_multiply::$10 = -(byte/signed byte/word/signed word) 1 -Constant inlined print_cls::sc#0 = ((byte*))(word/signed word) 1024 -Constant inlined init_multiply::$17 = (const byte[512]) mul_sqr2_lo#0+(word/signed word) 511 +Constant inlined signed_multiply_results_compare::a#0 = -(byte/word/signed word) 128 +Constant inlined signed_multiply_results_compare::$9 = -(byte/word/signed word) 128 Constant inlined init_multiply::sqr1_lo#0 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 -Constant inlined init_multiply::$15 = (const byte[512]) mul_sqr2_lo#0+(word/signed word) 511 Constant inlined init_multiply::sqr1_hi#0 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 +Constant inlined print_str::str#9 = (const string) signed_multiply_results_compare::str Constant inlined multiply_results_compare::a#0 = (byte/signed byte/word/signed word) 0 -Constant inlined multiply_results_compare::b#0 = (byte/signed byte/word/signed word) 0 Constant inlined print_str::str#4 = (const string) multiply_results_compare::str Constant inlined print_str::str#3 = (const string) multiply_tables_compare::str2 Constant inlined print_str::str#2 = (const string) multiply_tables_compare::str1 -Constant inlined char_cursor#0 = ((byte*))(word/signed word) 1024 Constant inlined print_str::str#1 = (const string) multiply_tables_compare::str -Constant inlined print_str::str#6 = (const string) multiply_results_compare::str2 -Constant inlined print_str::str#5 = (const string) multiply_results_compare::str1 +Constant inlined print_str::str#8 = (const string) multiply_error::str3 +Constant inlined print_str::str#7 = (const string) multiply_error::str2 +Constant inlined print_str::str#6 = (const string) multiply_error::str1 +Constant inlined print_str::str#5 = (const string) multiply_error::str +Constant inlined print_cls::$0 = (word/signed word) 1024+(word/signed word) 1000 +Constant inlined print_str::str#13 = (const string) signed_multiply_error::str3 +Constant inlined print_str::str#12 = (const string) signed_multiply_error::str2 +Constant inlined print_str::str#11 = (const string) signed_multiply_error::str1 +Constant inlined print_str::str#10 = (const string) signed_multiply_error::str +Constant inlined init_multiply::sqr#0 = (byte/signed byte/word/signed word) 0 +Constant inlined multiply_tables_compare::$9 = (const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4 +Constant inlined slow_signed_multiply::j#0 = (byte/signed byte/word/signed word) 0 +Constant inlined multiply_tables_compare::$8 = (word/signed word) 512*(byte/signed byte/word/signed word) 4 +Constant inlined init_multiply::$18 = (const byte[512]) mul_sqr1_lo#0+(word/signed word) 256 +Constant inlined init_multiply::$19 = (const byte[512]) mul_sqr2_hi#0+(word/signed word) 511 +Constant inlined signed_multiply_results_compare::b#0 = -(byte/word/signed word) 128 +Constant inlined init_multiply::$10 = -(byte/signed byte/word/signed word) 1 +Constant inlined print_cls::sc#0 = ((byte*))(word/signed word) 1024 +Constant inlined init_multiply::$17 = (const byte[512]) mul_sqr2_lo#0+(word/signed word) 511 +Constant inlined init_multiply::$15 = (const byte[512]) mul_sqr2_lo#0+(word/signed word) 511 +Constant inlined print_char::ch#1 = (byte) '-' +Constant inlined print_char::ch#0 = (byte) '-' +Constant inlined multiply_results_compare::b#0 = (byte/signed byte/word/signed word) 0 +Constant inlined char_cursor#0 = ((byte*))(word/signed word) 1024 +Constant inlined print_byte::$4 = (const string) print_byte::hextab#0 Constant inlined init_multiply::x_2#0 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @13 @end main main::@1 main::@2 main::@3 main::@4 main::@return multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@2 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@4 multiply_results_compare::@10 multiply_results_compare::@11 multiply_results_compare::@12 multiply_results_compare::@return multiply_results_compare::@3 multiply_results_compare::@6 multiply_results_compare::@7 multiply_results_compare::@14 print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return multiply multiply::@return slow_multiply slow_multiply::@2 slow_multiply::@1 slow_multiply::@return multiply_tables_compare multiply_tables_compare::@1 multiply_tables_compare::@3 multiply_tables_compare::@6 multiply_tables_compare::@7 multiply_tables_compare::@8 multiply_tables_compare::@return multiply_tables_compare::@2 multiply_tables_compare::@5 multiply_tables_compare::@10 init_multiply_asm init_multiply_asm::@return init_multiply init_multiply::@1 init_multiply::@5 init_multiply::@2 init_multiply::@3 init_multiply::@7 init_multiply::@4 init_multiply::@8 init_multiply::@return print_cls print_cls::@1 print_cls::@return -Added new block during phi lifting multiply_results_compare::@16(between multiply_results_compare::@6 and multiply_results_compare::@1) -Added new block during phi lifting multiply_results_compare::@17(between multiply_results_compare::@3 and multiply_results_compare::@2) +Block Sequence Planned @begin @20 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return signed_multiply_results_compare signed_multiply_results_compare::@1 signed_multiply_results_compare::@2 signed_multiply_results_compare::@8 signed_multiply_results_compare::@9 signed_multiply_results_compare::@4 signed_multiply_results_compare::@return signed_multiply_results_compare::@3 signed_multiply_results_compare::@6 signed_multiply_results_compare::@7 signed_multiply_results_compare::@11 print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 signed_multiply_error signed_multiply_error::@1 signed_multiply_error::@2 signed_multiply_error::@3 signed_multiply_error::@4 signed_multiply_error::@5 signed_multiply_error::@6 signed_multiply_error::@7 signed_multiply_error::@8 signed_multiply_error::@return print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return signed_multiply signed_multiply::@6 signed_multiply::@3 signed_multiply::@1 signed_multiply::@4 signed_multiply::@2 signed_multiply::@return multiply multiply::@return slow_signed_multiply slow_signed_multiply::@2 slow_signed_multiply::@3 slow_signed_multiply::@return slow_signed_multiply::@1 slow_signed_multiply::@5 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@2 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@4 multiply_results_compare::@return multiply_results_compare::@3 multiply_results_compare::@6 multiply_results_compare::@7 multiply_results_compare::@11 multiply_error multiply_error::@1 multiply_error::@2 multiply_error::@3 multiply_error::@4 multiply_error::@5 multiply_error::@6 multiply_error::@7 multiply_error::@8 multiply_error::@return slow_multiply slow_multiply::@2 slow_multiply::@1 slow_multiply::@return multiply_tables_compare multiply_tables_compare::@1 multiply_tables_compare::@3 multiply_tables_compare::@6 multiply_tables_compare::@7 multiply_tables_compare::@8 multiply_tables_compare::@return multiply_tables_compare::@2 multiply_tables_compare::@5 multiply_tables_compare::@10 init_multiply_asm init_multiply_asm::@return init_multiply init_multiply::@1 init_multiply::@5 init_multiply::@2 init_multiply::@3 init_multiply::@7 init_multiply::@4 init_multiply::@8 init_multiply::@return print_cls print_cls::@1 print_cls::@return +Added new block during phi lifting signed_multiply_results_compare::@13(between signed_multiply_results_compare::@6 and signed_multiply_results_compare::@1) +Added new block during phi lifting signed_multiply_results_compare::@14(between signed_multiply_results_compare::@3 and signed_multiply_results_compare::@2) Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) +Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) +Added new block during phi lifting print_sbyte::@5(between print_sbyte and print_sbyte::@1) +Added new block during phi lifting signed_multiply::@7(between signed_multiply::@6 and signed_multiply::@1) +Added new block during phi lifting signed_multiply::@8(between signed_multiply::@1 and signed_multiply::@2) +Added new block during phi lifting slow_signed_multiply::@12(between slow_signed_multiply::@2 and slow_signed_multiply::@2) +Added new block during phi lifting slow_signed_multiply::@13(between slow_signed_multiply::@2 and slow_signed_multiply::@3) +Added new block during phi lifting slow_signed_multiply::@14(between slow_signed_multiply::@5 and slow_signed_multiply::@3) +Added new block during phi lifting slow_signed_multiply::@15(between slow_signed_multiply::@5 and slow_signed_multiply::@5) +Added new block during phi lifting multiply_results_compare::@13(between multiply_results_compare::@6 and multiply_results_compare::@1) +Added new block during phi lifting multiply_results_compare::@14(between multiply_results_compare::@3 and multiply_results_compare::@2) Added new block during phi lifting slow_multiply::@6(between slow_multiply::@2 and slow_multiply::@2) Added new block during phi lifting slow_multiply::@7(between slow_multiply::@2 and slow_multiply::@1) Added new block during phi lifting multiply_tables_compare::@12(between multiply_tables_compare::@2 and multiply_tables_compare::@1) @@ -2770,28 +4884,35 @@ Added new block during phi lifting init_multiply::@10(between init_multiply::@1 Added new block during phi lifting init_multiply::@11(between init_multiply::@4 and init_multiply::@3) Added new block during phi lifting init_multiply::@12(between init_multiply::@3 and init_multiply::@4) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) -Block Sequence Planned @begin @13 @end main main::@1 main::@2 main::@3 main::@4 main::@return multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@2 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@4 multiply_results_compare::@10 multiply_results_compare::@11 multiply_results_compare::@12 multiply_results_compare::@return multiply_results_compare::@3 multiply_results_compare::@6 multiply_results_compare::@7 multiply_results_compare::@14 multiply_results_compare::@16 multiply_results_compare::@17 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_str print_str::@1 print_str::@return print_str::@2 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return multiply multiply::@return slow_multiply slow_multiply::@2 slow_multiply::@7 slow_multiply::@1 slow_multiply::@return slow_multiply::@6 multiply_tables_compare multiply_tables_compare::@1 multiply_tables_compare::@3 multiply_tables_compare::@6 multiply_tables_compare::@7 multiply_tables_compare::@8 multiply_tables_compare::@return multiply_tables_compare::@2 multiply_tables_compare::@5 multiply_tables_compare::@10 multiply_tables_compare::@12 init_multiply_asm init_multiply_asm::@return init_multiply init_multiply::@1 init_multiply::@5 init_multiply::@2 init_multiply::@3 init_multiply::@7 init_multiply::@4 init_multiply::@8 init_multiply::@return init_multiply::@11 init_multiply::@12 init_multiply::@9 init_multiply::@10 print_cls print_cls::@1 print_cls::@return print_cls::@3 +Block Sequence Planned @begin @20 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return signed_multiply_results_compare signed_multiply_results_compare::@1 signed_multiply_results_compare::@2 signed_multiply_results_compare::@8 signed_multiply_results_compare::@9 signed_multiply_results_compare::@4 signed_multiply_results_compare::@return signed_multiply_results_compare::@3 signed_multiply_results_compare::@6 signed_multiply_results_compare::@7 signed_multiply_results_compare::@11 signed_multiply_results_compare::@13 signed_multiply_results_compare::@14 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_str print_str::@1 print_str::@return print_str::@2 signed_multiply_error signed_multiply_error::@1 signed_multiply_error::@2 signed_multiply_error::@3 signed_multiply_error::@4 signed_multiply_error::@5 signed_multiply_error::@6 signed_multiply_error::@7 signed_multiply_error::@8 signed_multiply_error::@return print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_sword::@5 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return print_sbyte::@5 signed_multiply signed_multiply::@6 signed_multiply::@3 signed_multiply::@1 signed_multiply::@4 signed_multiply::@2 signed_multiply::@return signed_multiply::@8 signed_multiply::@7 multiply multiply::@return slow_signed_multiply slow_signed_multiply::@2 slow_signed_multiply::@13 slow_signed_multiply::@3 slow_signed_multiply::@return slow_signed_multiply::@12 slow_signed_multiply::@1 slow_signed_multiply::@5 slow_signed_multiply::@14 slow_signed_multiply::@15 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@2 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@4 multiply_results_compare::@return multiply_results_compare::@3 multiply_results_compare::@6 multiply_results_compare::@7 multiply_results_compare::@11 multiply_results_compare::@13 multiply_results_compare::@14 multiply_error multiply_error::@1 multiply_error::@2 multiply_error::@3 multiply_error::@4 multiply_error::@5 multiply_error::@6 multiply_error::@7 multiply_error::@8 multiply_error::@return slow_multiply slow_multiply::@2 slow_multiply::@7 slow_multiply::@1 slow_multiply::@return slow_multiply::@6 multiply_tables_compare multiply_tables_compare::@1 multiply_tables_compare::@3 multiply_tables_compare::@6 multiply_tables_compare::@7 multiply_tables_compare::@8 multiply_tables_compare::@return multiply_tables_compare::@2 multiply_tables_compare::@5 multiply_tables_compare::@10 multiply_tables_compare::@12 init_multiply_asm init_multiply_asm::@return init_multiply init_multiply::@1 init_multiply::@5 init_multiply::@2 init_multiply::@3 init_multiply::@7 init_multiply::@4 init_multiply::@8 init_multiply::@return init_multiply::@11 init_multiply::@12 init_multiply::@9 init_multiply::@10 print_cls print_cls::@1 print_cls::@return print_cls::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @13 +Adding NOP phi() at start of @20 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@1 Adding NOP phi() at start of main::@2 Adding NOP phi() at start of main::@3 Adding NOP phi() at start of main::@4 +Adding NOP phi() at start of main::@5 +Adding NOP phi() at start of signed_multiply_results_compare Adding NOP phi() at start of multiply_results_compare Adding NOP phi() at start of multiply_tables_compare Adding NOP phi() at start of multiply_tables_compare::@5 -Adding NOP phi() at start of multiply_tables_compare::@10 Adding NOP phi() at start of init_multiply Adding NOP phi() at start of init_multiply::@7 Adding NOP phi() at start of print_cls CALL GRAPH Calls in [] to main:2 -Calls in [main] to print_cls:5 init_multiply:7 init_multiply_asm:9 multiply_tables_compare:11 multiply_results_compare:13 -Calls in [multiply_results_compare] to slow_multiply:20 multiply:25 print_str:31 print_word:34 print_str:36 print_word:39 print_str:49 print_ln:51 -Calls in [print_word] to print_byte:78 print_byte:82 -Calls in [print_byte] to print_char:89 print_char:94 -Calls in [multiply_tables_compare] to print_str:119 print_word:122 print_str:124 print_word:127 print_str:135 print_ln:137 +Calls in [main] to print_cls:5 init_multiply:7 init_multiply_asm:9 multiply_tables_compare:11 multiply_results_compare:13 signed_multiply_results_compare:15 +Calls in [signed_multiply_results_compare] to slow_signed_multiply:22 signed_multiply:27 signed_multiply_error:36 print_str:43 print_ln:46 +Calls in [signed_multiply_error] to print_str:68 print_sbyte:71 print_str:73 print_sbyte:76 print_str:78 print_sword:81 print_str:83 print_sword:86 print_ln:89 +Calls in [print_sword] to print_char:94 print_word:102 +Calls in [print_word] to print_byte:110 print_byte:114 +Calls in [print_byte] to print_char:121 print_char:126 +Calls in [print_sbyte] to print_char:135 print_byte:143 +Calls in [signed_multiply] to multiply:151 +Calls in [multiply_results_compare] to slow_multiply:201 multiply:208 multiply_error:217 print_str:224 print_ln:227 +Calls in [multiply_error] to print_str:231 print_byte:235 print_str:237 print_byte:241 print_str:243 print_word:247 print_str:249 print_word:253 print_ln:256 +Calls in [multiply_tables_compare] to print_str:272 print_word:276 print_str:278 print_word:282 print_str:290 print_ln:292 Propagating live ranges... Propagating live ranges... @@ -2817,63 +4938,132 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... -Created 35 initial phi equivalence classes -Coalesced [30] char_cursor#91 ← char_cursor#20 -Coalesced [33] print_word::w#6 ← print_word::w#2 -Coalesced [35] char_cursor#90 ← char_cursor#11 -Coalesced [38] print_word::w#7 ← print_word::w#3 -Coalesced [40] char_cursor#88 ← char_cursor#11 -Coalesced [41] line_cursor#55 ← line_cursor#17 -Coalesced (already) [48] char_cursor#92 ← char_cursor#20 -Coalesced [50] line_cursor#57 ← line_cursor#17 -Not coalescing [52] char_cursor#89 ← line_cursor#1 -Coalesced [53] line_cursor#56 ← line_cursor#1 -Coalesced [54] multiply_results_compare::a#8 ← multiply_results_compare::a#1 -Coalesced [55] multiply_results_compare::b#6 ← multiply_results_compare::b#1 -Coalesced [57] line_cursor#58 ← line_cursor#22 -Coalesced (already) [62] line_cursor#59 ← line_cursor#1 -Coalesced [64] print_str::str#10 ← print_str::str#9 -Coalesced [65] char_cursor#94 ← char_cursor#71 -Coalesced [72] print_str::str#11 ← print_str::str#0 -Coalesced [73] char_cursor#95 ← char_cursor#1 -Coalesced [76] print_byte::b#4 ← print_byte::b#0 -Coalesced [77] char_cursor#96 ← char_cursor#2 -Coalesced [80] print_byte::b#5 ← print_byte::b#1 -Coalesced (already) [81] char_cursor#97 ← char_cursor#11 -Coalesced [87] print_char::ch#3 ← print_char::ch#0 -Coalesced [88] char_cursor#98 ← char_cursor#64 -Coalesced [92] print_char::ch#4 ← print_char::ch#1 -Coalesced (already) [93] char_cursor#99 ← char_cursor#11 -Coalesced [110] slow_multiply::return#5 ← slow_multiply::m#1 -Coalesced [113] slow_multiply::m#5 ← slow_multiply::m#1 -Coalesced [114] slow_multiply::i#3 ← slow_multiply::i#1 -Coalesced [121] print_word::w#8 ← print_word::w#0 -Coalesced (already) [123] char_cursor#93 ← char_cursor#11 -Coalesced [126] print_word::w#9 ← print_word::w#1 -Coalesced (already) [128] char_cursor#101 ← char_cursor#11 -Not coalescing [138] char_cursor#100 ← line_cursor#1 -Coalesced (already) [139] line_cursor#60 ← line_cursor#1 -Coalesced [140] multiply_tables_compare::kc_sqr#8 ← multiply_tables_compare::kc_sqr#1 -Coalesced [141] multiply_tables_compare::asm_sqr#6 ← multiply_tables_compare::asm_sqr#1 -Coalesced [155] init_multiply::sqr#8 ← init_multiply::sqr#2 -Coalesced [156] init_multiply::x_2#7 ← init_multiply::x_2#1 -Coalesced [179] init_multiply::x_255#5 ← init_multiply::x_255#1 -Coalesced [180] init_multiply::sqr2_lo#5 ← init_multiply::sqr2_lo#1 -Coalesced [181] init_multiply::sqr2_hi#5 ← init_multiply::sqr2_hi#1 -Coalesced [182] init_multiply::dir#4 ← init_multiply::dir#3 -Coalesced (already) [183] init_multiply::dir#5 ← init_multiply::dir#2 -Coalesced [184] init_multiply::c#5 ← init_multiply::c#1 -Coalesced [185] init_multiply::sqr#6 ← init_multiply::sqr#1 -Coalesced [186] init_multiply::sqr1_lo#5 ← init_multiply::sqr1_lo#1 -Coalesced [187] init_multiply::sqr1_hi#5 ← init_multiply::sqr1_hi#1 -Coalesced [188] init_multiply::x_2#5 ← init_multiply::x_2#2 -Coalesced [189] init_multiply::sqr#7 ← init_multiply::sqr#4 -Coalesced (already) [190] init_multiply::x_2#6 ← init_multiply::x_2#3 -Coalesced [197] print_cls::sc#3 ← print_cls::sc#1 -Coalesced down to 22 phi equivalence classes -Culled Empty Block (label) multiply_results_compare::@16 -Culled Empty Block (label) multiply_results_compare::@17 +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Created 52 initial phi equivalence classes +Not coalescing [42] char_cursor#176 ← line_cursor#1 +Coalesced [44] line_cursor#100 ← line_cursor#1 +Coalesced [45] char_cursor#165 ← char_cursor#117 +Coalesced [47] signed_multiply_results_compare::a#9 ← signed_multiply_results_compare::a#1 +Coalesced [48] signed_multiply_results_compare::b#7 ← signed_multiply_results_compare::b#1 +Coalesced [50] line_cursor#101 ← line_cursor#40 +Coalesced (already) [55] line_cursor#102 ← line_cursor#1 +Coalesced [57] print_str::str#17 ← print_str::str#16 +Coalesced [58] char_cursor#177 ← char_cursor#135 +Coalesced [65] print_str::str#18 ← print_str::str#0 +Coalesced [66] char_cursor#178 ← char_cursor#1 +Not coalescing [67] char_cursor#172 ← line_cursor#1 +Coalesced [70] print_sbyte::b#7 ← print_sbyte::b#1 +Coalesced [72] char_cursor#173 ← char_cursor#17 +Coalesced [75] print_sbyte::b#8 ← print_sbyte::b#2 +Coalesced (already) [77] char_cursor#174 ← char_cursor#17 +Coalesced [80] print_sword::w#7 ← print_sword::w#1 +Coalesced (already) [82] char_cursor#175 ← char_cursor#17 +Coalesced [85] print_sword::w#8 ← print_sword::w#2 +Coalesced (already) [87] line_cursor#99 ← line_cursor#1 +Coalesced (already) [88] char_cursor#164 ← char_cursor#17 +Coalesced [93] char_cursor#194 ← char_cursor#117 +Coalesced [96] print_sword::w#10 ← print_sword::w#0 +Coalesced [97] char_cursor#180 ← char_cursor#17 +Coalesced [100] print_word::w#11 ← print_word::w#0 +Coalesced [101] char_cursor#185 ← char_cursor#119 +Coalesced [104] print_sword::w#9 ← print_sword::w#3 +Coalesced (already) [105] char_cursor#179 ← char_cursor#117 +Coalesced [108] print_byte::b#10 ← print_byte::b#1 +Coalesced [109] char_cursor#189 ← char_cursor#123 +Coalesced [112] print_byte::b#11 ← print_byte::b#2 +Coalesced (already) [113] char_cursor#190 ← char_cursor#17 +Coalesced [119] print_char::ch#5 ← print_char::ch#2 +Coalesced (already) [120] char_cursor#191 ← char_cursor#124 +Coalesced [124] print_char::ch#6 ← print_char::ch#3 +Coalesced (already) [125] char_cursor#192 ← char_cursor#17 +Coalesced (already) [134] char_cursor#193 ← char_cursor#117 +Coalesced [137] print_sbyte::b#10 ← print_sbyte::b#0 +Coalesced [138] char_cursor#196 ← char_cursor#17 +Coalesced [141] print_byte::b#9 ← print_byte::b#0 +Coalesced (already) [142] char_cursor#188 ← char_cursor#121 +Coalesced [145] print_sbyte::b#9 ← print_sbyte::b#3 +Coalesced (already) [146] char_cursor#195 ← char_cursor#117 +Coalesced [149] multiply::a#4 ← multiply::a#0 +Coalesced [150] multiply::b#4 ← multiply::b#0 +Coalesced [159] signed_multiply::m#7 ← signed_multiply::m#1 +Coalesced [166] signed_multiply::m#10 ← signed_multiply::m#2 +Coalesced [170] signed_multiply::m#9 ← signed_multiply::m#5 +Coalesced [171] signed_multiply::m#8 ← signed_multiply::m#0 +Coalesced [183] slow_signed_multiply::return#5 ← slow_signed_multiply::m#1 +Coalesced [186] slow_signed_multiply::m#10 ← slow_signed_multiply::m#1 +Coalesced [187] slow_signed_multiply::i#3 ← slow_signed_multiply::i#1 +Coalesced [193] slow_signed_multiply::return#6 ← slow_signed_multiply::m#2 +Coalesced [194] slow_signed_multiply::m#11 ← slow_signed_multiply::m#2 +Coalesced [195] slow_signed_multiply::j#3 ← slow_signed_multiply::j#1 +Coalesced [206] multiply::a#3 ← multiply::a#1 +Coalesced [207] multiply::b#3 ← multiply::b#1 +Coalesced [223] char_cursor#170 ← char_cursor#27 +Coalesced [225] line_cursor#98 ← line_cursor#27 +Coalesced (already) [226] char_cursor#162 ← char_cursor#117 +Coalesced [228] multiply_results_compare::a#9 ← multiply_results_compare::a#1 +Coalesced [229] multiply_results_compare::b#7 ← multiply_results_compare::b#1 +Coalesced (already) [230] char_cursor#166 ← char_cursor#27 +Coalesced [233] print_byte::b#7 ← print_byte::b#3 +Coalesced (already) [234] char_cursor#186 ← char_cursor#117 +Coalesced (already) [236] char_cursor#167 ← char_cursor#17 +Coalesced [239] print_byte::b#8 ← print_byte::b#4 +Coalesced (already) [240] char_cursor#187 ← char_cursor#117 +Coalesced (already) [242] char_cursor#168 ← char_cursor#17 +Coalesced [245] print_word::w#7 ← print_word::w#3 +Coalesced (already) [246] char_cursor#181 ← char_cursor#117 +Coalesced (already) [248] char_cursor#169 ← char_cursor#17 +Coalesced [251] print_word::w#8 ← print_word::w#4 +Coalesced (already) [252] char_cursor#182 ← char_cursor#117 +Coalesced (already) [254] line_cursor#97 ← line_cursor#27 +Coalesced (already) [255] char_cursor#161 ← char_cursor#17 +Coalesced [263] slow_multiply::return#5 ← slow_multiply::m#1 +Coalesced [266] slow_multiply::m#5 ← slow_multiply::m#1 +Coalesced [267] slow_multiply::i#3 ← slow_multiply::i#1 +Coalesced [274] print_word::w#9 ← print_word::w#1 +Coalesced (already) [275] char_cursor#183 ← char_cursor#117 +Coalesced (already) [277] char_cursor#171 ← char_cursor#17 +Coalesced [280] print_word::w#10 ← print_word::w#2 +Coalesced (already) [281] char_cursor#184 ← char_cursor#117 +Coalesced (already) [283] char_cursor#198 ← char_cursor#17 +Coalesced (already) [291] char_cursor#163 ← char_cursor#117 +Not coalescing [293] char_cursor#197 ← line_cursor#1 +Coalesced (already) [294] line_cursor#103 ← line_cursor#1 +Coalesced [295] multiply_tables_compare::kc_sqr#8 ← multiply_tables_compare::kc_sqr#1 +Coalesced [296] multiply_tables_compare::asm_sqr#6 ← multiply_tables_compare::asm_sqr#1 +Coalesced [310] init_multiply::sqr#8 ← init_multiply::sqr#2 +Coalesced [311] init_multiply::x_2#7 ← init_multiply::x_2#1 +Coalesced [334] init_multiply::x_255#5 ← init_multiply::x_255#1 +Coalesced [335] init_multiply::sqr2_lo#5 ← init_multiply::sqr2_lo#1 +Coalesced [336] init_multiply::sqr2_hi#5 ← init_multiply::sqr2_hi#1 +Coalesced [337] init_multiply::dir#4 ← init_multiply::dir#3 +Coalesced (already) [338] init_multiply::dir#5 ← init_multiply::dir#2 +Coalesced [339] init_multiply::c#5 ← init_multiply::c#1 +Coalesced [340] init_multiply::sqr#6 ← init_multiply::sqr#1 +Coalesced [341] init_multiply::sqr1_lo#5 ← init_multiply::sqr1_lo#1 +Coalesced [342] init_multiply::sqr1_hi#5 ← init_multiply::sqr1_hi#1 +Coalesced [343] init_multiply::x_2#5 ← init_multiply::x_2#2 +Coalesced [344] init_multiply::sqr#7 ← init_multiply::sqr#4 +Coalesced (already) [345] init_multiply::x_2#6 ← init_multiply::x_2#3 +Coalesced [352] print_cls::sc#3 ← print_cls::sc#1 +Coalesced down to 32 phi equivalence classes +Culled Empty Block (label) signed_multiply_results_compare::@13 +Culled Empty Block (label) signed_multiply_results_compare::@14 Culled Empty Block (label) print_ln::@3 +Culled Empty Block (label) print_sword::@5 +Culled Empty Block (label) print_sbyte::@5 +Culled Empty Block (label) signed_multiply::@8 +Culled Empty Block (label) signed_multiply::@7 +Culled Empty Block (label) slow_signed_multiply::@13 +Culled Empty Block (label) slow_signed_multiply::@12 +Culled Empty Block (label) slow_signed_multiply::@14 +Culled Empty Block (label) slow_signed_multiply::@15 +Culled Empty Block (label) multiply_results_compare::@13 +Culled Empty Block (label) multiply_results_compare::@14 Culled Empty Block (label) slow_multiply::@7 Culled Empty Block (label) slow_multiply::@6 Culled Empty Block (label) multiply_tables_compare::@12 @@ -2883,18 +5073,31 @@ Not culling empty block because it shares successor with its predecessor. (label Culled Empty Block (label) init_multiply::@9 Culled Empty Block (label) init_multiply::@10 Culled Empty Block (label) print_cls::@3 -Block Sequence Planned @begin @13 @end main main::@1 main::@2 main::@3 main::@4 main::@return multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@2 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@4 multiply_results_compare::@10 multiply_results_compare::@11 multiply_results_compare::@12 multiply_results_compare::@return multiply_results_compare::@3 multiply_results_compare::@6 multiply_results_compare::@7 multiply_results_compare::@14 print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return multiply multiply::@return slow_multiply slow_multiply::@2 slow_multiply::@1 slow_multiply::@return multiply_tables_compare multiply_tables_compare::@1 multiply_tables_compare::@3 multiply_tables_compare::@6 multiply_tables_compare::@7 multiply_tables_compare::@8 multiply_tables_compare::@return multiply_tables_compare::@2 multiply_tables_compare::@5 multiply_tables_compare::@10 init_multiply_asm init_multiply_asm::@return init_multiply init_multiply::@1 init_multiply::@5 init_multiply::@2 init_multiply::@3 init_multiply::@4 init_multiply::@8 init_multiply::@return init_multiply::@12 print_cls print_cls::@1 print_cls::@return +Block Sequence Planned @begin @20 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return signed_multiply_results_compare signed_multiply_results_compare::@1 signed_multiply_results_compare::@2 signed_multiply_results_compare::@8 signed_multiply_results_compare::@9 signed_multiply_results_compare::@4 signed_multiply_results_compare::@return signed_multiply_results_compare::@3 signed_multiply_results_compare::@6 signed_multiply_results_compare::@7 signed_multiply_results_compare::@11 print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 signed_multiply_error signed_multiply_error::@1 signed_multiply_error::@2 signed_multiply_error::@3 signed_multiply_error::@4 signed_multiply_error::@5 signed_multiply_error::@6 signed_multiply_error::@7 signed_multiply_error::@8 signed_multiply_error::@return print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return signed_multiply signed_multiply::@6 signed_multiply::@3 signed_multiply::@1 signed_multiply::@4 signed_multiply::@2 signed_multiply::@return multiply multiply::@return slow_signed_multiply slow_signed_multiply::@2 slow_signed_multiply::@3 slow_signed_multiply::@return slow_signed_multiply::@1 slow_signed_multiply::@5 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@2 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@4 multiply_results_compare::@return multiply_results_compare::@3 multiply_results_compare::@6 multiply_results_compare::@7 multiply_results_compare::@11 multiply_error multiply_error::@1 multiply_error::@2 multiply_error::@3 multiply_error::@4 multiply_error::@5 multiply_error::@6 multiply_error::@7 multiply_error::@8 multiply_error::@return slow_multiply slow_multiply::@2 slow_multiply::@1 slow_multiply::@return multiply_tables_compare multiply_tables_compare::@1 multiply_tables_compare::@3 multiply_tables_compare::@6 multiply_tables_compare::@7 multiply_tables_compare::@8 multiply_tables_compare::@return multiply_tables_compare::@2 multiply_tables_compare::@5 multiply_tables_compare::@10 init_multiply_asm init_multiply_asm::@return init_multiply init_multiply::@1 init_multiply::@5 init_multiply::@2 init_multiply::@3 init_multiply::@4 init_multiply::@8 init_multiply::@return init_multiply::@12 print_cls print_cls::@1 print_cls::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @13 +Adding NOP phi() at start of @20 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@1 Adding NOP phi() at start of main::@2 Adding NOP phi() at start of main::@3 Adding NOP phi() at start of main::@4 +Adding NOP phi() at start of main::@5 +Adding NOP phi() at start of signed_multiply_results_compare +Adding NOP phi() at start of signed_multiply_results_compare::@11 +Adding NOP phi() at start of signed_multiply_error::@2 +Adding NOP phi() at start of signed_multiply_error::@4 +Adding NOP phi() at start of signed_multiply_error::@6 +Adding NOP phi() at start of signed_multiply_error::@8 +Adding NOP phi() at start of print_sword::@2 +Adding NOP phi() at start of print_sbyte::@2 Adding NOP phi() at start of multiply_results_compare -Adding NOP phi() at start of multiply_results_compare::@11 Adding NOP phi() at start of multiply_results_compare::@7 -Adding NOP phi() at start of multiply_results_compare::@14 +Adding NOP phi() at start of multiply_results_compare::@11 +Adding NOP phi() at start of multiply_error +Adding NOP phi() at start of multiply_error::@2 +Adding NOP phi() at start of multiply_error::@4 +Adding NOP phi() at start of multiply_error::@6 +Adding NOP phi() at start of multiply_error::@8 Adding NOP phi() at start of multiply_tables_compare Adding NOP phi() at start of multiply_tables_compare::@7 Adding NOP phi() at start of multiply_tables_compare::@5 @@ -2926,19 +5129,18 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... -Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@13 -@13: scope:[] from @begin + to:@20 +@20: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @13 +@end: scope:[] from @20 [3] phi() [ ] ( ) -main: scope:[main] from @13 +main: scope:[main] from @20 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2 [ ] ) [5] call print_cls param-assignment [ ] ( main:2 [ ] ) to:main::@1 @@ -2952,380 +5154,669 @@ main::@2: scope:[main] from main::@1 to:main::@3 main::@3: scope:[main] from main::@2 [10] phi() [ ] ( main:2 [ ] ) - [11] call multiply_tables_compare param-assignment [ line_cursor#17 char_cursor#20 ] ( main:2 [ line_cursor#17 char_cursor#20 ] ) + [11] call multiply_tables_compare param-assignment [ line_cursor#27 char_cursor#27 ] ( main:2 [ line_cursor#27 char_cursor#27 ] ) to:main::@4 main::@4: scope:[main] from main::@3 - [12] phi() [ line_cursor#17 char_cursor#20 ] ( main:2 [ line_cursor#17 char_cursor#20 ] ) - [13] call multiply_results_compare param-assignment [ ] ( main:2 [ ] ) + [12] phi() [ line_cursor#27 char_cursor#27 ] ( main:2 [ line_cursor#27 char_cursor#27 ] ) + [13] call multiply_results_compare param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + to:main::@5 +main::@5: scope:[main] from main::@4 + [14] phi() [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + [15] call signed_multiply_results_compare param-assignment [ ] ( main:2 [ ] ) to:main::@return -main::@return: scope:[main] from main::@4 - [14] return [ ] ( main:2 [ ] ) +main::@return: scope:[main] from main::@5 + [16] return [ ] ( main:2 [ ] ) to:@return -multiply_results_compare: scope:[multiply_results_compare] from main::@4 - [15] phi() [ line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ line_cursor#17 char_cursor#20 ] ) - to:multiply_results_compare::@1 -multiply_results_compare::@1: scope:[multiply_results_compare] from multiply_results_compare multiply_results_compare::@6 - [16] (byte) multiply_results_compare::a#5 ← phi( multiply_results_compare/(byte/signed byte/word/signed word) 0 multiply_results_compare::@6/(byte) multiply_results_compare::a#1 ) [ multiply_results_compare::a#5 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 line_cursor#17 char_cursor#20 ] ) - to:multiply_results_compare::@2 -multiply_results_compare::@2: scope:[multiply_results_compare] from multiply_results_compare::@1 multiply_results_compare::@3 - [17] (byte) multiply_results_compare::b#2 ← phi( multiply_results_compare::@1/(byte/signed byte/word/signed word) 0 multiply_results_compare::@3/(byte) multiply_results_compare::b#1 ) [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 ] ) - [18] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#5 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ) - [19] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ) - [20] call slow_multiply param-assignment [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ) - [21] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ) - to:multiply_results_compare::@8 -multiply_results_compare::@8: scope:[multiply_results_compare] from multiply_results_compare::@2 - [22] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) - [23] (byte) multiply::a#0 ← (byte) multiply_results_compare::a#5 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 line_cursor#17 char_cursor#20 ] ) - [24] (byte) multiply::b#0 ← (byte) multiply_results_compare::b#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 multiply::b#0 line_cursor#17 char_cursor#20 ] ) - [25] call multiply param-assignment [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 line_cursor#17 char_cursor#20 ] ) - [26] (word) multiply::return#2 ← (word) multiply::return#0 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#2 line_cursor#17 char_cursor#20 ] ) - to:multiply_results_compare::@9 -multiply_results_compare::@9: scope:[multiply_results_compare] from multiply_results_compare::@8 - [27] (word) multiply_results_compare::ma#0 ← (word) multiply::return#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) - [28] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) - to:multiply_results_compare::@4 -multiply_results_compare::@4: scope:[multiply_results_compare] from multiply_results_compare::@9 - [29] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) - [30] call print_str param-assignment [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) - to:multiply_results_compare::@10 -multiply_results_compare::@10: scope:[multiply_results_compare] from multiply_results_compare::@4 - [31] (word) print_word::w#2 ← (word) multiply_results_compare::ms#0 [ multiply_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ) - [32] call print_word param-assignment [ multiply_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ) - to:multiply_results_compare::@11 -multiply_results_compare::@11: scope:[multiply_results_compare] from multiply_results_compare::@10 - [33] phi() [ multiply_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ) - [34] call print_str param-assignment [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) - to:multiply_results_compare::@12 -multiply_results_compare::@12: scope:[multiply_results_compare] from multiply_results_compare::@11 - [35] (word) print_word::w#3 ← (word) multiply_results_compare::ma#0 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ) - [36] call print_word param-assignment [ char_cursor#11 line_cursor#17 ] ( main:2::multiply_results_compare:13 [ char_cursor#11 line_cursor#17 ] ) - to:multiply_results_compare::@return -multiply_results_compare::@return: scope:[multiply_results_compare] from multiply_results_compare::@12 multiply_results_compare::@14 - [37] (byte*) line_cursor#19 ← phi( multiply_results_compare::@12/(byte*) line_cursor#17 multiply_results_compare::@14/(byte*) line_cursor#1 ) [ ] ( main:2::multiply_results_compare:13 [ ] ) - [37] (byte*) char_cursor#27 ← phi( multiply_results_compare::@12/(byte*) char_cursor#11 multiply_results_compare::@14/(byte*~) char_cursor#89 ) [ ] ( main:2::multiply_results_compare:13 [ ] ) - [38] return [ ] ( main:2::multiply_results_compare:13 [ ] ) +signed_multiply_results_compare: scope:[signed_multiply_results_compare] from main::@5 + [17] phi() [ line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ line_cursor#1 ] ) + to:signed_multiply_results_compare::@1 +signed_multiply_results_compare::@1: scope:[signed_multiply_results_compare] from signed_multiply_results_compare signed_multiply_results_compare::@6 + [18] (signed byte) signed_multiply_results_compare::a#6 ← phi( signed_multiply_results_compare/-(byte/word/signed word) 128 signed_multiply_results_compare::@6/(signed byte) signed_multiply_results_compare::a#1 ) [ signed_multiply_results_compare::a#6 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 line_cursor#1 ] ) + to:signed_multiply_results_compare::@2 +signed_multiply_results_compare::@2: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@1 signed_multiply_results_compare::@3 + [19] (signed byte) signed_multiply_results_compare::b#2 ← phi( signed_multiply_results_compare::@1/-(byte/word/signed word) 128 signed_multiply_results_compare::@3/(signed byte) signed_multiply_results_compare::b#1 ) [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 ] ) + [20] (signed byte) slow_signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 line_cursor#1 ] ) + [21] (signed byte) slow_signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 slow_signed_multiply::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 slow_signed_multiply::b#0 line_cursor#1 ] ) + [22] call slow_signed_multiply param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#0 line_cursor#1 ] ) + [23] (signed word) slow_signed_multiply::return#2 ← (signed word) slow_signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ) + to:signed_multiply_results_compare::@8 +signed_multiply_results_compare::@8: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@2 + [24] (signed word) signed_multiply_results_compare::ms#0 ← (signed word) slow_signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] ) + [25] (signed byte) signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 line_cursor#1 ] ) + [26] (signed byte) signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 signed_multiply::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 signed_multiply::b#0 line_cursor#1 ] ) + [27] call signed_multiply param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#0 line_cursor#1 ] ) + [28] (signed word) signed_multiply::return#2 ← (signed word) signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#2 line_cursor#1 ] ) + to:signed_multiply_results_compare::@9 +signed_multiply_results_compare::@9: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@8 + [29] (signed word) signed_multiply_results_compare::ma#0 ← (signed word) signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) + [30] if((signed word) signed_multiply_results_compare::ms#0==(signed word) signed_multiply_results_compare::ma#0) goto signed_multiply_results_compare::@3 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) + to:signed_multiply_results_compare::@4 +signed_multiply_results_compare::@4: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@9 + [31] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) + [32] (signed byte) signed_multiply_error::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ) + [33] (signed byte) signed_multiply_error::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ) + [34] (signed word) signed_multiply_error::ms#0 ← (signed word) signed_multiply_results_compare::ms#0 [ signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 line_cursor#1 ] ) + [35] (signed word) signed_multiply_error::ma#0 ← (signed word) signed_multiply_results_compare::ma#0 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 ] ) + [36] call signed_multiply_error param-assignment [ ] ( main:2::signed_multiply_results_compare:15 [ ] ) + to:signed_multiply_results_compare::@return +signed_multiply_results_compare::@return: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@11 signed_multiply_results_compare::@4 + [37] return [ ] ( main:2::signed_multiply_results_compare:15 [ ] ) to:@return -multiply_results_compare::@3: scope:[multiply_results_compare] from multiply_results_compare::@9 - [39] (byte) multiply_results_compare::b#1 ← ++ (byte) multiply_results_compare::b#2 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) - [40] if((byte) multiply_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@2 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) - to:multiply_results_compare::@6 -multiply_results_compare::@6: scope:[multiply_results_compare] from multiply_results_compare::@3 - [41] (byte) multiply_results_compare::a#1 ← ++ (byte) multiply_results_compare::a#5 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) - [42] if((byte) multiply_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@1 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) - to:multiply_results_compare::@7 -multiply_results_compare::@7: scope:[multiply_results_compare] from multiply_results_compare::@6 - [43] phi() [ line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ line_cursor#17 char_cursor#20 ] ) - [44] call print_str param-assignment [ line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#17 char_cursor#2 ] ) - to:multiply_results_compare::@14 -multiply_results_compare::@14: scope:[multiply_results_compare] from multiply_results_compare::@7 - [45] phi() [ line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#17 char_cursor#2 ] ) - [46] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) - [47] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ char_cursor#89 line_cursor#1 ] ( main:2::multiply_results_compare:13 [ char_cursor#89 line_cursor#1 ] ) - to:multiply_results_compare::@return -print_ln: scope:[print_ln] from multiply_results_compare::@14 multiply_tables_compare::@10 - [48] (byte*) line_cursor#22 ← phi( multiply_results_compare::@14/(byte*) line_cursor#17 multiply_tables_compare::@10/((byte*))(word/signed word) 1024 ) [ line_cursor#22 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#22 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#22 char_cursor#2 ] ) +signed_multiply_results_compare::@3: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@9 + [38] (signed byte) signed_multiply_results_compare::b#1 ← ++ (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ) + [39] if((signed byte) signed_multiply_results_compare::b#1!=-(byte/word/signed word) 128) goto signed_multiply_results_compare::@2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ) + to:signed_multiply_results_compare::@6 +signed_multiply_results_compare::@6: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@3 + [40] (signed byte) signed_multiply_results_compare::a#1 ← ++ (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ) + [41] if((signed byte) signed_multiply_results_compare::a#1!=-(byte/word/signed word) 128) goto signed_multiply_results_compare::@1 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ) + to:signed_multiply_results_compare::@7 +signed_multiply_results_compare::@7: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@6 + [42] (byte*~) char_cursor#176 ← (byte*) line_cursor#1 [ char_cursor#176 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ char_cursor#176 line_cursor#1 ] ) + [43] call print_str param-assignment [ line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15 [ line_cursor#1 char_cursor#117 ] ) + to:signed_multiply_results_compare::@11 +signed_multiply_results_compare::@11: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@7 + [44] phi() [ line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15 [ line_cursor#1 char_cursor#117 ] ) + [45] call print_ln param-assignment [ ] ( main:2::signed_multiply_results_compare:15 [ ] ) + to:signed_multiply_results_compare::@return +print_ln: scope:[print_ln] from multiply_error::@8 multiply_results_compare::@11 multiply_tables_compare::@10 signed_multiply_error::@8 signed_multiply_results_compare::@11 + [46] (byte*) char_cursor#118 ← phi( multiply_error::@8/(byte*) char_cursor#17 multiply_results_compare::@11/(byte*) char_cursor#117 multiply_tables_compare::@10/(byte*) char_cursor#117 signed_multiply_error::@8/(byte*) char_cursor#17 signed_multiply_results_compare::@11/(byte*) char_cursor#117 ) [ line_cursor#40 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#40 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#40 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#40 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#40 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#40 char_cursor#118 ] ) + [46] (byte*) line_cursor#40 ← phi( multiply_error::@8/(byte*) line_cursor#27 multiply_results_compare::@11/(byte*) line_cursor#27 multiply_tables_compare::@10/((byte*))(word/signed word) 1024 signed_multiply_error::@8/(byte*) line_cursor#1 signed_multiply_results_compare::@11/(byte*) line_cursor#1 ) [ line_cursor#40 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#40 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#40 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#40 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#40 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#40 char_cursor#118 ] ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - [49] (byte*) line_cursor#11 ← phi( print_ln/(byte*) line_cursor#22 print_ln::@1/(byte*) line_cursor#1 ) [ line_cursor#11 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#11 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#11 char_cursor#2 ] ) - [50] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) - [51] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) + [47] (byte*) line_cursor#20 ← phi( print_ln/(byte*) line_cursor#40 print_ln::@1/(byte*) line_cursor#1 ) [ char_cursor#118 line_cursor#20 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ char_cursor#118 line_cursor#20 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ char_cursor#118 line_cursor#20 ] main:2::multiply_results_compare:13::print_ln:178 [ char_cursor#118 line_cursor#20 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ char_cursor#118 line_cursor#20 ] main:2::multiply_tables_compare:11::print_ln:224 [ char_cursor#118 line_cursor#20 ] ) + [48] (byte*) line_cursor#1 ← (byte*) line_cursor#20 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 char_cursor#118 ] ) + [49] if((byte*) line_cursor#1<(byte*) char_cursor#118) goto print_ln::@1 [ line_cursor#1 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 char_cursor#118 ] ) to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 - [52] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 ] ) + [50] return [ line_cursor#1 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 ] ) to:@return -print_str: scope:[print_str] from multiply_results_compare::@11 multiply_results_compare::@4 multiply_results_compare::@7 multiply_tables_compare::@3 multiply_tables_compare::@5 multiply_tables_compare::@7 - [53] (byte*) char_cursor#71 ← phi( multiply_results_compare::@11/(byte*) char_cursor#11 multiply_results_compare::@4/(byte*) char_cursor#20 multiply_results_compare::@7/(byte*) char_cursor#20 multiply_tables_compare::@3/((byte*))(word/signed word) 1024 multiply_tables_compare::@5/((byte*))(word/signed word) 1024 multiply_tables_compare::@7/(byte*) char_cursor#11 ) [ print_str::str#9 char_cursor#71 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#9 char_cursor#71 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 print_str::str#9 char_cursor#71 ] main:2::multiply_tables_compare:11::print_str:107 [ print_str::str#9 char_cursor#71 ] ) - [53] (byte*) print_str::str#9 ← phi( multiply_results_compare::@11/(const string) multiply_results_compare::str1 multiply_results_compare::@4/(const string) multiply_results_compare::str multiply_results_compare::@7/(const string) multiply_results_compare::str2 multiply_tables_compare::@3/(const string) multiply_tables_compare::str multiply_tables_compare::@5/(const string) multiply_tables_compare::str2 multiply_tables_compare::@7/(const string) multiply_tables_compare::str1 ) [ print_str::str#9 char_cursor#71 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#9 char_cursor#71 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 print_str::str#9 char_cursor#71 ] main:2::multiply_tables_compare:11::print_str:107 [ print_str::str#9 char_cursor#71 ] ) +print_str: scope:[print_str] from multiply_error multiply_error::@2 multiply_error::@4 multiply_error::@6 multiply_results_compare::@7 multiply_tables_compare::@3 multiply_tables_compare::@5 multiply_tables_compare::@7 signed_multiply_error signed_multiply_error::@2 signed_multiply_error::@4 signed_multiply_error::@6 signed_multiply_results_compare::@7 + [51] (byte*) char_cursor#135 ← phi( multiply_error/(byte*) char_cursor#27 multiply_error::@2/(byte*) char_cursor#17 multiply_error::@4/(byte*) char_cursor#17 multiply_error::@6/(byte*) char_cursor#17 multiply_results_compare::@7/(byte*) char_cursor#27 multiply_tables_compare::@3/((byte*))(word/signed word) 1024 multiply_tables_compare::@5/((byte*))(word/signed word) 1024 multiply_tables_compare::@7/(byte*) char_cursor#17 signed_multiply_error/(byte*~) char_cursor#172 signed_multiply_error::@2/(byte*) char_cursor#17 signed_multiply_error::@4/(byte*) char_cursor#17 signed_multiply_error::@6/(byte*) char_cursor#17 signed_multiply_results_compare::@7/(byte*~) char_cursor#176 ) [ print_str::str#16 char_cursor#135 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 print_str::str#16 char_cursor#135 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#16 char_cursor#135 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 print_str::str#16 char_cursor#135 ] main:2::multiply_tables_compare:11::print_str:222 [ print_str::str#16 char_cursor#135 ] ) + [51] (byte*) print_str::str#16 ← phi( multiply_error/(const string) multiply_error::str multiply_error::@2/(const string) multiply_error::str1 multiply_error::@4/(const string) multiply_error::str2 multiply_error::@6/(const string) multiply_error::str3 multiply_results_compare::@7/(const string) multiply_results_compare::str multiply_tables_compare::@3/(const string) multiply_tables_compare::str multiply_tables_compare::@5/(const string) multiply_tables_compare::str2 multiply_tables_compare::@7/(const string) multiply_tables_compare::str1 signed_multiply_error/(const string) signed_multiply_error::str signed_multiply_error::@2/(const string) signed_multiply_error::str1 signed_multiply_error::@4/(const string) signed_multiply_error::str2 signed_multiply_error::@6/(const string) signed_multiply_error::str3 signed_multiply_results_compare::@7/(const string) signed_multiply_results_compare::str ) [ print_str::str#16 char_cursor#135 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_str::str#16 char_cursor#135 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 print_str::str#16 char_cursor#135 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#16 char_cursor#135 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 print_str::str#16 char_cursor#135 ] main:2::multiply_tables_compare:11::print_str:222 [ print_str::str#16 char_cursor#135 ] ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [54] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#71 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) - [54] (byte*) print_str::str#7 ← phi( print_str/(byte*) print_str::str#9 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) - [55] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) + [52] (byte*) char_cursor#117 ← phi( print_str/(byte*) char_cursor#135 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) + [52] (byte*) print_str::str#14 ← phi( print_str/(byte*) print_str::str#16 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) + [53] if(*((byte*) print_str::str#14)!=(byte) '@') goto print_str::@2 [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [56] return [ char_cursor#2 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 ] ) + [54] return [ char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 ] ) to:@return print_str::@2: scope:[print_str] from print_str::@1 - [57] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) - [58] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#7 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 print_str::str#7 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:107 [ print_str::str#7 char_cursor#1 ] ) - [59] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:107 [ print_str::str#0 char_cursor#1 ] ) + [55] *((byte*) char_cursor#117) ← *((byte*) print_str::str#14) [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) + [56] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#117 [ print_str::str#14 char_cursor#1 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#14 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 print_str::str#14 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:222 [ print_str::str#14 char_cursor#1 ] ) + [57] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#14 [ print_str::str#0 char_cursor#1 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:222 [ print_str::str#0 char_cursor#1 ] ) to:print_str::@1 -print_word: scope:[print_word] from multiply_results_compare::@10 multiply_results_compare::@12 multiply_tables_compare::@6 multiply_tables_compare::@8 - [60] (word) print_word::w#4 ← phi( multiply_results_compare::@10/(word) print_word::w#2 multiply_results_compare::@12/(word) print_word::w#3 multiply_tables_compare::@6/(word) print_word::w#0 multiply_tables_compare::@8/(word) print_word::w#1 ) [ char_cursor#2 print_word::w#4 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 ] ) - [61] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ) - [62] call print_byte param-assignment [ char_cursor#11 print_word::w#4 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_word::w#4 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 print_word::w#4 ] ) +signed_multiply_error: scope:[signed_multiply_error] from signed_multiply_results_compare::@4 + [58] (byte*~) char_cursor#172 ← (byte*) line_cursor#1 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#172 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#172 ] ) + [59] call print_str param-assignment [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + to:signed_multiply_error::@1 +signed_multiply_error::@1: scope:[signed_multiply_error] from signed_multiply_error + [60] (signed byte) print_sbyte::b#1 ← (signed byte) signed_multiply_error::a#0 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#1 ] ) + [61] call print_sbyte param-assignment [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + to:signed_multiply_error::@2 +signed_multiply_error::@2: scope:[signed_multiply_error] from signed_multiply_error::@1 + [62] phi() [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + [63] call print_str param-assignment [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + to:signed_multiply_error::@3 +signed_multiply_error::@3: scope:[signed_multiply_error] from signed_multiply_error::@2 + [64] (signed byte) print_sbyte::b#2 ← (signed byte) signed_multiply_error::b#0 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#2 ] ) + [65] call print_sbyte param-assignment [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + to:signed_multiply_error::@4 +signed_multiply_error::@4: scope:[signed_multiply_error] from signed_multiply_error::@3 + [66] phi() [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + [67] call print_str param-assignment [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + to:signed_multiply_error::@5 +signed_multiply_error::@5: scope:[signed_multiply_error] from signed_multiply_error::@4 + [68] (signed word) print_sword::w#1 ← (signed word) signed_multiply_error::ms#0 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#1 ] ) + [69] call print_sword param-assignment [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + to:signed_multiply_error::@6 +signed_multiply_error::@6: scope:[signed_multiply_error] from signed_multiply_error::@5 + [70] phi() [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + [71] call print_str param-assignment [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + to:signed_multiply_error::@7 +signed_multiply_error::@7: scope:[signed_multiply_error] from signed_multiply_error::@6 + [72] (signed word) print_sword::w#2 ← (signed word) signed_multiply_error::ma#0 [ line_cursor#1 char_cursor#117 print_sword::w#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ line_cursor#1 char_cursor#117 print_sword::w#2 ] ) + [73] call print_sword param-assignment [ line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ line_cursor#1 char_cursor#17 ] ) + to:signed_multiply_error::@8 +signed_multiply_error::@8: scope:[signed_multiply_error] from signed_multiply_error::@7 + [74] phi() [ line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ line_cursor#1 char_cursor#17 ] ) + [75] call print_ln param-assignment [ ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ ] ) + to:signed_multiply_error::@return +signed_multiply_error::@return: scope:[signed_multiply_error] from signed_multiply_error::@8 + [76] return [ ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ ] ) + to:@return +print_sword: scope:[print_sword] from signed_multiply_error::@5 signed_multiply_error::@7 + [77] (signed word) print_sword::w#3 ← phi( signed_multiply_error::@5/(signed word) print_sword::w#1 signed_multiply_error::@7/(signed word) print_sword::w#2 ) [ char_cursor#117 print_sword::w#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#117 print_sword::w#3 ] ) + [78] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word) 0) goto print_sword::@1 [ char_cursor#117 print_sword::w#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#117 print_sword::w#3 ] ) + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword + [79] phi() [ char_cursor#117 print_sword::w#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#117 print_sword::w#3 ] ) + [80] call print_char param-assignment [ char_cursor#17 print_sword::w#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sword::w#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 print_sword::w#3 ] ) + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@2 + [81] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ char_cursor#17 print_sword::w#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sword::w#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 print_sword::w#0 ] ) + to:print_sword::@1 +print_sword::@1: scope:[print_sword] from print_sword print_sword::@4 + [82] (byte*) char_cursor#119 ← phi( print_sword/(byte*) char_cursor#117 print_sword::@4/(byte*) char_cursor#17 ) [ print_sword::w#4 char_cursor#119 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#4 char_cursor#119 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 print_sword::w#4 char_cursor#119 ] ) + [82] (signed word) print_sword::w#4 ← phi( print_sword/(signed word) print_sword::w#3 print_sword::@4/(signed word) print_sword::w#0 ) [ print_sword::w#4 char_cursor#119 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#4 char_cursor#119 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 print_sword::w#4 char_cursor#119 ] ) + [83] (word) print_word::w#0 ← ((word)) (signed word) print_sword::w#4 [ char_cursor#119 print_word::w#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#119 print_word::w#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#119 print_word::w#0 ] ) + [84] call print_word param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 ] ) + to:print_sword::@return +print_sword::@return: scope:[print_sword] from print_sword::@1 + [85] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 ] ) + to:@return +print_word: scope:[print_word] from multiply_error::@5 multiply_error::@7 multiply_tables_compare::@6 multiply_tables_compare::@8 print_sword::@1 + [86] (byte*) char_cursor#123 ← phi( multiply_error::@5/(byte*) char_cursor#117 multiply_error::@7/(byte*) char_cursor#117 multiply_tables_compare::@6/(byte*) char_cursor#117 multiply_tables_compare::@8/(byte*) char_cursor#117 print_sword::@1/(byte*) char_cursor#119 ) [ print_word::w#5 char_cursor#123 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:215 [ print_word::w#5 char_cursor#123 ] ) + [86] (word) print_word::w#5 ← phi( multiply_error::@5/(word) print_word::w#3 multiply_error::@7/(word) print_word::w#4 multiply_tables_compare::@6/(word) print_word::w#1 multiply_tables_compare::@8/(word) print_word::w#2 print_sword::@1/(word) print_word::w#0 ) [ print_word::w#5 char_cursor#123 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:215 [ print_word::w#5 char_cursor#123 ] ) + [87] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:215 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] ) + [88] call print_byte param-assignment [ char_cursor#17 print_word::w#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_word::w#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 print_word::w#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_word::w#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 print_word::w#5 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_word::w#5 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 print_word::w#5 ] ) to:print_word::@1 print_word::@1: scope:[print_word] from print_word - [63] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 print_byte::b#1 ] ) - [64] call print_byte param-assignment [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 ] ) + [89] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ char_cursor#17 print_byte::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 print_byte::b#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::b#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 print_byte::b#2 ] ) + [90] call print_byte param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 ] ) to:print_word::@return print_word::@return: scope:[print_word] from print_word::@1 - [65] return [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 ] ) + [91] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 ] ) to:@return -print_byte: scope:[print_byte] from print_word print_word::@1 - [66] (byte*) char_cursor#64 ← phi( print_word/(byte*) char_cursor#2 print_word::@1/(byte*) char_cursor#11 ) [ print_byte::b#2 char_cursor#64 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 ] ) - [66] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 char_cursor#64 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 ] ) - [67] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ) - [68] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ) - [69] call print_char param-assignment [ char_cursor#11 print_byte::b#2 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::b#2 ] ) +print_byte: scope:[print_byte] from multiply_error::@1 multiply_error::@3 print_sbyte::@1 print_word print_word::@1 + [92] (byte*) char_cursor#124 ← phi( multiply_error::@1/(byte*) char_cursor#117 multiply_error::@3/(byte*) char_cursor#117 print_sbyte::@1/(byte*) char_cursor#121 print_word/(byte*) char_cursor#123 print_word::@1/(byte*) char_cursor#17 ) [ print_byte::b#5 char_cursor#124 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 ] ) + [92] (byte) print_byte::b#5 ← phi( multiply_error::@1/(byte) print_byte::b#3 multiply_error::@3/(byte) print_byte::b#4 print_sbyte::@1/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 ) [ print_byte::b#5 char_cursor#124 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 ] ) + [93] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] ) + [94] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] ) + [95] call print_char param-assignment [ char_cursor#17 print_byte::b#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [70] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::$2 ] ) - [71] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_char::ch#1 ] ) - [72] call print_char param-assignment [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + [96] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word) 15 [ char_cursor#17 print_byte::$2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] ) + [97] (byte) print_char::ch#3 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#17 print_char::ch#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] ) + [98] call print_char param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 - [73] return [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + [99] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] ) to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 - [74] (byte*) char_cursor#41 ← phi( print_byte/(byte*) char_cursor#64 print_byte::@1/(byte*) char_cursor#11 ) [ print_char::ch#2 char_cursor#41 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ print_char::ch#2 char_cursor#41 ] ) - [74] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#41 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_char::ch#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_char::ch#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ print_char::ch#2 char_cursor#41 ] ) - [75] *((byte*) char_cursor#41) ← (byte) print_char::ch#2 [ char_cursor#41 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#41 ] ) - [76] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#41 [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@2 print_sword::@2 + [100] (byte*) char_cursor#75 ← phi( print_byte/(byte*) char_cursor#124 print_byte::@1/(byte*) char_cursor#17 print_sbyte::@2/(byte*) char_cursor#117 print_sword::@2/(byte*) char_cursor#117 ) [ print_char::ch#4 char_cursor#75 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 print_char::ch#4 char_cursor#75 ] ) + [100] (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sbyte::@2/(byte) '-' print_sword::@2/(byte) '-' ) [ print_char::ch#4 char_cursor#75 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_char::ch#4 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_char::ch#4 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 print_char::ch#4 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 print_char::ch#4 char_cursor#75 ] ) + [101] *((byte*) char_cursor#75) ← (byte) print_char::ch#4 [ char_cursor#75 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#75 ] ) + [102] (byte*) char_cursor#17 ← ++ (byte*) char_cursor#75 [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] ) to:print_char::@return print_char::@return: scope:[print_char] from print_char - [77] return [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) + [103] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] ) to:@return -multiply: scope:[multiply] from multiply_results_compare::@8 - [78] *((const byte*) multiply::memA#0) ← (byte) multiply::a#0 [ multiply::b#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::b#0 ] ) - [79] *((const byte*) multiply::memB#0) ← (byte) multiply::b#0 [ ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) +print_sbyte: scope:[print_sbyte] from signed_multiply_error::@1 signed_multiply_error::@3 + [104] (signed byte) print_sbyte::b#3 ← phi( signed_multiply_error::@1/(signed byte) print_sbyte::b#1 signed_multiply_error::@3/(signed byte) print_sbyte::b#2 ) [ char_cursor#117 print_sbyte::b#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] ) + [105] if((signed byte) print_sbyte::b#3>=(byte/signed byte/word/signed word) 0) goto print_sbyte::@1 [ char_cursor#117 print_sbyte::b#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] ) + to:print_sbyte::@2 +print_sbyte::@2: scope:[print_sbyte] from print_sbyte + [106] phi() [ char_cursor#117 print_sbyte::b#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] ) + [107] call print_char param-assignment [ char_cursor#17 print_sbyte::b#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#3 ] ) + to:print_sbyte::@4 +print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@2 + [108] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ char_cursor#17 print_sbyte::b#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#0 ] ) + to:print_sbyte::@1 +print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@4 + [109] (byte*) char_cursor#121 ← phi( print_sbyte/(byte*) char_cursor#117 print_sbyte::@4/(byte*) char_cursor#17 ) [ char_cursor#121 print_sbyte::b#4 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#121 print_sbyte::b#4 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#121 print_sbyte::b#4 ] ) + [109] (signed byte) print_sbyte::b#4 ← phi( print_sbyte/(signed byte) print_sbyte::b#3 print_sbyte::@4/(signed byte) print_sbyte::b#0 ) [ char_cursor#121 print_sbyte::b#4 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#121 print_sbyte::b#4 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#121 print_sbyte::b#4 ] ) + [110] (byte) print_byte::b#0 ← ((byte)) (signed byte) print_sbyte::b#4 [ print_byte::b#0 char_cursor#121 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#0 char_cursor#121 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#0 char_cursor#121 ] ) + [111] call print_byte param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + to:print_sbyte::@return +print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 + [112] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + to:@return +signed_multiply: scope:[signed_multiply] from signed_multiply_results_compare::@8 + [113] (byte) multiply::a#0 ← ((byte)) (signed byte) signed_multiply::a#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 ] ) + [114] (byte) multiply::b#0 ← ((byte)) (signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 multiply::b#0 ] ) + [115] call multiply param-assignment [ signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] ) + [116] (word) multiply::return#2 ← (word) multiply::return#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::return#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#2 ] ) + to:signed_multiply::@6 +signed_multiply::@6: scope:[signed_multiply] from signed_multiply + [117] (word) signed_multiply::m#0 ← (word) multiply::return#2 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ) + [118] if((signed byte) signed_multiply::a#0>=(byte/signed byte/word/signed word) 0) goto signed_multiply::@1 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ) + to:signed_multiply::@3 +signed_multiply::@3: scope:[signed_multiply] from signed_multiply::@6 + [119] (byte~) signed_multiply::$6 ← > (word) signed_multiply::m#0 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 ] ) + [120] (byte~) signed_multiply::$7 ← ((byte)) (signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 signed_multiply::$7 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 signed_multiply::$7 ] ) + [121] (byte/signed byte/word/signed word~) signed_multiply::$16 ← (byte~) signed_multiply::$6 - (byte~) signed_multiply::$7 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$16 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$16 ] ) + [122] (word) signed_multiply::m#1 ← (word) signed_multiply::m#0 hi= (byte/signed byte/word/signed word~) signed_multiply::$16 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#1 ] ) + to:signed_multiply::@1 +signed_multiply::@1: scope:[signed_multiply] from signed_multiply::@3 signed_multiply::@6 + [123] (word) signed_multiply::m#5 ← phi( signed_multiply::@3/(word) signed_multiply::m#1 signed_multiply::@6/(word) signed_multiply::m#0 ) [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#5 ] ) + [124] if((signed byte) signed_multiply::b#0>=(byte/signed byte/word/signed word) 0) goto signed_multiply::@2 [ signed_multiply::a#0 signed_multiply::m#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::m#5 ] ) + to:signed_multiply::@4 +signed_multiply::@4: scope:[signed_multiply] from signed_multiply::@1 + [125] (byte~) signed_multiply::$12 ← > (word) signed_multiply::m#5 [ signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ) + [126] (byte~) signed_multiply::$13 ← ((byte)) (signed byte) signed_multiply::a#0 [ signed_multiply::m#5 signed_multiply::$12 signed_multiply::$13 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#5 signed_multiply::$12 signed_multiply::$13 ] ) + [127] (byte/signed byte/word/signed word~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte~) signed_multiply::$13 [ signed_multiply::m#5 signed_multiply::$17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#5 signed_multiply::$17 ] ) + [128] (word) signed_multiply::m#2 ← (word) signed_multiply::m#5 hi= (byte/signed byte/word/signed word~) signed_multiply::$17 [ signed_multiply::m#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#2 ] ) + to:signed_multiply::@2 +signed_multiply::@2: scope:[signed_multiply] from signed_multiply::@1 signed_multiply::@4 + [129] (word) signed_multiply::m#4 ← phi( signed_multiply::@1/(word) signed_multiply::m#5 signed_multiply::@4/(word) signed_multiply::m#2 ) [ signed_multiply::m#4 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#4 ] ) + [130] (signed word) signed_multiply::return#0 ← ((signed word)) (word) signed_multiply::m#4 [ signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::return#0 ] ) + to:signed_multiply::@return +signed_multiply::@return: scope:[signed_multiply] from signed_multiply::@2 + [131] return [ signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::return#0 ] ) + to:@return +multiply: scope:[multiply] from multiply_results_compare::@8 signed_multiply + [132] (byte) multiply::b#2 ← phi( multiply_results_compare::@8/(byte) multiply::b#1 signed_multiply/(byte) multiply::b#0 ) [ multiply::a#2 multiply::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#2 multiply::b#2 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#2 multiply::b#2 ] ) + [132] (byte) multiply::a#2 ← phi( multiply_results_compare::@8/(byte) multiply::a#1 signed_multiply/(byte) multiply::a#0 ) [ multiply::a#2 multiply::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#2 multiply::b#2 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#2 multiply::b#2 ] ) + [133] *((const byte*) multiply::memA#0) ← (byte) multiply::a#2 [ multiply::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::b#2 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::b#2 ] ) + [134] *((const byte*) multiply::memB#0) ← (byte) multiply::b#2 [ ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB } - [81] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::return#0 ] ) + [136] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) to:multiply::@return multiply::@return: scope:[multiply] from multiply - [82] return [ multiply::return#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::return#0 ] ) + [137] return [ multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) + to:@return +slow_signed_multiply: scope:[slow_signed_multiply] from signed_multiply_results_compare::@2 + [138] if((signed byte) slow_signed_multiply::a#0>=(byte/signed byte/word/signed word) 0) goto slow_signed_multiply::@1 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ) + to:slow_signed_multiply::@2 +slow_signed_multiply::@2: scope:[slow_signed_multiply] from slow_signed_multiply slow_signed_multiply::@2 + [139] (signed byte) slow_signed_multiply::i#2 ← phi( slow_signed_multiply::@2/(signed byte) slow_signed_multiply::i#1 slow_signed_multiply/(byte/signed byte/word/signed word) 0 ) [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#3 slow_signed_multiply::i#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#3 slow_signed_multiply::i#2 ] ) + [139] (signed word) slow_signed_multiply::m#3 ← phi( slow_signed_multiply::@2/(signed word) slow_signed_multiply::m#1 slow_signed_multiply/(byte/signed byte/word/signed word) 0 ) [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#3 slow_signed_multiply::i#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#3 slow_signed_multiply::i#2 ] ) + [140] (signed word) slow_signed_multiply::m#1 ← (signed word) slow_signed_multiply::m#3 - (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ) + [141] (signed byte) slow_signed_multiply::i#1 ← -- (signed byte) slow_signed_multiply::i#2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ) + [142] if((signed byte) slow_signed_multiply::i#1!=(signed byte) slow_signed_multiply::a#0) goto slow_signed_multiply::@2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ) + to:slow_signed_multiply::@3 +slow_signed_multiply::@3: scope:[slow_signed_multiply] from slow_signed_multiply::@1 slow_signed_multiply::@2 slow_signed_multiply::@5 + [143] (signed word) slow_signed_multiply::return#0 ← phi( slow_signed_multiply::@2/(signed word) slow_signed_multiply::m#1 slow_signed_multiply::@1/(byte/signed byte/word/signed word) 0 slow_signed_multiply::@5/(signed word) slow_signed_multiply::m#2 ) [ slow_signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::return#0 ] ) + to:slow_signed_multiply::@return +slow_signed_multiply::@return: scope:[slow_signed_multiply] from slow_signed_multiply::@3 + [144] return [ slow_signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::return#0 ] ) + to:@return +slow_signed_multiply::@1: scope:[slow_signed_multiply] from slow_signed_multiply + [145] if((signed byte) slow_signed_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_signed_multiply::@3 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ) + to:slow_signed_multiply::@5 +slow_signed_multiply::@5: scope:[slow_signed_multiply] from slow_signed_multiply::@1 slow_signed_multiply::@5 + [146] (signed byte) slow_signed_multiply::j#2 ← phi( slow_signed_multiply::@5/(signed byte) slow_signed_multiply::j#1 slow_signed_multiply::@1/(byte/signed byte/word/signed word) 0 ) [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#5 slow_signed_multiply::j#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#5 slow_signed_multiply::j#2 ] ) + [146] (signed word) slow_signed_multiply::m#5 ← phi( slow_signed_multiply::@5/(signed word) slow_signed_multiply::m#2 slow_signed_multiply::@1/(byte/signed byte/word/signed word) 0 ) [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#5 slow_signed_multiply::j#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#5 slow_signed_multiply::j#2 ] ) + [147] (signed word) slow_signed_multiply::m#2 ← (signed word) slow_signed_multiply::m#5 + (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ) + [148] (signed byte) slow_signed_multiply::j#1 ← ++ (signed byte) slow_signed_multiply::j#2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ) + [149] if((signed byte) slow_signed_multiply::j#1!=(signed byte) slow_signed_multiply::a#0) goto slow_signed_multiply::@5 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ) + to:slow_signed_multiply::@3 +multiply_results_compare: scope:[multiply_results_compare] from main::@4 + [150] phi() [ line_cursor#27 char_cursor#27 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 ] ) + to:multiply_results_compare::@1 +multiply_results_compare::@1: scope:[multiply_results_compare] from multiply_results_compare multiply_results_compare::@6 + [151] (byte) multiply_results_compare::a#6 ← phi( multiply_results_compare/(byte/signed byte/word/signed word) 0 multiply_results_compare::@6/(byte) multiply_results_compare::a#1 ) [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 ] ) + to:multiply_results_compare::@2 +multiply_results_compare::@2: scope:[multiply_results_compare] from multiply_results_compare::@1 multiply_results_compare::@3 + [152] (byte) multiply_results_compare::b#2 ← phi( multiply_results_compare::@1/(byte/signed byte/word/signed word) 0 multiply_results_compare::@3/(byte) multiply_results_compare::b#1 ) [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 ] ) + [153] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ) + [154] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) + [155] call slow_multiply param-assignment [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) + [156] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ) + to:multiply_results_compare::@8 +multiply_results_compare::@8: scope:[multiply_results_compare] from multiply_results_compare::@2 + [157] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + [158] (byte) multiply::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + [159] (byte) multiply::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + [160] call multiply param-assignment [ line_cursor#27 char_cursor#27 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + [161] (word) multiply::return#3 ← (word) multiply::return#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ) + to:multiply_results_compare::@9 +multiply_results_compare::@9: scope:[multiply_results_compare] from multiply_results_compare::@8 + [162] (word) multiply_results_compare::ma#0 ← (word) multiply::return#3 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) + [163] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) + to:multiply_results_compare::@4 +multiply_results_compare::@4: scope:[multiply_results_compare] from multiply_results_compare::@9 + [164] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) + [165] (byte) multiply_error::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 ] ) + [166] (byte) multiply_error::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 ] ) + [167] (word) multiply_error::ms#0 ← (word) multiply_results_compare::ms#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ) + [168] (word) multiply_error::ma#0 ← (word) multiply_results_compare::ma#0 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + [169] call multiply_error param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) + to:multiply_results_compare::@return +multiply_results_compare::@return: scope:[multiply_results_compare] from multiply_results_compare::@11 multiply_results_compare::@4 + [170] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) + to:@return +multiply_results_compare::@3: scope:[multiply_results_compare] from multiply_results_compare::@9 + [171] (byte) multiply_results_compare::b#1 ← ++ (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ) + [172] if((byte) multiply_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ) + to:multiply_results_compare::@6 +multiply_results_compare::@6: scope:[multiply_results_compare] from multiply_results_compare::@3 + [173] (byte) multiply_results_compare::a#1 ← ++ (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ) + [174] if((byte) multiply_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@1 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ) + to:multiply_results_compare::@7 +multiply_results_compare::@7: scope:[multiply_results_compare] from multiply_results_compare::@6 + [175] phi() [ line_cursor#27 char_cursor#27 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 ] ) + [176] call print_str param-assignment [ char_cursor#117 line_cursor#27 ] ( main:2::multiply_results_compare:13 [ char_cursor#117 line_cursor#27 ] ) + to:multiply_results_compare::@11 +multiply_results_compare::@11: scope:[multiply_results_compare] from multiply_results_compare::@7 + [177] phi() [ char_cursor#117 line_cursor#27 ] ( main:2::multiply_results_compare:13 [ char_cursor#117 line_cursor#27 ] ) + [178] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) + to:multiply_results_compare::@return +multiply_error: scope:[multiply_error] from multiply_results_compare::@4 + [179] phi() [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + [180] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + to:multiply_error::@1 +multiply_error::@1: scope:[multiply_error] from multiply_error + [181] (byte) print_byte::b#3 ← (byte) multiply_error::a#0 [ char_cursor#117 line_cursor#27 print_byte::b#3 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_byte::b#3 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + [182] call print_byte param-assignment [ char_cursor#17 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + to:multiply_error::@2 +multiply_error::@2: scope:[multiply_error] from multiply_error::@1 + [183] phi() [ char_cursor#17 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + [184] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + to:multiply_error::@3 +multiply_error::@3: scope:[multiply_error] from multiply_error::@2 + [185] (byte) print_byte::b#4 ← (byte) multiply_error::b#0 [ char_cursor#117 line_cursor#27 print_byte::b#4 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_byte::b#4 multiply_error::ms#0 multiply_error::ma#0 ] ) + [186] call print_byte param-assignment [ char_cursor#17 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ) + to:multiply_error::@4 +multiply_error::@4: scope:[multiply_error] from multiply_error::@3 + [187] phi() [ char_cursor#17 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ) + [188] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ) + to:multiply_error::@5 +multiply_error::@5: scope:[multiply_error] from multiply_error::@4 + [189] (word) print_word::w#3 ← (word) multiply_error::ms#0 [ char_cursor#117 line_cursor#27 print_word::w#3 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_word::w#3 multiply_error::ma#0 ] ) + [190] call print_word param-assignment [ char_cursor#17 line_cursor#27 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::ma#0 ] ) + to:multiply_error::@6 +multiply_error::@6: scope:[multiply_error] from multiply_error::@5 + [191] phi() [ char_cursor#17 line_cursor#27 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::ma#0 ] ) + [192] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::ma#0 ] ) + to:multiply_error::@7 +multiply_error::@7: scope:[multiply_error] from multiply_error::@6 + [193] (word) print_word::w#4 ← (word) multiply_error::ma#0 [ char_cursor#117 line_cursor#27 print_word::w#4 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_word::w#4 ] ) + [194] call print_word param-assignment [ char_cursor#17 line_cursor#27 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 ] ) + to:multiply_error::@8 +multiply_error::@8: scope:[multiply_error] from multiply_error::@7 + [195] phi() [ char_cursor#17 line_cursor#27 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 ] ) + [196] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ line_cursor#1 ] ) + to:multiply_error::@return +multiply_error::@return: scope:[multiply_error] from multiply_error::@8 + [197] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ line_cursor#1 ] ) to:@return slow_multiply: scope:[slow_multiply] from multiply_results_compare::@2 - [83] if((byte) slow_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 ] ) + [198] if((byte) slow_multiply::a#0==(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) to:slow_multiply::@2 slow_multiply::@2: scope:[slow_multiply] from slow_multiply slow_multiply::@2 - [84] (byte) slow_multiply::i#2 ← phi( slow_multiply::@2/(byte) slow_multiply::i#1 slow_multiply/(byte/signed byte/word/signed word) 0 ) [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ) - [84] (word) slow_multiply::m#3 ← phi( slow_multiply::@2/(word) slow_multiply::m#1 slow_multiply/(byte/signed byte/word/signed word) 0 ) [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ) - [85] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) - [86] (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) - [87] if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) + [199] (byte) slow_multiply::i#2 ← phi( slow_multiply::@2/(byte) slow_multiply::i#1 slow_multiply/(byte/signed byte/word/signed word) 0 ) [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ) + [199] (word) slow_multiply::m#3 ← phi( slow_multiply::@2/(word) slow_multiply::m#1 slow_multiply/(byte/signed byte/word/signed word) 0 ) [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ) + [200] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) + [201] (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) + [202] if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) to:slow_multiply::@1 slow_multiply::@1: scope:[slow_multiply] from slow_multiply slow_multiply::@2 - [88] (word) slow_multiply::return#0 ← phi( slow_multiply/(byte/signed byte/word/signed word) 0 slow_multiply::@2/(word) slow_multiply::m#1 ) [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::return#0 ] ) + [203] (word) slow_multiply::return#0 ← phi( slow_multiply/(byte/signed byte/word/signed word) 0 slow_multiply::@2/(word) slow_multiply::m#1 ) [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) to:slow_multiply::@return slow_multiply::@return: scope:[slow_multiply] from slow_multiply::@1 - [89] return [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::return#0 ] ) + [204] return [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) to:@return multiply_tables_compare: scope:[multiply_tables_compare] from main::@3 - [90] phi() [ ] ( main:2::multiply_tables_compare:11 [ ] ) + [205] phi() [ ] ( main:2::multiply_tables_compare:11 [ ] ) to:multiply_tables_compare::@1 multiply_tables_compare::@1: scope:[multiply_tables_compare] from multiply_tables_compare multiply_tables_compare::@2 - [91] (byte*) multiply_tables_compare::asm_sqr#2 ← phi( multiply_tables_compare/(const byte[512]) asm_mul_sqr1_lo#0 multiply_tables_compare::@2/(byte*) multiply_tables_compare::asm_sqr#1 ) [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) - [91] (byte*) multiply_tables_compare::kc_sqr#2 ← phi( multiply_tables_compare/(const byte[512]) mul_sqr1_lo#0 multiply_tables_compare::@2/(byte*) multiply_tables_compare::kc_sqr#1 ) [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) - [92] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) + [206] (byte*) multiply_tables_compare::asm_sqr#2 ← phi( multiply_tables_compare/(const byte[512]) asm_mul_sqr1_lo#0 multiply_tables_compare::@2/(byte*) multiply_tables_compare::asm_sqr#1 ) [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) + [206] (byte*) multiply_tables_compare::kc_sqr#2 ← phi( multiply_tables_compare/(const byte[512]) mul_sqr1_lo#0 multiply_tables_compare::@2/(byte*) multiply_tables_compare::kc_sqr#1 ) [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) + [207] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) to:multiply_tables_compare::@3 multiply_tables_compare::@3: scope:[multiply_tables_compare] from multiply_tables_compare::@1 - [93] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) - [94] call print_str param-assignment [ char_cursor#2 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) + [208] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) + [209] call print_str param-assignment [ char_cursor#117 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) to:multiply_tables_compare::@6 multiply_tables_compare::@6: scope:[multiply_tables_compare] from multiply_tables_compare::@3 - [95] (word) print_word::w#0 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#2 print_word::w#0 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 print_word::w#0 multiply_tables_compare::kc_sqr#2 ] ) - [96] call print_word param-assignment [ char_cursor#11 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#11 multiply_tables_compare::kc_sqr#2 ] ) + [210] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ) + [211] call print_word param-assignment [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ) to:multiply_tables_compare::@7 multiply_tables_compare::@7: scope:[multiply_tables_compare] from multiply_tables_compare::@6 - [97] phi() [ char_cursor#11 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#11 multiply_tables_compare::kc_sqr#2 ] ) - [98] call print_str param-assignment [ char_cursor#2 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 multiply_tables_compare::kc_sqr#2 ] ) + [212] phi() [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ) + [213] call print_str param-assignment [ char_cursor#117 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 multiply_tables_compare::kc_sqr#2 ] ) to:multiply_tables_compare::@8 multiply_tables_compare::@8: scope:[multiply_tables_compare] from multiply_tables_compare::@7 - [99] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#2 print_word::w#1 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 print_word::w#1 ] ) - [100] call print_word param-assignment [ char_cursor#11 ] ( main:2::multiply_tables_compare:11 [ char_cursor#11 ] ) + [214] (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#2 ] ) + [215] call print_word param-assignment [ char_cursor#17 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 ] ) to:multiply_tables_compare::@return multiply_tables_compare::@return: scope:[multiply_tables_compare] from multiply_tables_compare::@10 multiply_tables_compare::@8 - [101] (byte*) line_cursor#17 ← phi( multiply_tables_compare::@10/(byte*) line_cursor#1 multiply_tables_compare::@8/((byte*))(word/signed word) 1024 ) [ line_cursor#17 char_cursor#20 ] ( main:2::multiply_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) - [101] (byte*) char_cursor#20 ← phi( multiply_tables_compare::@10/(byte*~) char_cursor#100 multiply_tables_compare::@8/(byte*) char_cursor#11 ) [ line_cursor#17 char_cursor#20 ] ( main:2::multiply_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) - [102] return [ line_cursor#17 char_cursor#20 ] ( main:2::multiply_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) + [216] (byte*) line_cursor#27 ← phi( multiply_tables_compare::@10/(byte*) line_cursor#1 multiply_tables_compare::@8/((byte*))(word/signed word) 1024 ) [ line_cursor#27 char_cursor#27 ] ( main:2::multiply_tables_compare:11 [ line_cursor#27 char_cursor#27 ] ) + [216] (byte*) char_cursor#27 ← phi( multiply_tables_compare::@10/(byte*~) char_cursor#197 multiply_tables_compare::@8/(byte*) char_cursor#17 ) [ line_cursor#27 char_cursor#27 ] ( main:2::multiply_tables_compare:11 [ line_cursor#27 char_cursor#27 ] ) + [217] return [ line_cursor#27 char_cursor#27 ] ( main:2::multiply_tables_compare:11 [ line_cursor#27 char_cursor#27 ] ) to:@return multiply_tables_compare::@2: scope:[multiply_tables_compare] from multiply_tables_compare::@1 - [103] (byte*) multiply_tables_compare::asm_sqr#1 ← ++ (byte*) multiply_tables_compare::asm_sqr#2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ) - [104] (byte*) multiply_tables_compare::kc_sqr#1 ← ++ (byte*) multiply_tables_compare::kc_sqr#2 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) - [105] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) + [218] (byte*) multiply_tables_compare::asm_sqr#1 ← ++ (byte*) multiply_tables_compare::asm_sqr#2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ) + [219] (byte*) multiply_tables_compare::kc_sqr#1 ← ++ (byte*) multiply_tables_compare::kc_sqr#2 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) + [220] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) to:multiply_tables_compare::@5 multiply_tables_compare::@5: scope:[multiply_tables_compare] from multiply_tables_compare::@2 - [106] phi() [ ] ( main:2::multiply_tables_compare:11 [ ] ) - [107] call print_str param-assignment [ char_cursor#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 ] ) + [221] phi() [ ] ( main:2::multiply_tables_compare:11 [ ] ) + [222] call print_str param-assignment [ char_cursor#117 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 ] ) to:multiply_tables_compare::@10 multiply_tables_compare::@10: scope:[multiply_tables_compare] from multiply_tables_compare::@5 - [108] phi() [ char_cursor#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 ] ) - [109] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 ] ) - [110] (byte*~) char_cursor#100 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#100 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#100 ] ) + [223] phi() [ char_cursor#117 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 ] ) + [224] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 ] ) + [225] (byte*~) char_cursor#197 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#197 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#197 ] ) to:multiply_tables_compare::@return init_multiply_asm: scope:[init_multiply_asm] from main::@2 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } - [112] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) - [113] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) - [114] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) - [115] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) + [227] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) + [228] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) + [229] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) + [230] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) to:init_multiply_asm::@return init_multiply_asm::@return: scope:[init_multiply_asm] from init_multiply_asm - [116] return [ ] ( main:2::init_multiply_asm:9 [ ] ) + [231] return [ ] ( main:2::init_multiply_asm:9 [ ] ) to:@return init_multiply: scope:[init_multiply] from main::@1 - [117] phi() [ ] ( main:2::init_multiply:7 [ ] ) + [232] phi() [ ] ( main:2::init_multiply:7 [ ] ) to:init_multiply::@1 init_multiply::@1: scope:[init_multiply] from init_multiply init_multiply::@2 - [118] (byte) init_multiply::x_2#3 ← phi( init_multiply/(byte/signed byte/word/signed word) 0 init_multiply::@2/(byte) init_multiply::x_2#2 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) - [118] (byte*) init_multiply::sqr1_hi#2 ← phi( init_multiply/(const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 init_multiply::@2/(byte*) init_multiply::sqr1_hi#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) - [118] (byte*) init_multiply::sqr1_lo#2 ← phi( init_multiply/(const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 init_multiply::@2/(byte*) init_multiply::sqr1_lo#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) - [118] (word) init_multiply::sqr#4 ← phi( init_multiply/(byte/signed byte/word/signed word) 0 init_multiply::@2/(word) init_multiply::sqr#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) - [118] (byte) init_multiply::c#2 ← phi( init_multiply/(byte/signed byte/word/signed word) 0 init_multiply::@2/(byte) init_multiply::c#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) - [119] (byte) init_multiply::c#1 ← ++ (byte) init_multiply::c#2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) - [120] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word) 1 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ) - [121] if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word) 0) goto init_multiply::@2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) + [233] (byte) init_multiply::x_2#3 ← phi( init_multiply/(byte/signed byte/word/signed word) 0 init_multiply::@2/(byte) init_multiply::x_2#2 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) + [233] (byte*) init_multiply::sqr1_hi#2 ← phi( init_multiply/(const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 init_multiply::@2/(byte*) init_multiply::sqr1_hi#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) + [233] (byte*) init_multiply::sqr1_lo#2 ← phi( init_multiply/(const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 init_multiply::@2/(byte*) init_multiply::sqr1_lo#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) + [233] (word) init_multiply::sqr#4 ← phi( init_multiply/(byte/signed byte/word/signed word) 0 init_multiply::@2/(word) init_multiply::sqr#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) + [233] (byte) init_multiply::c#2 ← phi( init_multiply/(byte/signed byte/word/signed word) 0 init_multiply::@2/(byte) init_multiply::c#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ) + [234] (byte) init_multiply::c#1 ← ++ (byte) init_multiply::c#2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) + [235] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word) 1 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ) + [236] if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word) 0) goto init_multiply::@2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) to:init_multiply::@5 init_multiply::@5: scope:[init_multiply] from init_multiply::@1 - [122] (byte) init_multiply::x_2#1 ← ++ (byte) init_multiply::x_2#3 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ) - [123] (word) init_multiply::sqr#2 ← ++ (word) init_multiply::sqr#4 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ) + [237] (byte) init_multiply::x_2#1 ← ++ (byte) init_multiply::x_2#3 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ) + [238] (word) init_multiply::sqr#2 ← ++ (word) init_multiply::sqr#4 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ) to:init_multiply::@2 init_multiply::@2: scope:[init_multiply] from init_multiply::@1 init_multiply::@5 - [124] (byte) init_multiply::x_2#2 ← phi( init_multiply::@1/(byte) init_multiply::x_2#3 init_multiply::@5/(byte) init_multiply::x_2#1 ) [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) - [124] (word) init_multiply::sqr#3 ← phi( init_multiply::@1/(word) init_multiply::sqr#4 init_multiply::@5/(word) init_multiply::sqr#2 ) [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) - [125] (byte~) init_multiply::$5 ← < (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ) - [126] *((byte*) init_multiply::sqr1_lo#2) ← (byte~) init_multiply::$5 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) - [127] (byte~) init_multiply::$6 ← > (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ) - [128] *((byte*) init_multiply::sqr1_hi#2) ← (byte~) init_multiply::$6 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) - [129] (byte*) init_multiply::sqr1_hi#1 ← ++ (byte*) init_multiply::sqr1_hi#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) - [130] (word) init_multiply::sqr#1 ← (word) init_multiply::sqr#3 + (byte) init_multiply::x_2#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) - [131] (byte*) init_multiply::sqr1_lo#1 ← ++ (byte*) init_multiply::sqr1_lo#2 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) - [132] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_multiply::@1 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) + [239] (byte) init_multiply::x_2#2 ← phi( init_multiply::@1/(byte) init_multiply::x_2#3 init_multiply::@5/(byte) init_multiply::x_2#1 ) [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) + [239] (word) init_multiply::sqr#3 ← phi( init_multiply::@1/(word) init_multiply::sqr#4 init_multiply::@5/(word) init_multiply::sqr#2 ) [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) + [240] (byte~) init_multiply::$5 ← < (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ) + [241] *((byte*) init_multiply::sqr1_lo#2) ← (byte~) init_multiply::$5 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) + [242] (byte~) init_multiply::$6 ← > (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ) + [243] *((byte*) init_multiply::sqr1_hi#2) ← (byte~) init_multiply::$6 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) + [244] (byte*) init_multiply::sqr1_hi#1 ← ++ (byte*) init_multiply::sqr1_hi#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) + [245] (word) init_multiply::sqr#1 ← (word) init_multiply::sqr#3 + (byte) init_multiply::x_2#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) + [246] (byte*) init_multiply::sqr1_lo#1 ← ++ (byte*) init_multiply::sqr1_lo#2 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) + [247] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_multiply::@1 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) to:init_multiply::@3 init_multiply::@3: scope:[init_multiply] from init_multiply::@2 init_multiply::@4 - [133] (byte) init_multiply::dir#2 ← phi( init_multiply::@4/(byte) init_multiply::dir#3 init_multiply::@2/(byte/word/signed word) 255 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) - [133] (byte*) init_multiply::sqr2_hi#2 ← phi( init_multiply::@4/(byte*) init_multiply::sqr2_hi#1 init_multiply::@2/(const byte[512]) mul_sqr2_hi#0 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) - [133] (byte*) init_multiply::sqr2_lo#2 ← phi( init_multiply::@4/(byte*) init_multiply::sqr2_lo#1 init_multiply::@2/(const byte[512]) mul_sqr2_lo#0 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) - [133] (byte) init_multiply::x_255#2 ← phi( init_multiply::@4/(byte) init_multiply::x_255#1 init_multiply::@2/((byte))-(byte/signed byte/word/signed word) 1 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) - [134] *((byte*) init_multiply::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) - [135] *((byte*) init_multiply::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) - [136] (byte*) init_multiply::sqr2_hi#1 ← ++ (byte*) init_multiply::sqr2_hi#2 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ) - [137] (byte) init_multiply::x_255#1 ← (byte) init_multiply::x_255#2 + (byte) init_multiply::dir#2 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) - [138] if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_multiply::@12 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) + [248] (byte) init_multiply::dir#2 ← phi( init_multiply::@4/(byte) init_multiply::dir#3 init_multiply::@2/(byte/word/signed word) 255 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) + [248] (byte*) init_multiply::sqr2_hi#2 ← phi( init_multiply::@4/(byte*) init_multiply::sqr2_hi#1 init_multiply::@2/(const byte[512]) mul_sqr2_hi#0 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) + [248] (byte*) init_multiply::sqr2_lo#2 ← phi( init_multiply::@4/(byte*) init_multiply::sqr2_lo#1 init_multiply::@2/(const byte[512]) mul_sqr2_lo#0 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) + [248] (byte) init_multiply::x_255#2 ← phi( init_multiply::@4/(byte) init_multiply::x_255#1 init_multiply::@2/((byte))-(byte/signed byte/word/signed word) 1 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) + [249] *((byte*) init_multiply::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) + [250] *((byte*) init_multiply::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) + [251] (byte*) init_multiply::sqr2_hi#1 ← ++ (byte*) init_multiply::sqr2_hi#2 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ) + [252] (byte) init_multiply::x_255#1 ← (byte) init_multiply::x_255#2 + (byte) init_multiply::dir#2 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) + [253] if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_multiply::@12 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) to:init_multiply::@4 init_multiply::@4: scope:[init_multiply] from init_multiply::@12 init_multiply::@3 - [139] (byte) init_multiply::dir#3 ← phi( init_multiply::@12/(byte) init_multiply::dir#2 init_multiply::@3/(byte/signed byte/word/signed word) 1 ) [ init_multiply::sqr2_lo#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) - [140] (byte*) init_multiply::sqr2_lo#1 ← ++ (byte*) init_multiply::sqr2_lo#2 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) - [141] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_multiply::@3 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) + [254] (byte) init_multiply::dir#3 ← phi( init_multiply::@12/(byte) init_multiply::dir#2 init_multiply::@3/(byte/signed byte/word/signed word) 1 ) [ init_multiply::sqr2_lo#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) + [255] (byte*) init_multiply::sqr2_lo#1 ← ++ (byte*) init_multiply::sqr2_lo#2 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) + [256] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_multiply::@3 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) to:init_multiply::@8 init_multiply::@8: scope:[init_multiply] from init_multiply::@4 - [142] *((const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word) 256) [ ] ( main:2::init_multiply:7 [ ] ) - [143] *((const byte[512]) mul_sqr2_hi#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word) 256) [ ] ( main:2::init_multiply:7 [ ] ) + [257] *((const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word) 256) [ ] ( main:2::init_multiply:7 [ ] ) + [258] *((const byte[512]) mul_sqr2_hi#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word) 256) [ ] ( main:2::init_multiply:7 [ ] ) to:init_multiply::@return init_multiply::@return: scope:[init_multiply] from init_multiply::@8 - [144] return [ ] ( main:2::init_multiply:7 [ ] ) + [259] return [ ] ( main:2::init_multiply:7 [ ] ) to:@return init_multiply::@12: scope:[init_multiply] from init_multiply::@3 - [145] phi() [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) + [260] phi() [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) to:init_multiply::@4 print_cls: scope:[print_cls] from main - [146] phi() [ ] ( main:2::print_cls:5 [ ] ) + [261] phi() [ ] ( main:2::print_cls:5 [ ] ) to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [147] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) - [148] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) - [149] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) - [150] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) + [262] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) + [263] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) + [264] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) + [265] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [151] return [ ] ( main:2::print_cls:5 [ ] ) + [266] return [ ] ( main:2::print_cls:5 [ ] ) to:@return DOMINATORS @begin dominated by @begin -@13 dominated by @begin @13 -@end dominated by @end @begin @13 -main dominated by main @begin @13 -main::@1 dominated by main main::@1 @begin @13 -main::@2 dominated by main main::@1 main::@2 @begin @13 -main::@3 dominated by main main::@1 main::@2 main::@3 @begin @13 -main::@4 dominated by main main::@1 main::@2 main::@3 main::@4 @begin @13 -main::@return dominated by main main::@1 main::@2 main::@3 main::@4 @begin main::@return @13 -multiply_results_compare dominated by main main::@1 main::@2 main::@3 main::@4 @begin @13 multiply_results_compare -multiply_results_compare::@1 dominated by main main::@1 main::@2 main::@3 main::@4 @begin @13 multiply_results_compare multiply_results_compare::@1 -multiply_results_compare::@2 dominated by main main::@1 main::@2 main::@3 main::@4 @begin @13 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 -multiply_results_compare::@8 dominated by main main::@1 main::@2 main::@3 main::@4 @begin multiply_results_compare::@8 @13 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 -multiply_results_compare::@9 dominated by main main::@1 main::@2 main::@3 main::@4 @begin multiply_results_compare::@8 @13 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 -multiply_results_compare::@4 dominated by main main::@1 main::@2 main::@3 main::@4 @begin multiply_results_compare::@8 @13 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@4 -multiply_results_compare::@10 dominated by main main::@1 main::@2 main::@3 main::@4 @begin multiply_results_compare::@8 @13 multiply_results_compare::@9 multiply_results_compare::@10 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@4 -multiply_results_compare::@11 dominated by main main::@1 main::@2 main::@3 main::@4 @begin multiply_results_compare::@8 @13 multiply_results_compare::@9 multiply_results_compare::@10 multiply_results_compare::@11 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@4 -multiply_results_compare::@12 dominated by main main::@1 multiply_results_compare::@12 main::@2 main::@3 main::@4 @begin multiply_results_compare::@8 @13 multiply_results_compare::@9 multiply_results_compare::@10 multiply_results_compare::@11 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@4 -multiply_results_compare::@return dominated by main main::@1 main::@2 main::@3 main::@4 @begin multiply_results_compare::@return multiply_results_compare::@8 @13 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 -multiply_results_compare::@3 dominated by main main::@1 main::@2 main::@3 main::@4 @begin multiply_results_compare::@8 @13 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@3 -multiply_results_compare::@6 dominated by main main::@1 main::@2 main::@3 main::@4 @begin multiply_results_compare::@8 @13 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@3 multiply_results_compare::@6 -multiply_results_compare::@7 dominated by main main::@1 main::@2 main::@3 main::@4 @begin multiply_results_compare::@8 multiply_results_compare::@7 @13 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@3 multiply_results_compare::@6 -multiply_results_compare::@14 dominated by main main::@1 main::@2 multiply_results_compare::@14 main::@3 main::@4 @begin multiply_results_compare::@8 multiply_results_compare::@7 @13 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@3 multiply_results_compare::@6 -print_ln dominated by main main::@1 main::@2 main::@3 @begin print_ln @13 -print_ln::@1 dominated by print_ln::@1 main main::@1 main::@2 main::@3 @begin print_ln @13 -print_ln::@return dominated by print_ln::@1 main print_ln::@return main::@1 main::@2 main::@3 @begin print_ln @13 -print_str dominated by main main::@1 main::@2 main::@3 @begin @13 print_str -print_str::@1 dominated by main main::@1 main::@2 main::@3 @begin print_str::@1 @13 print_str -print_str::@return dominated by main main::@1 main::@2 main::@3 @begin print_str::@return print_str::@1 @13 print_str -print_str::@2 dominated by main main::@1 main::@2 main::@3 @begin print_str::@1 print_str::@2 @13 print_str -print_word dominated by main print_word main::@1 main::@2 main::@3 @begin @13 -print_word::@1 dominated by main print_word main::@1 main::@2 main::@3 @begin print_word::@1 @13 -print_word::@return dominated by main print_word main::@1 main::@2 main::@3 @begin print_word::@return print_word::@1 @13 -print_byte dominated by main print_word main::@1 main::@2 main::@3 @begin @13 print_byte -print_byte::@1 dominated by main print_word main::@1 main::@2 main::@3 @begin print_byte::@1 @13 print_byte -print_byte::@return dominated by main print_word main::@1 main::@2 main::@3 @begin print_byte::@return print_byte::@1 @13 print_byte -print_char dominated by main print_word print_char main::@1 main::@2 main::@3 @begin @13 print_byte -print_char::@return dominated by main print_word print_char main::@1 main::@2 main::@3 print_char::@return @begin @13 print_byte -multiply dominated by main main::@1 main::@2 main::@3 main::@4 @begin multiply multiply_results_compare::@8 @13 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 -multiply::@return dominated by main multiply::@return main::@1 main::@2 main::@3 main::@4 @begin multiply multiply_results_compare::@8 @13 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 -slow_multiply dominated by main main::@1 main::@2 main::@3 main::@4 @begin slow_multiply @13 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 -slow_multiply::@2 dominated by main main::@1 main::@2 main::@3 main::@4 @begin slow_multiply::@2 slow_multiply @13 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 -slow_multiply::@1 dominated by main main::@1 main::@2 main::@3 main::@4 @begin slow_multiply::@1 slow_multiply @13 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 -slow_multiply::@return dominated by main main::@1 main::@2 main::@3 main::@4 @begin slow_multiply::@1 slow_multiply @13 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 slow_multiply::@return -multiply_tables_compare dominated by main main::@1 main::@2 main::@3 @begin multiply_tables_compare @13 -multiply_tables_compare::@1 dominated by main main::@1 main::@2 main::@3 @begin multiply_tables_compare::@1 multiply_tables_compare @13 -multiply_tables_compare::@3 dominated by main main::@1 main::@2 main::@3 @begin multiply_tables_compare::@3 multiply_tables_compare::@1 multiply_tables_compare @13 -multiply_tables_compare::@6 dominated by main main::@1 main::@2 main::@3 @begin multiply_tables_compare::@6 multiply_tables_compare::@3 multiply_tables_compare::@1 multiply_tables_compare @13 -multiply_tables_compare::@7 dominated by main main::@1 main::@2 main::@3 @begin multiply_tables_compare::@7 multiply_tables_compare::@6 multiply_tables_compare::@3 multiply_tables_compare::@1 multiply_tables_compare @13 -multiply_tables_compare::@8 dominated by main main::@1 main::@2 main::@3 @begin multiply_tables_compare::@7 multiply_tables_compare::@6 multiply_tables_compare::@8 multiply_tables_compare::@3 multiply_tables_compare::@1 multiply_tables_compare @13 -multiply_tables_compare::@return dominated by main main::@1 main::@2 main::@3 @begin multiply_tables_compare::@return multiply_tables_compare::@1 multiply_tables_compare @13 -multiply_tables_compare::@2 dominated by main main::@1 main::@2 main::@3 @begin multiply_tables_compare::@2 multiply_tables_compare::@1 multiply_tables_compare @13 -multiply_tables_compare::@5 dominated by main main::@1 main::@2 main::@3 @begin multiply_tables_compare::@2 multiply_tables_compare::@5 multiply_tables_compare::@1 multiply_tables_compare @13 -multiply_tables_compare::@10 dominated by main main::@1 main::@2 main::@3 @begin multiply_tables_compare::@2 multiply_tables_compare::@5 multiply_tables_compare::@1 multiply_tables_compare @13 multiply_tables_compare::@10 -init_multiply_asm dominated by main main::@1 main::@2 @begin @13 init_multiply_asm -init_multiply_asm::@return dominated by init_multiply_asm::@return main main::@1 main::@2 @begin @13 init_multiply_asm -init_multiply dominated by main main::@1 @begin @13 init_multiply -init_multiply::@1 dominated by main main::@1 @begin @13 init_multiply::@1 init_multiply -init_multiply::@5 dominated by main main::@1 @begin @13 init_multiply::@1 init_multiply::@5 init_multiply -init_multiply::@2 dominated by main main::@1 @begin @13 init_multiply::@1 init_multiply::@2 init_multiply -init_multiply::@3 dominated by main main::@1 @begin @13 init_multiply::@3 init_multiply::@1 init_multiply::@2 init_multiply -init_multiply::@4 dominated by main main::@1 @begin @13 init_multiply::@3 init_multiply::@4 init_multiply::@1 init_multiply::@2 init_multiply -init_multiply::@8 dominated by main main::@1 @begin @13 init_multiply::@3 init_multiply::@4 init_multiply::@1 init_multiply::@2 init_multiply::@8 init_multiply -init_multiply::@return dominated by main main::@1 @begin @13 init_multiply::@3 init_multiply::@4 init_multiply::@1 init_multiply::@2 init_multiply::@8 init_multiply init_multiply::@return -init_multiply::@12 dominated by main init_multiply::@12 main::@1 @begin @13 init_multiply::@3 init_multiply::@1 init_multiply::@2 init_multiply -print_cls dominated by main @begin @13 print_cls -print_cls::@1 dominated by main @begin @13 print_cls::@1 print_cls -print_cls::@return dominated by main @begin print_cls::@return @13 print_cls::@1 print_cls +@20 dominated by @20 @begin +@end dominated by @20 @end @begin +main dominated by @20 main @begin +main::@1 dominated by main::@1 @20 main @begin +main::@2 dominated by main::@1 main::@2 @20 main @begin +main::@3 dominated by main::@1 main::@2 main::@3 @20 main @begin +main::@4 dominated by main::@1 main::@2 main::@3 main::@4 @20 main @begin +main::@5 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 @20 main @begin +main::@return dominated by main::@1 main::@2 main::@5 main::@3 main::@4 main::@return @20 main @begin +signed_multiply_results_compare dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare @20 main @begin +signed_multiply_results_compare::@1 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@1 signed_multiply_results_compare @20 main @begin +signed_multiply_results_compare::@2 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare @20 main @begin +signed_multiply_results_compare::@8 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@8 signed_multiply_results_compare @20 main @begin +signed_multiply_results_compare::@9 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare @20 main @begin +signed_multiply_results_compare::@4 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare @20 main @begin +signed_multiply_results_compare::@return dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare signed_multiply_results_compare::@return @20 main @begin +signed_multiply_results_compare::@3 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@3 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare @20 main @begin +signed_multiply_results_compare::@6 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@3 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@6 signed_multiply_results_compare @20 main @begin +signed_multiply_results_compare::@7 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@3 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@7 signed_multiply_results_compare::@6 signed_multiply_results_compare @20 main @begin +signed_multiply_results_compare::@11 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@3 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@7 signed_multiply_results_compare::@6 signed_multiply_results_compare @20 main @begin signed_multiply_results_compare::@11 +print_ln dominated by main::@1 main::@2 main::@3 print_ln @20 main @begin +print_ln::@1 dominated by main::@1 main::@2 main::@3 print_ln @20 print_ln::@1 main @begin +print_ln::@return dominated by print_ln::@return main::@1 main::@2 main::@3 print_ln @20 print_ln::@1 main @begin +print_str dominated by main::@1 main::@2 main::@3 print_str @20 main @begin +print_str::@1 dominated by main::@1 main::@2 main::@3 print_str::@1 print_str @20 main @begin +print_str::@return dominated by main::@1 main::@2 main::@3 print_str::@return print_str::@1 print_str @20 main @begin +print_str::@2 dominated by main::@1 main::@2 main::@3 print_str::@1 print_str::@2 print_str @20 main @begin +signed_multiply_error dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare @20 main @begin signed_multiply_error +signed_multiply_error::@1 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare @20 main signed_multiply_error::@1 @begin signed_multiply_error +signed_multiply_error::@2 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare @20 main signed_multiply_error::@2 signed_multiply_error::@1 @begin signed_multiply_error +signed_multiply_error::@3 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare @20 main signed_multiply_error::@2 signed_multiply_error::@3 signed_multiply_error::@1 @begin signed_multiply_error +signed_multiply_error::@4 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare @20 main signed_multiply_error::@4 signed_multiply_error::@2 signed_multiply_error::@3 signed_multiply_error::@1 @begin signed_multiply_error +signed_multiply_error::@5 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare @20 main signed_multiply_error::@4 signed_multiply_error::@5 signed_multiply_error::@2 signed_multiply_error::@3 signed_multiply_error::@1 @begin signed_multiply_error +signed_multiply_error::@6 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare @20 signed_multiply_error::@6 main signed_multiply_error::@4 signed_multiply_error::@5 signed_multiply_error::@2 signed_multiply_error::@3 signed_multiply_error::@1 @begin signed_multiply_error +signed_multiply_error::@7 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare @20 signed_multiply_error::@6 signed_multiply_error::@7 main signed_multiply_error::@4 signed_multiply_error::@5 signed_multiply_error::@2 signed_multiply_error::@3 signed_multiply_error::@1 @begin signed_multiply_error +signed_multiply_error::@8 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare @20 signed_multiply_error::@8 signed_multiply_error::@6 signed_multiply_error::@7 main signed_multiply_error::@4 signed_multiply_error::@5 signed_multiply_error::@2 signed_multiply_error::@3 signed_multiply_error::@1 @begin signed_multiply_error +signed_multiply_error::@return dominated by signed_multiply_error::@return main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare @20 signed_multiply_error::@8 signed_multiply_error::@6 signed_multiply_error::@7 main signed_multiply_error::@4 signed_multiply_error::@5 signed_multiply_error::@2 signed_multiply_error::@3 signed_multiply_error::@1 @begin signed_multiply_error +print_sword dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare print_sword @20 main signed_multiply_error::@4 signed_multiply_error::@5 signed_multiply_error::@2 signed_multiply_error::@3 signed_multiply_error::@1 @begin signed_multiply_error +print_sword::@2 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare print_sword @20 print_sword::@2 main signed_multiply_error::@4 signed_multiply_error::@5 signed_multiply_error::@2 signed_multiply_error::@3 signed_multiply_error::@1 @begin signed_multiply_error +print_sword::@4 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare print_sword @20 print_sword::@2 print_sword::@4 main signed_multiply_error::@4 signed_multiply_error::@5 signed_multiply_error::@2 signed_multiply_error::@3 signed_multiply_error::@1 @begin signed_multiply_error +print_sword::@1 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare print_sword @20 print_sword::@1 main signed_multiply_error::@4 signed_multiply_error::@5 signed_multiply_error::@2 signed_multiply_error::@3 signed_multiply_error::@1 @begin signed_multiply_error +print_sword::@return dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare print_sword @20 print_sword::@1 main signed_multiply_error::@4 signed_multiply_error::@5 signed_multiply_error::@2 signed_multiply_error::@3 signed_multiply_error::@1 @begin signed_multiply_error print_sword::@return +print_word dominated by print_word main::@1 main::@2 main::@3 @20 main @begin +print_word::@1 dominated by print_word main::@1 main::@2 main::@3 print_word::@1 @20 main @begin +print_word::@return dominated by print_word main::@1 main::@2 main::@3 print_word::@return print_word::@1 @20 main @begin +print_byte dominated by main::@1 main::@2 main::@3 print_byte @20 main @begin +print_byte::@1 dominated by main::@1 main::@2 main::@3 print_byte::@1 print_byte @20 main @begin +print_byte::@return dominated by main::@1 main::@2 main::@3 print_byte::@1 print_byte @20 main @begin print_byte::@return +print_char dominated by main::@1 main::@2 main::@3 @20 main print_char @begin +print_char::@return dominated by main::@1 main::@2 main::@3 @20 main print_char print_char::@return @begin +print_sbyte dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare print_sbyte @20 main signed_multiply_error::@1 @begin signed_multiply_error +print_sbyte::@2 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare print_sbyte @20 main print_sbyte::@2 signed_multiply_error::@1 @begin signed_multiply_error +print_sbyte::@4 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare print_sbyte @20 main print_sbyte::@4 print_sbyte::@2 signed_multiply_error::@1 @begin signed_multiply_error +print_sbyte::@1 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare print_sbyte @20 main print_sbyte::@1 signed_multiply_error::@1 @begin signed_multiply_error +print_sbyte::@return dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@4 signed_multiply_results_compare print_sbyte @20 main print_sbyte::@1 signed_multiply_error::@1 @begin print_sbyte::@return signed_multiply_error +signed_multiply dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@8 signed_multiply_results_compare @20 main @begin +signed_multiply::@6 dominated by main::@1 main::@2 signed_multiply::@6 main::@5 main::@3 main::@4 signed_multiply signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@8 signed_multiply_results_compare @20 main @begin +signed_multiply::@3 dominated by main::@1 main::@2 signed_multiply::@6 main::@5 main::@3 signed_multiply::@3 main::@4 signed_multiply signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@8 signed_multiply_results_compare @20 main @begin +signed_multiply::@1 dominated by main::@1 main::@2 signed_multiply::@6 main::@5 signed_multiply::@1 main::@3 main::@4 signed_multiply signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@8 signed_multiply_results_compare @20 main @begin +signed_multiply::@4 dominated by main::@1 main::@2 signed_multiply::@6 main::@5 signed_multiply::@1 main::@3 main::@4 signed_multiply::@4 signed_multiply signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@8 signed_multiply_results_compare @20 main @begin +signed_multiply::@2 dominated by main::@1 main::@2 signed_multiply::@6 main::@5 signed_multiply::@1 signed_multiply::@2 main::@3 main::@4 signed_multiply signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@8 signed_multiply_results_compare @20 main @begin +signed_multiply::@return dominated by main::@1 main::@2 signed_multiply::@6 main::@5 signed_multiply::@1 signed_multiply::@return signed_multiply::@2 main::@3 main::@4 signed_multiply signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare::@8 signed_multiply_results_compare @20 main @begin +multiply dominated by main::@1 main::@2 main::@3 main::@4 @20 main @begin multiply +multiply::@return dominated by main::@1 main::@2 main::@3 main::@4 @20 main multiply::@return @begin multiply +slow_signed_multiply dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare slow_signed_multiply @20 main @begin +slow_signed_multiply::@2 dominated by slow_signed_multiply::@2 main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare slow_signed_multiply @20 main @begin +slow_signed_multiply::@3 dominated by slow_signed_multiply::@3 main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare slow_signed_multiply @20 main @begin +slow_signed_multiply::@return dominated by slow_signed_multiply::@3 main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare slow_signed_multiply @20 main @begin slow_signed_multiply::@return +slow_signed_multiply::@1 dominated by slow_signed_multiply::@1 main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare slow_signed_multiply @20 main @begin +slow_signed_multiply::@5 dominated by slow_signed_multiply::@1 slow_signed_multiply::@5 main::@1 main::@2 main::@5 main::@3 main::@4 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare slow_signed_multiply @20 main @begin +multiply_results_compare dominated by main::@1 main::@2 main::@3 main::@4 multiply_results_compare @20 main @begin +multiply_results_compare::@1 dominated by main::@1 main::@2 main::@3 main::@4 multiply_results_compare multiply_results_compare::@1 @20 main @begin +multiply_results_compare::@2 dominated by main::@1 main::@2 main::@3 main::@4 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 @20 main @begin +multiply_results_compare::@8 dominated by main::@1 main::@2 main::@3 main::@4 multiply_results_compare::@8 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 @20 main @begin +multiply_results_compare::@9 dominated by main::@1 main::@2 main::@3 main::@4 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 @20 main @begin +multiply_results_compare::@4 dominated by main::@1 main::@2 main::@3 main::@4 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@4 @20 main @begin +multiply_results_compare::@return dominated by main::@1 main::@2 main::@3 main::@4 multiply_results_compare::@return multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 @20 main @begin +multiply_results_compare::@3 dominated by main::@1 main::@2 main::@3 main::@4 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@3 @20 main @begin +multiply_results_compare::@6 dominated by main::@1 main::@2 main::@3 main::@4 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@3 multiply_results_compare::@6 @20 main @begin +multiply_results_compare::@7 dominated by main::@1 main::@2 main::@3 main::@4 multiply_results_compare::@8 multiply_results_compare::@7 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@3 multiply_results_compare::@6 @20 main @begin +multiply_results_compare::@11 dominated by main::@1 main::@2 main::@3 main::@4 multiply_results_compare::@8 multiply_results_compare::@7 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@3 multiply_results_compare::@6 @20 main @begin multiply_results_compare::@11 +multiply_error dominated by main::@1 main::@2 main::@3 main::@4 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@4 @20 multiply_error main @begin +multiply_error::@1 dominated by main::@1 main::@2 main::@3 main::@4 multiply_error::@1 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@4 @20 multiply_error main @begin +multiply_error::@2 dominated by main::@1 main::@2 main::@3 main::@4 multiply_error::@2 multiply_error::@1 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@4 @20 multiply_error main @begin +multiply_error::@3 dominated by multiply_error::@3 main::@1 main::@2 main::@3 main::@4 multiply_error::@2 multiply_error::@1 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@4 @20 multiply_error main @begin +multiply_error::@4 dominated by multiply_error::@4 multiply_error::@3 main::@1 main::@2 main::@3 main::@4 multiply_error::@2 multiply_error::@1 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@4 @20 multiply_error main @begin +multiply_error::@5 dominated by multiply_error::@5 multiply_error::@4 multiply_error::@3 main::@1 main::@2 main::@3 main::@4 multiply_error::@2 multiply_error::@1 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@4 @20 multiply_error main @begin +multiply_error::@6 dominated by multiply_error::@6 multiply_error::@5 multiply_error::@4 multiply_error::@3 main::@1 main::@2 main::@3 main::@4 multiply_error::@2 multiply_error::@1 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@4 @20 multiply_error main @begin +multiply_error::@7 dominated by multiply_error::@6 multiply_error::@5 multiply_error::@4 multiply_error::@3 multiply_error::@7 main::@1 main::@2 main::@3 main::@4 multiply_error::@2 multiply_error::@1 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@4 @20 multiply_error main @begin +multiply_error::@8 dominated by multiply_error::@6 multiply_error::@5 multiply_error::@4 multiply_error::@3 multiply_error::@8 multiply_error::@7 main::@1 main::@2 main::@3 main::@4 multiply_error::@2 multiply_error::@1 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@4 @20 multiply_error main @begin +multiply_error::@return dominated by multiply_error::@6 multiply_error::@5 multiply_error::@4 multiply_error::@3 multiply_error::@8 multiply_error::@7 main::@1 main::@2 main::@3 main::@4 multiply_error::@2 multiply_error::@1 multiply_results_compare::@8 multiply_results_compare::@9 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 multiply_results_compare::@4 @20 multiply_error main @begin multiply_error::@return +slow_multiply dominated by main::@1 main::@2 main::@3 main::@4 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 @20 main @begin slow_multiply +slow_multiply::@2 dominated by main::@1 main::@2 main::@3 main::@4 slow_multiply::@2 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 @20 main @begin slow_multiply +slow_multiply::@1 dominated by main::@1 main::@2 main::@3 main::@4 slow_multiply::@1 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 @20 main @begin slow_multiply +slow_multiply::@return dominated by main::@1 main::@2 main::@3 main::@4 slow_multiply::@1 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 @20 main @begin slow_multiply slow_multiply::@return +multiply_tables_compare dominated by main::@1 main::@2 main::@3 @20 main @begin multiply_tables_compare +multiply_tables_compare::@1 dominated by main::@1 main::@2 main::@3 multiply_tables_compare::@1 @20 main @begin multiply_tables_compare +multiply_tables_compare::@3 dominated by main::@1 main::@2 main::@3 multiply_tables_compare::@3 multiply_tables_compare::@1 @20 main @begin multiply_tables_compare +multiply_tables_compare::@6 dominated by main::@1 main::@2 main::@3 multiply_tables_compare::@6 multiply_tables_compare::@3 multiply_tables_compare::@1 @20 main @begin multiply_tables_compare +multiply_tables_compare::@7 dominated by main::@1 main::@2 main::@3 multiply_tables_compare::@7 multiply_tables_compare::@6 multiply_tables_compare::@3 multiply_tables_compare::@1 @20 main @begin multiply_tables_compare +multiply_tables_compare::@8 dominated by main::@1 main::@2 main::@3 multiply_tables_compare::@7 multiply_tables_compare::@6 multiply_tables_compare::@8 multiply_tables_compare::@3 multiply_tables_compare::@1 @20 main @begin multiply_tables_compare +multiply_tables_compare::@return dominated by main::@1 main::@2 main::@3 multiply_tables_compare::@1 @20 main @begin multiply_tables_compare::@return multiply_tables_compare +multiply_tables_compare::@2 dominated by main::@1 main::@2 main::@3 multiply_tables_compare::@2 multiply_tables_compare::@1 @20 main @begin multiply_tables_compare +multiply_tables_compare::@5 dominated by main::@1 main::@2 main::@3 multiply_tables_compare::@2 multiply_tables_compare::@5 multiply_tables_compare::@1 @20 main @begin multiply_tables_compare +multiply_tables_compare::@10 dominated by main::@1 main::@2 main::@3 multiply_tables_compare::@2 multiply_tables_compare::@5 multiply_tables_compare::@1 multiply_tables_compare::@10 @20 main @begin multiply_tables_compare +init_multiply_asm dominated by main::@1 main::@2 init_multiply_asm @20 main @begin +init_multiply_asm::@return dominated by main::@1 main::@2 init_multiply_asm @20 init_multiply_asm::@return main @begin +init_multiply dominated by main::@1 @20 main @begin init_multiply +init_multiply::@1 dominated by main::@1 @20 main @begin init_multiply::@1 init_multiply +init_multiply::@5 dominated by main::@1 @20 main @begin init_multiply::@1 init_multiply::@5 init_multiply +init_multiply::@2 dominated by main::@1 @20 main @begin init_multiply::@1 init_multiply::@2 init_multiply +init_multiply::@3 dominated by main::@1 @20 main @begin init_multiply::@3 init_multiply::@1 init_multiply::@2 init_multiply +init_multiply::@4 dominated by main::@1 @20 main @begin init_multiply::@3 init_multiply::@4 init_multiply::@1 init_multiply::@2 init_multiply +init_multiply::@8 dominated by main::@1 @20 main @begin init_multiply::@3 init_multiply::@4 init_multiply::@1 init_multiply::@2 init_multiply::@8 init_multiply +init_multiply::@return dominated by main::@1 @20 init_multiply::@return main @begin init_multiply::@3 init_multiply::@4 init_multiply::@1 init_multiply::@2 init_multiply::@8 init_multiply +init_multiply::@12 dominated by init_multiply::@12 main::@1 @20 main @begin init_multiply::@3 init_multiply::@1 init_multiply::@2 init_multiply +print_cls dominated by print_cls @20 main @begin +print_cls::@1 dominated by print_cls @20 main @begin print_cls::@1 +print_cls::@return dominated by print_cls @20 main @begin print_cls::@return print_cls::@1 NATURAL LOOPS -Found back edge: Loop head: multiply_results_compare::@2 tails: multiply_results_compare::@3 blocks: null -Found back edge: Loop head: multiply_results_compare::@1 tails: multiply_results_compare::@6 blocks: null +Found back edge: Loop head: signed_multiply_results_compare::@2 tails: signed_multiply_results_compare::@3 blocks: null +Found back edge: Loop head: signed_multiply_results_compare::@1 tails: signed_multiply_results_compare::@6 blocks: null Found back edge: Loop head: print_ln::@1 tails: print_ln::@1 blocks: null Found back edge: Loop head: print_str::@1 tails: print_str::@2 blocks: null +Found back edge: Loop head: slow_signed_multiply::@2 tails: slow_signed_multiply::@2 blocks: null +Found back edge: Loop head: slow_signed_multiply::@5 tails: slow_signed_multiply::@5 blocks: null +Found back edge: Loop head: multiply_results_compare::@2 tails: multiply_results_compare::@3 blocks: null +Found back edge: Loop head: multiply_results_compare::@1 tails: multiply_results_compare::@6 blocks: null Found back edge: Loop head: slow_multiply::@2 tails: slow_multiply::@2 blocks: null Found back edge: Loop head: multiply_tables_compare::@1 tails: multiply_tables_compare::@2 blocks: null Found back edge: Loop head: init_multiply::@1 tails: init_multiply::@2 blocks: null Found back edge: Loop head: init_multiply::@3 tails: init_multiply::@4 blocks: null Found back edge: Loop head: print_cls::@1 tails: print_cls::@1 blocks: null -Populated: Loop head: multiply_results_compare::@2 tails: multiply_results_compare::@3 blocks: multiply_results_compare::@3 multiply_results_compare::@9 multiply_results_compare::@8 multiply_results_compare::@2 -Populated: Loop head: multiply_results_compare::@1 tails: multiply_results_compare::@6 blocks: multiply_results_compare::@6 multiply_results_compare::@3 multiply_results_compare::@9 multiply_results_compare::@8 multiply_results_compare::@2 multiply_results_compare::@1 +Populated: Loop head: signed_multiply_results_compare::@2 tails: signed_multiply_results_compare::@3 blocks: signed_multiply_results_compare::@3 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@2 +Populated: Loop head: signed_multiply_results_compare::@1 tails: signed_multiply_results_compare::@6 blocks: signed_multiply_results_compare::@6 signed_multiply_results_compare::@3 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 Populated: Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 Populated: Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 +Populated: Loop head: slow_signed_multiply::@2 tails: slow_signed_multiply::@2 blocks: slow_signed_multiply::@2 +Populated: Loop head: slow_signed_multiply::@5 tails: slow_signed_multiply::@5 blocks: slow_signed_multiply::@5 +Populated: Loop head: multiply_results_compare::@2 tails: multiply_results_compare::@3 blocks: multiply_results_compare::@3 multiply_results_compare::@9 multiply_results_compare::@8 multiply_results_compare::@2 +Populated: Loop head: multiply_results_compare::@1 tails: multiply_results_compare::@6 blocks: multiply_results_compare::@6 multiply_results_compare::@3 multiply_results_compare::@9 multiply_results_compare::@8 multiply_results_compare::@2 multiply_results_compare::@1 Populated: Loop head: slow_multiply::@2 tails: slow_multiply::@2 blocks: slow_multiply::@2 Populated: Loop head: multiply_tables_compare::@1 tails: multiply_tables_compare::@2 blocks: multiply_tables_compare::@2 multiply_tables_compare::@1 Populated: Loop head: init_multiply::@1 tails: init_multiply::@2 blocks: init_multiply::@2 init_multiply::@1 init_multiply::@5 Populated: Loop head: init_multiply::@3 tails: init_multiply::@4 blocks: init_multiply::@4 init_multiply::@12 init_multiply::@3 Populated: Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 -Loop head: multiply_results_compare::@2 tails: multiply_results_compare::@3 blocks: multiply_results_compare::@3 multiply_results_compare::@9 multiply_results_compare::@8 multiply_results_compare::@2 -Loop head: multiply_results_compare::@1 tails: multiply_results_compare::@6 blocks: multiply_results_compare::@6 multiply_results_compare::@3 multiply_results_compare::@9 multiply_results_compare::@8 multiply_results_compare::@2 multiply_results_compare::@1 +Loop head: signed_multiply_results_compare::@2 tails: signed_multiply_results_compare::@3 blocks: signed_multiply_results_compare::@3 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@2 +Loop head: signed_multiply_results_compare::@1 tails: signed_multiply_results_compare::@6 blocks: signed_multiply_results_compare::@6 signed_multiply_results_compare::@3 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 +Loop head: slow_signed_multiply::@2 tails: slow_signed_multiply::@2 blocks: slow_signed_multiply::@2 +Loop head: slow_signed_multiply::@5 tails: slow_signed_multiply::@5 blocks: slow_signed_multiply::@5 +Loop head: multiply_results_compare::@2 tails: multiply_results_compare::@3 blocks: multiply_results_compare::@3 multiply_results_compare::@9 multiply_results_compare::@8 multiply_results_compare::@2 +Loop head: multiply_results_compare::@1 tails: multiply_results_compare::@6 blocks: multiply_results_compare::@6 multiply_results_compare::@3 multiply_results_compare::@9 multiply_results_compare::@8 multiply_results_compare::@2 multiply_results_compare::@1 Loop head: slow_multiply::@2 tails: slow_multiply::@2 blocks: slow_multiply::@2 Loop head: multiply_tables_compare::@1 tails: multiply_tables_compare::@2 blocks: multiply_tables_compare::@2 multiply_tables_compare::@1 Loop head: init_multiply::@1 tails: init_multiply::@2 blocks: init_multiply::@2 init_multiply::@1 init_multiply::@5 @@ -3346,6 +5837,9 @@ Found 1 loops in scope [multiply_tables_compare] Found 2 loops in scope [multiply_results_compare] Loop head: multiply_results_compare::@2 tails: multiply_results_compare::@3 blocks: multiply_results_compare::@3 multiply_results_compare::@9 multiply_results_compare::@8 multiply_results_compare::@2 Loop head: multiply_results_compare::@1 tails: multiply_results_compare::@6 blocks: multiply_results_compare::@6 multiply_results_compare::@3 multiply_results_compare::@9 multiply_results_compare::@8 multiply_results_compare::@2 multiply_results_compare::@1 +Found 2 loops in scope [signed_multiply_results_compare] + Loop head: signed_multiply_results_compare::@2 tails: signed_multiply_results_compare::@3 blocks: signed_multiply_results_compare::@3 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@2 + Loop head: signed_multiply_results_compare::@1 tails: signed_multiply_results_compare::@6 blocks: signed_multiply_results_compare::@6 signed_multiply_results_compare::@3 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 Found 1 loops in scope [print_str] Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 Found 0 loops in scope [print_word] @@ -3354,12 +5848,24 @@ Found 1 loops in scope [print_ln] Found 1 loops in scope [slow_multiply] Loop head: slow_multiply::@2 tails: slow_multiply::@2 blocks: slow_multiply::@2 Found 0 loops in scope [multiply] +Found 0 loops in scope [multiply_error] +Found 2 loops in scope [slow_signed_multiply] + Loop head: slow_signed_multiply::@2 tails: slow_signed_multiply::@2 blocks: slow_signed_multiply::@2 + Loop head: slow_signed_multiply::@5 tails: slow_signed_multiply::@5 blocks: slow_signed_multiply::@5 +Found 0 loops in scope [signed_multiply] +Found 0 loops in scope [signed_multiply_error] Found 0 loops in scope [print_byte] +Found 0 loops in scope [print_sbyte] +Found 0 loops in scope [print_sword] Found 0 loops in scope [print_char] -Loop head: multiply_results_compare::@2 tails: multiply_results_compare::@3 blocks: multiply_results_compare::@3 multiply_results_compare::@9 multiply_results_compare::@8 multiply_results_compare::@2 depth: 2 -Loop head: multiply_results_compare::@1 tails: multiply_results_compare::@6 blocks: multiply_results_compare::@6 multiply_results_compare::@3 multiply_results_compare::@9 multiply_results_compare::@8 multiply_results_compare::@2 multiply_results_compare::@1 depth: 1 +Loop head: signed_multiply_results_compare::@2 tails: signed_multiply_results_compare::@3 blocks: signed_multiply_results_compare::@3 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@2 depth: 2 +Loop head: signed_multiply_results_compare::@1 tails: signed_multiply_results_compare::@6 blocks: signed_multiply_results_compare::@6 signed_multiply_results_compare::@3 signed_multiply_results_compare::@9 signed_multiply_results_compare::@8 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 depth: 1 Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 depth: 1 Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 depth: 1 +Loop head: slow_signed_multiply::@2 tails: slow_signed_multiply::@2 blocks: slow_signed_multiply::@2 depth: 3 +Loop head: slow_signed_multiply::@5 tails: slow_signed_multiply::@5 blocks: slow_signed_multiply::@5 depth: 3 +Loop head: multiply_results_compare::@2 tails: multiply_results_compare::@3 blocks: multiply_results_compare::@3 multiply_results_compare::@9 multiply_results_compare::@8 multiply_results_compare::@2 depth: 2 +Loop head: multiply_results_compare::@1 tails: multiply_results_compare::@6 blocks: multiply_results_compare::@6 multiply_results_compare::@3 multiply_results_compare::@9 multiply_results_compare::@8 multiply_results_compare::@2 multiply_results_compare::@1 depth: 1 Loop head: slow_multiply::@2 tails: slow_multiply::@2 blocks: slow_multiply::@2 depth: 3 Loop head: multiply_tables_compare::@1 tails: multiply_tables_compare::@2 blocks: multiply_tables_compare::@2 multiply_tables_compare::@1 depth: 1 Loop head: init_multiply::@1 tails: init_multiply::@2 blocks: init_multiply::@2 init_multiply::@1 init_multiply::@5 depth: 1 @@ -3375,15 +5881,19 @@ VARIABLE REGISTER WEIGHTS (byte[512]) asm_mul_sqr2_lo (byte*) char_cursor (byte*) char_cursor#1 11.0 -(byte*~) char_cursor#100 4.0 -(byte*) char_cursor#11 0.823529411764706 -(byte*) char_cursor#2 2.1818181818181817 -(byte*) char_cursor#20 0.3333333333333333 -(byte*) char_cursor#27 40.0 -(byte*) char_cursor#41 4.0 -(byte*) char_cursor#64 2.0 -(byte*) char_cursor#71 10.0 -(byte*~) char_cursor#89 4.0 +(byte*) char_cursor#117 1.6944444444444446 +(byte*) char_cursor#118 5.25 +(byte*) char_cursor#119 3.0 +(byte*) char_cursor#121 3.0 +(byte*) char_cursor#123 6.0 +(byte*) char_cursor#124 3.9999999999999996 +(byte*) char_cursor#135 24.0 +(byte*) char_cursor#17 0.7894736842105261 +(byte*~) char_cursor#172 4.0 +(byte*~) char_cursor#176 4.0 +(byte*~) char_cursor#197 4.0 +(byte*) char_cursor#27 0.27586206896551724 +(byte*) char_cursor#75 6.0 (void()) init_multiply() (byte~) init_multiply::$2 22.0 (byte~) init_multiply::$5 22.0 @@ -3421,11 +5931,10 @@ VARIABLE REGISTER WEIGHTS (void()) init_multiply_asm() (byte*) init_multiply_asm::mem (byte*) line_cursor -(byte*) line_cursor#1 5.857142857142857 -(byte*) line_cursor#11 24.0 -(byte*) line_cursor#17 0.18181818181818182 -(byte*) line_cursor#19 40.0 -(byte*) line_cursor#22 4.0 +(byte*) line_cursor#1 0.8181818181818181 +(byte*) line_cursor#20 24.0 +(byte*) line_cursor#27 0.1276595744680851 +(byte*) line_cursor#40 10.0 (void()) main() (byte[512]) mul_sqr1_hi (byte[512]) mul_sqr1_lo @@ -3433,25 +5942,39 @@ VARIABLE REGISTER WEIGHTS (byte[512]) mul_sqr2_lo (word()) multiply((byte) multiply::a , (byte) multiply::b) (byte) multiply::a -(byte) multiply::a#0 51.5 +(byte) multiply::a#0 2.0 +(byte) multiply::a#1 101.0 +(byte) multiply::a#2 105.0 (byte) multiply::b -(byte) multiply::b#0 51.5 +(byte) multiply::b#0 4.0 +(byte) multiply::b#1 202.0 +(byte) multiply::b#2 52.5 (byte*) multiply::memA (byte*) multiply::memB (word) multiply::return -(word) multiply::return#0 34.33333333333333 -(word) multiply::return#2 202.0 +(word) multiply::return#0 26.25 +(word) multiply::return#2 4.0 +(word) multiply::return#3 202.0 +(void()) multiply_error((byte) multiply_error::a , (byte) multiply_error::b , (word) multiply_error::ms , (word) multiply_error::ma) +(byte) multiply_error::a +(byte) multiply_error::a#0 0.6666666666666666 +(byte) multiply_error::b +(byte) multiply_error::b#0 0.4444444444444444 +(word) multiply_error::ma +(word) multiply_error::ma#0 0.26666666666666666 +(word) multiply_error::ms +(word) multiply_error::ms#0 0.3333333333333333 (void()) multiply_results_compare() (byte) multiply_results_compare::a (byte) multiply_results_compare::a#1 16.5 -(byte) multiply_results_compare::a#5 14.933333333333332 +(byte) multiply_results_compare::a#6 14.125 (byte) multiply_results_compare::b (byte) multiply_results_compare::b#1 151.5 -(byte) multiply_results_compare::b#2 33.666666666666664 +(byte) multiply_results_compare::b#2 29.0 (word) multiply_results_compare::ma -(word) multiply_results_compare::ma#0 25.5 +(word) multiply_results_compare::ma#0 34.0 (word) multiply_results_compare::ms -(word) multiply_results_compare::ms#0 22.666666666666664 +(word) multiply_results_compare::ms#0 20.4 (void()) multiply_tables_compare() (byte*) multiply_tables_compare::asm_sqr (byte*) multiply_tables_compare::asm_sqr#1 7.333333333333333 @@ -3465,30 +5988,88 @@ VARIABLE REGISTER WEIGHTS (byte) print_byte::b (byte) print_byte::b#0 4.0 (byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 2.0 +(byte) print_byte::b#2 4.0 +(byte) print_byte::b#3 4.0 +(byte) print_byte::b#4 4.0 +(byte) print_byte::b#5 3.5 (byte[]) print_byte::hextab (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#0 4.0 -(byte) print_char::ch#1 4.0 -(byte) print_char::ch#2 6.0 +(byte) print_char::ch#2 4.0 +(byte) print_char::ch#3 4.0 +(byte) print_char::ch#4 6.0 (void()) print_cls() (byte*) print_cls::sc (byte*) print_cls::sc#1 16.5 (byte*) print_cls::sc#2 16.5 (void()) print_ln() +(void()) print_sbyte((signed byte) print_sbyte::b) +(signed byte) print_sbyte::b +(signed byte) print_sbyte::b#0 4.0 +(signed byte) print_sbyte::b#1 4.0 +(signed byte) print_sbyte::b#2 4.0 +(signed byte) print_sbyte::b#3 2.5 +(signed byte) print_sbyte::b#4 6.0 (void()) print_str((byte*) print_str::str) (byte*) print_str::str (byte*) print_str::str#0 22.0 -(byte*) print_str::str#7 11.5 -(byte*) print_str::str#9 2.0 +(byte*) print_str::str#14 11.5 +(byte*) print_str::str#16 2.0 +(void()) print_sword((signed word) print_sword::w) +(signed word) print_sword::w +(signed word) print_sword::w#0 4.0 +(signed word) print_sword::w#1 4.0 +(signed word) print_sword::w#2 4.0 +(signed word) print_sword::w#3 2.5 +(signed word) print_sword::w#4 6.0 (void()) print_word((word) print_word::w) (word) print_word::w (word) print_word::w#0 4.0 (word) print_word::w#1 4.0 (word) print_word::w#2 4.0 (word) print_word::w#3 4.0 -(word) print_word::w#4 3.9999999999999996 +(word) print_word::w#4 4.0 +(word) print_word::w#5 4.666666666666666 +(signed word()) signed_multiply((signed byte) signed_multiply::a , (signed byte) signed_multiply::b) +(byte~) signed_multiply::$12 2.0 +(byte~) signed_multiply::$13 4.0 +(byte/signed byte/word/signed word~) signed_multiply::$16 4.0 +(byte/signed byte/word/signed word~) signed_multiply::$17 4.0 +(byte~) signed_multiply::$6 2.0 +(byte~) signed_multiply::$7 4.0 +(signed byte) signed_multiply::a +(signed byte) signed_multiply::a#0 7.133333333333335 +(signed byte) signed_multiply::b +(signed byte) signed_multiply::b#0 8.916666666666664 +(word) signed_multiply::m +(word) signed_multiply::m#0 1.6 +(word) signed_multiply::m#1 4.0 +(word) signed_multiply::m#2 4.0 +(word) signed_multiply::m#4 6.0 +(word) signed_multiply::m#5 2.0 +(signed word) signed_multiply::return +(signed word) signed_multiply::return#0 34.33333333333333 +(signed word) signed_multiply::return#2 202.0 +(void()) signed_multiply_error((signed byte) signed_multiply_error::a , (signed byte) signed_multiply_error::b , (signed word) signed_multiply_error::ms , (signed word) signed_multiply_error::ma) +(signed byte) signed_multiply_error::a +(signed byte) signed_multiply_error::a#0 0.6666666666666666 +(signed byte) signed_multiply_error::b +(signed byte) signed_multiply_error::b#0 0.4444444444444444 +(signed word) signed_multiply_error::ma +(signed word) signed_multiply_error::ma#0 0.26666666666666666 +(signed word) signed_multiply_error::ms +(signed word) signed_multiply_error::ms#0 0.3333333333333333 +(void()) signed_multiply_results_compare() +(signed byte) signed_multiply_results_compare::a +(signed byte) signed_multiply_results_compare::a#1 16.5 +(signed byte) signed_multiply_results_compare::a#6 14.125 +(signed byte) signed_multiply_results_compare::b +(signed byte) signed_multiply_results_compare::b#1 151.5 +(signed byte) signed_multiply_results_compare::b#2 29.0 +(signed word) signed_multiply_results_compare::ma +(signed word) signed_multiply_results_compare::ma#0 34.0 +(signed word) signed_multiply_results_compare::ms +(signed word) signed_multiply_results_compare::ms#0 20.4 (word()) slow_multiply((byte) slow_multiply::a , (byte) slow_multiply::b) (byte) slow_multiply::a (byte) slow_multiply::a#0 157.71428571428572 @@ -3503,16 +6084,45 @@ VARIABLE REGISTER WEIGHTS (word) slow_multiply::return (word) slow_multiply::return#0 367.33333333333337 (word) slow_multiply::return#2 202.0 +(signed word()) slow_signed_multiply((signed byte) slow_signed_multiply::a , (signed byte) slow_signed_multiply::b) +(signed byte) slow_signed_multiply::a +(signed byte) slow_signed_multiply::a#0 175.58333333333334 +(signed byte) slow_signed_multiply::b +(signed byte) slow_signed_multiply::b#0 191.1818181818182 +(signed byte) slow_signed_multiply::i +(signed byte) slow_signed_multiply::i#1 1501.5 +(signed byte) slow_signed_multiply::i#2 1001.0 +(signed byte) slow_signed_multiply::j +(signed byte) slow_signed_multiply::j#1 1501.5 +(signed byte) slow_signed_multiply::j#2 1001.0 +(signed word) slow_signed_multiply::m +(signed word) slow_signed_multiply::m#1 1001.0 +(signed word) slow_signed_multiply::m#2 1001.0 +(signed word) slow_signed_multiply::m#3 2002.0 +(signed word) slow_signed_multiply::m#5 2002.0 +(signed word) slow_signed_multiply::return +(signed word) slow_signed_multiply::return#0 701.0 +(signed word) slow_signed_multiply::return#2 202.0 Initial phi equivalence classes -[ multiply_results_compare::a#5 multiply_results_compare::a#1 ] +[ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ] +[ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ] +[ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ] +[ print_str::str#14 print_str::str#16 print_str::str#0 ] +[ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] +[ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] +[ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +[ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +[ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ] +[ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ] +[ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] +[ multiply::a#2 multiply::a#1 multiply::a#0 ] +[ multiply::b#2 multiply::b#1 multiply::b#0 ] +[ slow_signed_multiply::i#2 slow_signed_multiply::i#1 ] +[ slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 ] +[ slow_signed_multiply::j#2 slow_signed_multiply::j#1 ] +[ multiply_results_compare::a#6 multiply_results_compare::a#1 ] [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] -[ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 ] -[ print_str::str#7 print_str::str#9 print_str::str#0 ] -[ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] -[ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -[ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -[ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 ] [ slow_multiply::i#2 slow_multiply::i#1 ] [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] @@ -3527,29 +6137,61 @@ Initial phi equivalence classes [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] [ init_multiply::dir#2 init_multiply::dir#3 ] [ print_cls::sc#2 print_cls::sc#1 ] +Added variable slow_signed_multiply::a#0 to zero page equivalence class [ slow_signed_multiply::a#0 ] +Added variable slow_signed_multiply::b#0 to zero page equivalence class [ slow_signed_multiply::b#0 ] +Added variable slow_signed_multiply::return#2 to zero page equivalence class [ slow_signed_multiply::return#2 ] +Added variable signed_multiply_results_compare::ms#0 to zero page equivalence class [ signed_multiply_results_compare::ms#0 ] +Added variable signed_multiply::a#0 to zero page equivalence class [ signed_multiply::a#0 ] +Added variable signed_multiply::b#0 to zero page equivalence class [ signed_multiply::b#0 ] +Added variable signed_multiply::return#2 to zero page equivalence class [ signed_multiply::return#2 ] +Added variable signed_multiply_results_compare::ma#0 to zero page equivalence class [ signed_multiply_results_compare::ma#0 ] +Added variable signed_multiply_error::a#0 to zero page equivalence class [ signed_multiply_error::a#0 ] +Added variable signed_multiply_error::b#0 to zero page equivalence class [ signed_multiply_error::b#0 ] +Added variable signed_multiply_error::ms#0 to zero page equivalence class [ signed_multiply_error::ms#0 ] +Added variable signed_multiply_error::ma#0 to zero page equivalence class [ signed_multiply_error::ma#0 ] +Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ] +Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ] +Added variable multiply::return#2 to zero page equivalence class [ multiply::return#2 ] +Added variable signed_multiply::$6 to zero page equivalence class [ signed_multiply::$6 ] +Added variable signed_multiply::$7 to zero page equivalence class [ signed_multiply::$7 ] +Added variable signed_multiply::$16 to zero page equivalence class [ signed_multiply::$16 ] +Added variable signed_multiply::$12 to zero page equivalence class [ signed_multiply::$12 ] +Added variable signed_multiply::$13 to zero page equivalence class [ signed_multiply::$13 ] +Added variable signed_multiply::$17 to zero page equivalence class [ signed_multiply::$17 ] +Added variable signed_multiply::return#0 to zero page equivalence class [ signed_multiply::return#0 ] +Added variable multiply::return#0 to zero page equivalence class [ multiply::return#0 ] Added variable slow_multiply::a#0 to zero page equivalence class [ slow_multiply::a#0 ] Added variable slow_multiply::b#0 to zero page equivalence class [ slow_multiply::b#0 ] Added variable slow_multiply::return#2 to zero page equivalence class [ slow_multiply::return#2 ] Added variable multiply_results_compare::ms#0 to zero page equivalence class [ multiply_results_compare::ms#0 ] -Added variable multiply::a#0 to zero page equivalence class [ multiply::a#0 ] -Added variable multiply::b#0 to zero page equivalence class [ multiply::b#0 ] -Added variable multiply::return#2 to zero page equivalence class [ multiply::return#2 ] +Added variable multiply::return#3 to zero page equivalence class [ multiply::return#3 ] Added variable multiply_results_compare::ma#0 to zero page equivalence class [ multiply_results_compare::ma#0 ] -Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ] -Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ] -Added variable multiply::return#0 to zero page equivalence class [ multiply::return#0 ] +Added variable multiply_error::a#0 to zero page equivalence class [ multiply_error::a#0 ] +Added variable multiply_error::b#0 to zero page equivalence class [ multiply_error::b#0 ] +Added variable multiply_error::ms#0 to zero page equivalence class [ multiply_error::ms#0 ] +Added variable multiply_error::ma#0 to zero page equivalence class [ multiply_error::ma#0 ] Added variable init_multiply::$2 to zero page equivalence class [ init_multiply::$2 ] Added variable init_multiply::$5 to zero page equivalence class [ init_multiply::$5 ] Added variable init_multiply::$6 to zero page equivalence class [ init_multiply::$6 ] Complete equivalence classes -[ multiply_results_compare::a#5 multiply_results_compare::a#1 ] +[ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ] +[ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ] +[ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ] +[ print_str::str#14 print_str::str#16 print_str::str#0 ] +[ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] +[ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] +[ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +[ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +[ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ] +[ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ] +[ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] +[ multiply::a#2 multiply::a#1 multiply::a#0 ] +[ multiply::b#2 multiply::b#1 multiply::b#0 ] +[ slow_signed_multiply::i#2 slow_signed_multiply::i#1 ] +[ slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 ] +[ slow_signed_multiply::j#2 slow_signed_multiply::j#1 ] +[ multiply_results_compare::a#6 multiply_results_compare::a#1 ] [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] -[ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 ] -[ print_str::str#7 print_str::str#9 print_str::str#0 ] -[ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] -[ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -[ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -[ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 ] [ slow_multiply::i#2 slow_multiply::i#1 ] [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] @@ -3564,56 +6206,110 @@ Complete equivalence classes [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] [ init_multiply::dir#2 init_multiply::dir#3 ] [ print_cls::sc#2 print_cls::sc#1 ] +[ slow_signed_multiply::a#0 ] +[ slow_signed_multiply::b#0 ] +[ slow_signed_multiply::return#2 ] +[ signed_multiply_results_compare::ms#0 ] +[ signed_multiply::a#0 ] +[ signed_multiply::b#0 ] +[ signed_multiply::return#2 ] +[ signed_multiply_results_compare::ma#0 ] +[ signed_multiply_error::a#0 ] +[ signed_multiply_error::b#0 ] +[ signed_multiply_error::ms#0 ] +[ signed_multiply_error::ma#0 ] +[ print_byte::$0 ] +[ print_byte::$2 ] +[ multiply::return#2 ] +[ signed_multiply::$6 ] +[ signed_multiply::$7 ] +[ signed_multiply::$16 ] +[ signed_multiply::$12 ] +[ signed_multiply::$13 ] +[ signed_multiply::$17 ] +[ signed_multiply::return#0 ] +[ multiply::return#0 ] [ slow_multiply::a#0 ] [ slow_multiply::b#0 ] [ slow_multiply::return#2 ] [ multiply_results_compare::ms#0 ] -[ multiply::a#0 ] -[ multiply::b#0 ] -[ multiply::return#2 ] +[ multiply::return#3 ] [ multiply_results_compare::ma#0 ] -[ print_byte::$0 ] -[ print_byte::$2 ] -[ multiply::return#0 ] +[ multiply_error::a#0 ] +[ multiply_error::b#0 ] +[ multiply_error::ms#0 ] +[ multiply_error::ma#0 ] [ init_multiply::$2 ] [ init_multiply::$5 ] [ init_multiply::$6 ] -Allocated zp ZP_BYTE:2 [ multiply_results_compare::a#5 multiply_results_compare::a#1 ] -Allocated zp ZP_BYTE:3 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] -Allocated zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 ] -Allocated zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 ] -Allocated zp ZP_WORD:8 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] -Allocated zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Allocated zp ZP_BYTE:11 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Allocated zp ZP_WORD:12 [ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 ] -Allocated zp ZP_BYTE:14 [ slow_multiply::i#2 slow_multiply::i#1 ] -Allocated zp ZP_WORD:15 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] -Allocated zp ZP_WORD:17 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] -Allocated zp ZP_WORD:19 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ] -Allocated zp ZP_BYTE:21 [ init_multiply::c#2 init_multiply::c#1 ] -Allocated zp ZP_WORD:22 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] -Allocated zp ZP_WORD:24 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] -Allocated zp ZP_BYTE:26 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] -Allocated zp ZP_WORD:27 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] -Allocated zp ZP_BYTE:29 [ init_multiply::x_255#2 init_multiply::x_255#1 ] -Allocated zp ZP_WORD:30 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] -Allocated zp ZP_WORD:32 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] -Allocated zp ZP_BYTE:34 [ init_multiply::dir#2 init_multiply::dir#3 ] -Allocated zp ZP_WORD:35 [ print_cls::sc#2 print_cls::sc#1 ] -Allocated zp ZP_BYTE:37 [ slow_multiply::a#0 ] -Allocated zp ZP_BYTE:38 [ slow_multiply::b#0 ] -Allocated zp ZP_WORD:39 [ slow_multiply::return#2 ] -Allocated zp ZP_WORD:41 [ multiply_results_compare::ms#0 ] -Allocated zp ZP_BYTE:43 [ multiply::a#0 ] -Allocated zp ZP_BYTE:44 [ multiply::b#0 ] -Allocated zp ZP_WORD:45 [ multiply::return#2 ] -Allocated zp ZP_WORD:47 [ multiply_results_compare::ma#0 ] -Allocated zp ZP_BYTE:49 [ print_byte::$0 ] -Allocated zp ZP_BYTE:50 [ print_byte::$2 ] -Allocated zp ZP_WORD:51 [ multiply::return#0 ] -Allocated zp ZP_BYTE:53 [ init_multiply::$2 ] -Allocated zp ZP_BYTE:54 [ init_multiply::$5 ] -Allocated zp ZP_BYTE:55 [ init_multiply::$6 ] +Allocated zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ] +Allocated zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ] +Allocated zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ] +Allocated zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 ] +Allocated zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] +Allocated zp ZP_WORD:10 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] +Allocated zp ZP_BYTE:12 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +Allocated zp ZP_BYTE:13 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Allocated zp ZP_WORD:14 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ] +Allocated zp ZP_BYTE:16 [ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ] +Allocated zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] +Allocated zp ZP_BYTE:19 [ multiply::a#2 multiply::a#1 multiply::a#0 ] +Allocated zp ZP_BYTE:20 [ multiply::b#2 multiply::b#1 multiply::b#0 ] +Allocated zp ZP_BYTE:21 [ slow_signed_multiply::i#2 slow_signed_multiply::i#1 ] +Allocated zp ZP_WORD:22 [ slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 ] +Allocated zp ZP_BYTE:24 [ slow_signed_multiply::j#2 slow_signed_multiply::j#1 ] +Allocated zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] +Allocated zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] +Allocated zp ZP_BYTE:27 [ slow_multiply::i#2 slow_multiply::i#1 ] +Allocated zp ZP_WORD:28 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] +Allocated zp ZP_WORD:30 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] +Allocated zp ZP_WORD:32 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ] +Allocated zp ZP_BYTE:34 [ init_multiply::c#2 init_multiply::c#1 ] +Allocated zp ZP_WORD:35 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] +Allocated zp ZP_WORD:37 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] +Allocated zp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] +Allocated zp ZP_WORD:40 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] +Allocated zp ZP_BYTE:42 [ init_multiply::x_255#2 init_multiply::x_255#1 ] +Allocated zp ZP_WORD:43 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] +Allocated zp ZP_WORD:45 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] +Allocated zp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ] +Allocated zp ZP_WORD:48 [ print_cls::sc#2 print_cls::sc#1 ] +Allocated zp ZP_BYTE:50 [ slow_signed_multiply::a#0 ] +Allocated zp ZP_BYTE:51 [ slow_signed_multiply::b#0 ] +Allocated zp ZP_WORD:52 [ slow_signed_multiply::return#2 ] +Allocated zp ZP_WORD:54 [ signed_multiply_results_compare::ms#0 ] +Allocated zp ZP_BYTE:56 [ signed_multiply::a#0 ] +Allocated zp ZP_BYTE:57 [ signed_multiply::b#0 ] +Allocated zp ZP_WORD:58 [ signed_multiply::return#2 ] +Allocated zp ZP_WORD:60 [ signed_multiply_results_compare::ma#0 ] +Allocated zp ZP_BYTE:62 [ signed_multiply_error::a#0 ] +Allocated zp ZP_BYTE:63 [ signed_multiply_error::b#0 ] +Allocated zp ZP_WORD:64 [ signed_multiply_error::ms#0 ] +Allocated zp ZP_WORD:66 [ signed_multiply_error::ma#0 ] +Allocated zp ZP_BYTE:68 [ print_byte::$0 ] +Allocated zp ZP_BYTE:69 [ print_byte::$2 ] +Allocated zp ZP_WORD:70 [ multiply::return#2 ] +Allocated zp ZP_BYTE:72 [ signed_multiply::$6 ] +Allocated zp ZP_BYTE:73 [ signed_multiply::$7 ] +Allocated zp ZP_BYTE:74 [ signed_multiply::$16 ] +Allocated zp ZP_BYTE:75 [ signed_multiply::$12 ] +Allocated zp ZP_BYTE:76 [ signed_multiply::$13 ] +Allocated zp ZP_BYTE:77 [ signed_multiply::$17 ] +Allocated zp ZP_WORD:78 [ signed_multiply::return#0 ] +Allocated zp ZP_WORD:80 [ multiply::return#0 ] +Allocated zp ZP_BYTE:82 [ slow_multiply::a#0 ] +Allocated zp ZP_BYTE:83 [ slow_multiply::b#0 ] +Allocated zp ZP_WORD:84 [ slow_multiply::return#2 ] +Allocated zp ZP_WORD:86 [ multiply_results_compare::ms#0 ] +Allocated zp ZP_WORD:88 [ multiply::return#3 ] +Allocated zp ZP_WORD:90 [ multiply_results_compare::ma#0 ] +Allocated zp ZP_BYTE:92 [ multiply_error::a#0 ] +Allocated zp ZP_BYTE:93 [ multiply_error::b#0 ] +Allocated zp ZP_WORD:94 [ multiply_error::ms#0 ] +Allocated zp ZP_WORD:96 [ multiply_error::ma#0 ] +Allocated zp ZP_BYTE:98 [ init_multiply::$2 ] +Allocated zp ZP_BYTE:99 [ init_multiply::$5 ] +Allocated zp ZP_BYTE:100 [ init_multiply::$6 ] INITIAL ASM //SEG0 Basic Upstart @@ -3622,19 +6318,19 @@ INITIAL ASM .pc = $80d "Program" //SEG1 Global Constants & labels .const BGCOL = $d021 - .label char_cursor = $c + .label char_cursor = $e .label line_cursor = 4 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] -b13_from_bbegin: - jmp b13 -//SEG4 @13 -b13: +//SEG3 [1] phi from @begin to @20 [phi:@begin->@20] +b20_from_bbegin: + jmp b20 +//SEG4 @20 +b20: //SEG5 [2] call main param-assignment [ ] ( ) jsr main -//SEG6 [3] phi from @13 to @end [phi:@13->@end] -bend_from_b13: +//SEG6 [3] phi from @20 to @end [phi:@20->@end] +bend_from_b20: jmp bend //SEG7 @end bend: @@ -3644,7 +6340,7 @@ main: { lda #5 sta BGCOL //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] ) - //SEG11 [146] phi from main to print_cls [phi:main->print_cls] + //SEG11 [261] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] @@ -3653,7 +6349,7 @@ main: { //SEG13 main::@1 b1: //SEG14 [7] call init_multiply param-assignment [ ] ( main:2 [ ] ) - //SEG15 [117] phi from main::@1 to init_multiply [phi:main::@1->init_multiply] + //SEG15 [232] phi from main::@1 to init_multiply [phi:main::@1->init_multiply] init_multiply_from_b1: jsr init_multiply //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -3668,8 +6364,8 @@ main: { jmp b3 //SEG20 main::@3 b3: - //SEG21 [11] call multiply_tables_compare param-assignment [ line_cursor#17 char_cursor#20 ] ( main:2 [ line_cursor#17 char_cursor#20 ] ) - //SEG22 [90] phi from main::@3 to multiply_tables_compare [phi:main::@3->multiply_tables_compare] + //SEG21 [11] call multiply_tables_compare param-assignment [ line_cursor#27 char_cursor#27 ] ( main:2 [ line_cursor#27 char_cursor#27 ] ) + //SEG22 [205] phi from main::@3 to multiply_tables_compare [phi:main::@3->multiply_tables_compare] multiply_tables_compare_from_b3: jsr multiply_tables_compare //SEG23 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] @@ -3677,89 +6373,98 @@ main: { jmp b4 //SEG24 main::@4 b4: - //SEG25 [13] call multiply_results_compare param-assignment [ ] ( main:2 [ ] ) - //SEG26 [15] phi from main::@4 to multiply_results_compare [phi:main::@4->multiply_results_compare] + //SEG25 [13] call multiply_results_compare param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + //SEG26 [150] phi from main::@4 to multiply_results_compare [phi:main::@4->multiply_results_compare] multiply_results_compare_from_b4: jsr multiply_results_compare + //SEG27 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + b5_from_b4: + jmp b5 + //SEG28 main::@5 + b5: + //SEG29 [15] call signed_multiply_results_compare param-assignment [ ] ( main:2 [ ] ) + //SEG30 [17] phi from main::@5 to signed_multiply_results_compare [phi:main::@5->signed_multiply_results_compare] + signed_multiply_results_compare_from_b5: + jsr signed_multiply_results_compare jmp breturn - //SEG27 main::@return + //SEG31 main::@return breturn: - //SEG28 [14] return [ ] ( main:2 [ ] ) + //SEG32 [16] return [ ] ( main:2 [ ] ) rts } -//SEG29 multiply_results_compare -multiply_results_compare: { - .label ms = $29 - .label ma = $2f +//SEG33 signed_multiply_results_compare +signed_multiply_results_compare: { + .label ms = $36 + .label ma = $3c .label b = 3 .label a = 2 - //SEG30 [16] phi from multiply_results_compare to multiply_results_compare::@1 [phi:multiply_results_compare->multiply_results_compare::@1] - b1_from_multiply_results_compare: - //SEG31 [16] phi (byte) multiply_results_compare::a#5 = (byte/signed byte/word/signed word) 0 [phi:multiply_results_compare->multiply_results_compare::@1#0] -- vbuz1=vbuc1 - lda #0 + //SEG34 [18] phi from signed_multiply_results_compare to signed_multiply_results_compare::@1 [phi:signed_multiply_results_compare->signed_multiply_results_compare::@1] + b1_from_signed_multiply_results_compare: + //SEG35 [18] phi (signed byte) signed_multiply_results_compare::a#6 = -(byte/word/signed word) 128 [phi:signed_multiply_results_compare->signed_multiply_results_compare::@1#0] -- vbsz1=vbsc1 + lda #-$80 sta a jmp b1 - //SEG32 [16] phi from multiply_results_compare::@6 to multiply_results_compare::@1 [phi:multiply_results_compare::@6->multiply_results_compare::@1] + //SEG36 [18] phi from signed_multiply_results_compare::@6 to signed_multiply_results_compare::@1 [phi:signed_multiply_results_compare::@6->signed_multiply_results_compare::@1] b1_from_b6: - //SEG33 [16] phi (byte) multiply_results_compare::a#5 = (byte) multiply_results_compare::a#1 [phi:multiply_results_compare::@6->multiply_results_compare::@1#0] -- register_copy + //SEG37 [18] phi (signed byte) signed_multiply_results_compare::a#6 = (signed byte) signed_multiply_results_compare::a#1 [phi:signed_multiply_results_compare::@6->signed_multiply_results_compare::@1#0] -- register_copy jmp b1 - //SEG34 multiply_results_compare::@1 + //SEG38 signed_multiply_results_compare::@1 b1: - //SEG35 [17] phi from multiply_results_compare::@1 to multiply_results_compare::@2 [phi:multiply_results_compare::@1->multiply_results_compare::@2] + //SEG39 [19] phi from signed_multiply_results_compare::@1 to signed_multiply_results_compare::@2 [phi:signed_multiply_results_compare::@1->signed_multiply_results_compare::@2] b2_from_b1: - //SEG36 [17] phi (byte) multiply_results_compare::b#2 = (byte/signed byte/word/signed word) 0 [phi:multiply_results_compare::@1->multiply_results_compare::@2#0] -- vbuz1=vbuc1 - lda #0 + //SEG40 [19] phi (signed byte) signed_multiply_results_compare::b#2 = -(byte/word/signed word) 128 [phi:signed_multiply_results_compare::@1->signed_multiply_results_compare::@2#0] -- vbsz1=vbsc1 + lda #-$80 sta b jmp b2 - //SEG37 [17] phi from multiply_results_compare::@3 to multiply_results_compare::@2 [phi:multiply_results_compare::@3->multiply_results_compare::@2] + //SEG41 [19] phi from signed_multiply_results_compare::@3 to signed_multiply_results_compare::@2 [phi:signed_multiply_results_compare::@3->signed_multiply_results_compare::@2] b2_from_b3: - //SEG38 [17] phi (byte) multiply_results_compare::b#2 = (byte) multiply_results_compare::b#1 [phi:multiply_results_compare::@3->multiply_results_compare::@2#0] -- register_copy + //SEG42 [19] phi (signed byte) signed_multiply_results_compare::b#2 = (signed byte) signed_multiply_results_compare::b#1 [phi:signed_multiply_results_compare::@3->signed_multiply_results_compare::@2#0] -- register_copy jmp b2 - //SEG39 multiply_results_compare::@2 + //SEG43 signed_multiply_results_compare::@2 b2: - //SEG40 [18] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#5 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ) -- vbuz1=vbuz2 + //SEG44 [20] (signed byte) slow_signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 line_cursor#1 ] ) -- vbsz1=vbsz2 lda a - sta slow_multiply.a - //SEG41 [19] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ) -- vbuz1=vbuz2 + sta slow_signed_multiply.a + //SEG45 [21] (signed byte) slow_signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 slow_signed_multiply::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 slow_signed_multiply::b#0 line_cursor#1 ] ) -- vbsz1=vbsz2 lda b - sta slow_multiply.b - //SEG42 [20] call slow_multiply param-assignment [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ) - jsr slow_multiply - //SEG43 [21] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ) -- vwuz1=vwuz2 - lda slow_multiply.return - sta slow_multiply.return_2 - lda slow_multiply.return+1 - sta slow_multiply.return_2+1 + sta slow_signed_multiply.b + //SEG46 [22] call slow_signed_multiply param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#0 line_cursor#1 ] ) + jsr slow_signed_multiply + //SEG47 [23] (signed word) slow_signed_multiply::return#2 ← (signed word) slow_signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ) -- vwsz1=vwsz2 + lda slow_signed_multiply.return + sta slow_signed_multiply.return_2 + lda slow_signed_multiply.return+1 + sta slow_signed_multiply.return_2+1 jmp b8 - //SEG44 multiply_results_compare::@8 + //SEG48 signed_multiply_results_compare::@8 b8: - //SEG45 [22] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1=vwuz2 - lda slow_multiply.return_2 + //SEG49 [24] (signed word) signed_multiply_results_compare::ms#0 ← (signed word) slow_signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] ) -- vwsz1=vwsz2 + lda slow_signed_multiply.return_2 sta ms - lda slow_multiply.return_2+1 + lda slow_signed_multiply.return_2+1 sta ms+1 - //SEG46 [23] (byte) multiply::a#0 ← (byte) multiply_results_compare::a#5 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 line_cursor#17 char_cursor#20 ] ) -- vbuz1=vbuz2 + //SEG50 [25] (signed byte) signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 line_cursor#1 ] ) -- vbsz1=vbsz2 lda a - sta multiply.a - //SEG47 [24] (byte) multiply::b#0 ← (byte) multiply_results_compare::b#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 multiply::b#0 line_cursor#17 char_cursor#20 ] ) -- vbuz1=vbuz2 + sta signed_multiply.a + //SEG51 [26] (signed byte) signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 signed_multiply::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 signed_multiply::b#0 line_cursor#1 ] ) -- vbsz1=vbsz2 lda b - sta multiply.b - //SEG48 [25] call multiply param-assignment [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 line_cursor#17 char_cursor#20 ] ) - jsr multiply - //SEG49 [26] (word) multiply::return#2 ← (word) multiply::return#0 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#2 line_cursor#17 char_cursor#20 ] ) -- vwuz1=vwuz2 - lda multiply.return - sta multiply.return_2 - lda multiply.return+1 - sta multiply.return_2+1 + sta signed_multiply.b + //SEG52 [27] call signed_multiply param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#0 line_cursor#1 ] ) + jsr signed_multiply + //SEG53 [28] (signed word) signed_multiply::return#2 ← (signed word) signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#2 line_cursor#1 ] ) -- vwsz1=vwsz2 + lda signed_multiply.return + sta signed_multiply.return_2 + lda signed_multiply.return+1 + sta signed_multiply.return_2+1 jmp b9 - //SEG50 multiply_results_compare::@9 + //SEG54 signed_multiply_results_compare::@9 b9: - //SEG51 [27] (word) multiply_results_compare::ma#0 ← (word) multiply::return#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1=vwuz2 - lda multiply.return_2 + //SEG55 [29] (signed word) signed_multiply_results_compare::ma#0 ← (signed word) signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) -- vwsz1=vwsz2 + lda signed_multiply.return_2 sta ma - lda multiply.return_2+1 + lda signed_multiply.return_2+1 sta ma+1 - //SEG52 [28] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1_eq_vwuz2_then_la1 + //SEG56 [30] if((signed word) signed_multiply_results_compare::ms#0==(signed word) signed_multiply_results_compare::ma#0) goto signed_multiply_results_compare::@3 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) -- vwsz1_eq_vwsz2_then_la1 lda ms cmp ma bne !+ @@ -3768,132 +6473,93 @@ multiply_results_compare: { beq b3 !: jmp b4 - //SEG53 multiply_results_compare::@4 + //SEG57 signed_multiply_results_compare::@4 b4: - //SEG54 [29] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- _deref_pbuc1=vbuc2 + //SEG58 [31] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG55 [30] call print_str param-assignment [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) - //SEG56 [53] phi from multiply_results_compare::@4 to print_str [phi:multiply_results_compare::@4->print_str] - print_str_from_b4: - //SEG57 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#20 [phi:multiply_results_compare::@4->print_str#0] -- register_copy - //SEG58 [53] phi (byte*) print_str::str#9 = (const string) multiply_results_compare::str [phi:multiply_results_compare::@4->print_str#1] -- pbuz1=pbuc1 + //SEG59 [32] (signed byte) signed_multiply_error::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ) -- vbsz1=vbsz2 + lda a + sta signed_multiply_error.a + //SEG60 [33] (signed byte) signed_multiply_error::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ) -- vbsz1=vbsz2 + lda b + sta signed_multiply_error.b + //SEG61 [34] (signed word) signed_multiply_error::ms#0 ← (signed word) signed_multiply_results_compare::ms#0 [ signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 line_cursor#1 ] ) -- vwsz1=vwsz2 + lda ms + sta signed_multiply_error.ms + lda ms+1 + sta signed_multiply_error.ms+1 + //SEG62 [35] (signed word) signed_multiply_error::ma#0 ← (signed word) signed_multiply_results_compare::ma#0 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 ] ) -- vwsz1=vwsz2 + lda ma + sta signed_multiply_error.ma + lda ma+1 + sta signed_multiply_error.ma+1 + //SEG63 [36] call signed_multiply_error param-assignment [ ] ( main:2::signed_multiply_results_compare:15 [ ] ) + jsr signed_multiply_error + jmp breturn + //SEG64 signed_multiply_results_compare::@return + breturn: + //SEG65 [37] return [ ] ( main:2::signed_multiply_results_compare:15 [ ] ) + rts + //SEG66 signed_multiply_results_compare::@3 + b3: + //SEG67 [38] (signed byte) signed_multiply_results_compare::b#1 ← ++ (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ) -- vbsz1=_inc_vbsz1 + inc b + //SEG68 [39] if((signed byte) signed_multiply_results_compare::b#1!=-(byte/word/signed word) 128) goto signed_multiply_results_compare::@2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ) -- vbsz1_neq_vbsc1_then_la1 + lda b + cmp #-$80 + bne b2_from_b3 + jmp b6 + //SEG69 signed_multiply_results_compare::@6 + b6: + //SEG70 [40] (signed byte) signed_multiply_results_compare::a#1 ← ++ (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ) -- vbsz1=_inc_vbsz1 + inc a + //SEG71 [41] if((signed byte) signed_multiply_results_compare::a#1!=-(byte/word/signed word) 128) goto signed_multiply_results_compare::@1 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ) -- vbsz1_neq_vbsc1_then_la1 + lda a + cmp #-$80 + bne b1_from_b6 + jmp b7 + //SEG72 signed_multiply_results_compare::@7 + b7: + //SEG73 [42] (byte*~) char_cursor#176 ← (byte*) line_cursor#1 [ char_cursor#176 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ char_cursor#176 line_cursor#1 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG74 [43] call print_str param-assignment [ line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15 [ line_cursor#1 char_cursor#117 ] ) + //SEG75 [51] phi from signed_multiply_results_compare::@7 to print_str [phi:signed_multiply_results_compare::@7->print_str] + print_str_from_b7: + //SEG76 [51] phi (byte*) char_cursor#135 = (byte*~) char_cursor#176 [phi:signed_multiply_results_compare::@7->print_str#0] -- register_copy + //SEG77 [51] phi (byte*) print_str::str#16 = (const string) signed_multiply_results_compare::str [phi:signed_multiply_results_compare::@7->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - jmp b10 - //SEG59 multiply_results_compare::@10 - b10: - //SEG60 [31] (word) print_word::w#2 ← (word) multiply_results_compare::ms#0 [ multiply_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ) -- vwuz1=vwuz2 - lda ms - sta print_word.w - lda ms+1 - sta print_word.w+1 - //SEG61 [32] call print_word param-assignment [ multiply_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ) - //SEG62 [60] phi from multiply_results_compare::@10 to print_word [phi:multiply_results_compare::@10->print_word] - print_word_from_b10: - //SEG63 [60] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:multiply_results_compare::@10->print_word#0] -- register_copy - jsr print_word - //SEG64 [33] phi from multiply_results_compare::@10 to multiply_results_compare::@11 [phi:multiply_results_compare::@10->multiply_results_compare::@11] - b11_from_b10: + //SEG78 [44] phi from signed_multiply_results_compare::@7 to signed_multiply_results_compare::@11 [phi:signed_multiply_results_compare::@7->signed_multiply_results_compare::@11] + b11_from_b7: jmp b11 - //SEG65 multiply_results_compare::@11 + //SEG79 signed_multiply_results_compare::@11 b11: - //SEG66 [34] call print_str param-assignment [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) - //SEG67 [53] phi from multiply_results_compare::@11 to print_str [phi:multiply_results_compare::@11->print_str] - print_str_from_b11: - //SEG68 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#11 [phi:multiply_results_compare::@11->print_str#0] -- register_copy - //SEG69 [53] phi (byte*) print_str::str#9 = (const string) multiply_results_compare::str1 [phi:multiply_results_compare::@11->print_str#1] -- pbuz1=pbuc1 - lda #str1 - sta print_str.str+1 - jsr print_str - jmp b12 - //SEG70 multiply_results_compare::@12 - b12: - //SEG71 [35] (word) print_word::w#3 ← (word) multiply_results_compare::ma#0 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ) -- vwuz1=vwuz2 - lda ma - sta print_word.w - lda ma+1 - sta print_word.w+1 - //SEG72 [36] call print_word param-assignment [ char_cursor#11 line_cursor#17 ] ( main:2::multiply_results_compare:13 [ char_cursor#11 line_cursor#17 ] ) - //SEG73 [60] phi from multiply_results_compare::@12 to print_word [phi:multiply_results_compare::@12->print_word] - print_word_from_b12: - //SEG74 [60] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:multiply_results_compare::@12->print_word#0] -- register_copy - jsr print_word - //SEG75 [37] phi from multiply_results_compare::@12 multiply_results_compare::@14 to multiply_results_compare::@return [phi:multiply_results_compare::@12/multiply_results_compare::@14->multiply_results_compare::@return] - breturn_from_b12: - breturn_from_b14: - //SEG76 [37] phi (byte*) line_cursor#19 = (byte*) line_cursor#17 [phi:multiply_results_compare::@12/multiply_results_compare::@14->multiply_results_compare::@return#0] -- register_copy - //SEG77 [37] phi (byte*) char_cursor#27 = (byte*) char_cursor#11 [phi:multiply_results_compare::@12/multiply_results_compare::@14->multiply_results_compare::@return#1] -- register_copy - jmp breturn - //SEG78 multiply_results_compare::@return - breturn: - //SEG79 [38] return [ ] ( main:2::multiply_results_compare:13 [ ] ) - rts - //SEG80 multiply_results_compare::@3 - b3: - //SEG81 [39] (byte) multiply_results_compare::b#1 ← ++ (byte) multiply_results_compare::b#2 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1=_inc_vbuz1 - inc b - //SEG82 [40] if((byte) multiply_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@2 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1_neq_0_then_la1 - lda b - bne b2_from_b3 - jmp b6 - //SEG83 multiply_results_compare::@6 - b6: - //SEG84 [41] (byte) multiply_results_compare::a#1 ← ++ (byte) multiply_results_compare::a#5 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1=_inc_vbuz1 - inc a - //SEG85 [42] if((byte) multiply_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@1 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1_neq_0_then_la1 - lda a - bne b1_from_b6 - //SEG86 [43] phi from multiply_results_compare::@6 to multiply_results_compare::@7 [phi:multiply_results_compare::@6->multiply_results_compare::@7] - b7_from_b6: - jmp b7 - //SEG87 multiply_results_compare::@7 - b7: - //SEG88 [44] call print_str param-assignment [ line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#17 char_cursor#2 ] ) - //SEG89 [53] phi from multiply_results_compare::@7 to print_str [phi:multiply_results_compare::@7->print_str] - print_str_from_b7: - //SEG90 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#20 [phi:multiply_results_compare::@7->print_str#0] -- register_copy - //SEG91 [53] phi (byte*) print_str::str#9 = (const string) multiply_results_compare::str2 [phi:multiply_results_compare::@7->print_str#1] -- pbuz1=pbuc1 - lda #str2 - sta print_str.str+1 - jsr print_str - //SEG92 [45] phi from multiply_results_compare::@7 to multiply_results_compare::@14 [phi:multiply_results_compare::@7->multiply_results_compare::@14] - b14_from_b7: - jmp b14 - //SEG93 multiply_results_compare::@14 - b14: - //SEG94 [46] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) - //SEG95 [48] phi from multiply_results_compare::@14 to print_ln [phi:multiply_results_compare::@14->print_ln] - print_ln_from_b14: - //SEG96 [48] phi (byte*) line_cursor#22 = (byte*) line_cursor#17 [phi:multiply_results_compare::@14->print_ln#0] -- register_copy + //SEG80 [45] call print_ln param-assignment [ ] ( main:2::signed_multiply_results_compare:15 [ ] ) + //SEG81 [46] phi from signed_multiply_results_compare::@11 to print_ln [phi:signed_multiply_results_compare::@11->print_ln] + print_ln_from_b11: + //SEG82 [46] phi (byte*) char_cursor#118 = (byte*) char_cursor#117 [phi:signed_multiply_results_compare::@11->print_ln#0] -- register_copy + //SEG83 [46] phi (byte*) line_cursor#40 = (byte*) line_cursor#1 [phi:signed_multiply_results_compare::@11->print_ln#1] -- register_copy jsr print_ln - //SEG97 [47] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ char_cursor#89 line_cursor#1 ] ( main:2::multiply_results_compare:13 [ char_cursor#89 line_cursor#1 ] ) -- pbuz1=pbuz2 - lda line_cursor - sta char_cursor - lda line_cursor+1 - sta char_cursor+1 - jmp breturn_from_b14 - str: .text "multiply mismatch slow:@" - str1: .text " / fast asm:" - str2: .text "multiply results match!@" + jmp breturn + str: .text "signed multiply results match!@" } -//SEG98 print_ln +//SEG84 print_ln print_ln: { - //SEG99 [49] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG85 [47] 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: - //SEG100 [49] phi (byte*) line_cursor#11 = (byte*) line_cursor#22 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG86 [47] phi (byte*) line_cursor#20 = (byte*) line_cursor#40 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG101 print_ln::@1 + //SEG87 print_ln::@1 b1: - //SEG102 [50] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG88 [48] (byte*) line_cursor#1 ← (byte*) line_cursor#20 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 char_cursor#118 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda line_cursor clc adc #$28 @@ -3901,7 +6567,7 @@ print_ln: { bcc !+ inc line_cursor+1 !: - //SEG103 [51] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1_lt_pbuz2_then_la1 + //SEG89 [49] if((byte*) line_cursor#1<(byte*) char_cursor#118) goto print_ln::@1 [ line_cursor#1 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 char_cursor#118 ] ) -- pbuz1_lt_pbuz2_then_la1 lda line_cursor+1 cmp char_cursor+1 bcc b1_from_b1 @@ -3911,160 +6577,510 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG104 print_ln::@return + //SEG90 print_ln::@return breturn: - //SEG105 [52] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 ] ) + //SEG91 [50] return [ line_cursor#1 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 ] ) rts } -//SEG106 print_str +//SEG92 print_str print_str: { .label str = 6 - //SEG107 [54] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG93 [52] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG108 [54] phi (byte*) char_cursor#2 = (byte*) char_cursor#71 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG109 [54] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG94 [52] phi (byte*) char_cursor#117 = (byte*) char_cursor#135 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG95 [52] phi (byte*) print_str::str#14 = (byte*) print_str::str#16 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG110 print_str::@1 + //SEG96 print_str::@1 b1: - //SEG111 [55] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG97 [53] if(*((byte*) print_str::str#14)!=(byte) '@') goto print_str::@2 [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG112 print_str::@return + //SEG98 print_str::@return breturn: - //SEG113 [56] return [ char_cursor#2 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 ] ) + //SEG99 [54] return [ char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 ] ) rts - //SEG114 print_str::@2 + //SEG100 print_str::@2 b2: - //SEG115 [57] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1=_deref_pbuz2 + //SEG101 [55] *((byte*) char_cursor#117) ← *((byte*) print_str::str#14) [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (char_cursor),y - //SEG116 [58] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#7 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 print_str::str#7 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:107 [ print_str::str#7 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG102 [56] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#117 [ print_str::str#14 char_cursor#1 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#14 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 print_str::str#14 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:222 [ print_str::str#14 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: - //SEG117 [59] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:107 [ print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG103 [57] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#14 [ print_str::str#0 char_cursor#1 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:222 [ print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG118 print_word -print_word: { - .label w = 8 - //SEG119 [61] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ) -- vbuz1=_hi_vwuz2 - lda w+1 - sta print_byte.b - //SEG120 [62] call print_byte param-assignment [ char_cursor#11 print_word::w#4 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_word::w#4 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 print_word::w#4 ] ) - //SEG121 [66] phi from print_word to print_byte [phi:print_word->print_byte] - print_byte_from_print_word: - //SEG122 [66] phi (byte*) char_cursor#64 = (byte*) char_cursor#2 [phi:print_word->print_byte#0] -- register_copy - //SEG123 [66] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy - jsr print_byte +//SEG104 signed_multiply_error +signed_multiply_error: { + .label a = $3e + .label b = $3f + .label ms = $40 + .label ma = $42 + //SEG105 [58] (byte*~) char_cursor#172 ← (byte*) line_cursor#1 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#172 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#172 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG106 [59] call print_str param-assignment [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + //SEG107 [51] phi from signed_multiply_error to print_str [phi:signed_multiply_error->print_str] + print_str_from_signed_multiply_error: + //SEG108 [51] phi (byte*) char_cursor#135 = (byte*~) char_cursor#172 [phi:signed_multiply_error->print_str#0] -- register_copy + //SEG109 [51] phi (byte*) print_str::str#16 = (const string) signed_multiply_error::str [phi:signed_multiply_error->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str jmp b1 - //SEG124 print_word::@1 + //SEG110 signed_multiply_error::@1 b1: - //SEG125 [63] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 print_byte::b#1 ] ) -- vbuz1=_lo_vwuz2 - lda w - sta print_byte.b - //SEG126 [64] call print_byte param-assignment [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 ] ) - //SEG127 [66] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - print_byte_from_b1: - //SEG128 [66] phi (byte*) char_cursor#64 = (byte*) char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG129 [66] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy - jsr print_byte + //SEG111 [60] (signed byte) print_sbyte::b#1 ← (signed byte) signed_multiply_error::a#0 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#1 ] ) -- vbsz1=vbsz2 + lda a + sta print_sbyte.b + //SEG112 [61] call print_sbyte param-assignment [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + //SEG113 [104] phi from signed_multiply_error::@1 to print_sbyte [phi:signed_multiply_error::@1->print_sbyte] + print_sbyte_from_b1: + //SEG114 [104] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:signed_multiply_error::@1->print_sbyte#0] -- register_copy + jsr print_sbyte + //SEG115 [62] phi from signed_multiply_error::@1 to signed_multiply_error::@2 [phi:signed_multiply_error::@1->signed_multiply_error::@2] + b2_from_b1: + jmp b2 + //SEG116 signed_multiply_error::@2 + b2: + //SEG117 [63] call print_str param-assignment [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + //SEG118 [51] phi from signed_multiply_error::@2 to print_str [phi:signed_multiply_error::@2->print_str] + print_str_from_b2: + //SEG119 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:signed_multiply_error::@2->print_str#0] -- register_copy + //SEG120 [51] phi (byte*) print_str::str#16 = (const string) signed_multiply_error::str1 [phi:signed_multiply_error::@2->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + jmp b3 + //SEG121 signed_multiply_error::@3 + b3: + //SEG122 [64] (signed byte) print_sbyte::b#2 ← (signed byte) signed_multiply_error::b#0 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#2 ] ) -- vbsz1=vbsz2 + lda b + sta print_sbyte.b + //SEG123 [65] call print_sbyte param-assignment [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + //SEG124 [104] phi from signed_multiply_error::@3 to print_sbyte [phi:signed_multiply_error::@3->print_sbyte] + print_sbyte_from_b3: + //SEG125 [104] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:signed_multiply_error::@3->print_sbyte#0] -- register_copy + jsr print_sbyte + //SEG126 [66] phi from signed_multiply_error::@3 to signed_multiply_error::@4 [phi:signed_multiply_error::@3->signed_multiply_error::@4] + b4_from_b3: + jmp b4 + //SEG127 signed_multiply_error::@4 + b4: + //SEG128 [67] call print_str param-assignment [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + //SEG129 [51] phi from signed_multiply_error::@4 to print_str [phi:signed_multiply_error::@4->print_str] + print_str_from_b4: + //SEG130 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:signed_multiply_error::@4->print_str#0] -- register_copy + //SEG131 [51] phi (byte*) print_str::str#16 = (const string) signed_multiply_error::str2 [phi:signed_multiply_error::@4->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + jmp b5 + //SEG132 signed_multiply_error::@5 + b5: + //SEG133 [68] (signed word) print_sword::w#1 ← (signed word) signed_multiply_error::ms#0 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#1 ] ) -- vwsz1=vwsz2 + lda ms + sta print_sword.w + lda ms+1 + sta print_sword.w+1 + //SEG134 [69] call print_sword param-assignment [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + //SEG135 [77] phi from signed_multiply_error::@5 to print_sword [phi:signed_multiply_error::@5->print_sword] + print_sword_from_b5: + //SEG136 [77] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:signed_multiply_error::@5->print_sword#0] -- register_copy + jsr print_sword + //SEG137 [70] phi from signed_multiply_error::@5 to signed_multiply_error::@6 [phi:signed_multiply_error::@5->signed_multiply_error::@6] + b6_from_b5: + jmp b6 + //SEG138 signed_multiply_error::@6 + b6: + //SEG139 [71] call print_str param-assignment [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + //SEG140 [51] phi from signed_multiply_error::@6 to print_str [phi:signed_multiply_error::@6->print_str] + print_str_from_b6: + //SEG141 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:signed_multiply_error::@6->print_str#0] -- register_copy + //SEG142 [51] phi (byte*) print_str::str#16 = (const string) signed_multiply_error::str3 [phi:signed_multiply_error::@6->print_str#1] -- pbuz1=pbuc1 + lda #str3 + sta print_str.str+1 + jsr print_str + jmp b7 + //SEG143 signed_multiply_error::@7 + b7: + //SEG144 [72] (signed word) print_sword::w#2 ← (signed word) signed_multiply_error::ma#0 [ line_cursor#1 char_cursor#117 print_sword::w#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ line_cursor#1 char_cursor#117 print_sword::w#2 ] ) -- vwsz1=vwsz2 + lda ma + sta print_sword.w + lda ma+1 + sta print_sword.w+1 + //SEG145 [73] call print_sword param-assignment [ line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ line_cursor#1 char_cursor#17 ] ) + //SEG146 [77] phi from signed_multiply_error::@7 to print_sword [phi:signed_multiply_error::@7->print_sword] + print_sword_from_b7: + //SEG147 [77] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:signed_multiply_error::@7->print_sword#0] -- register_copy + jsr print_sword + //SEG148 [74] phi from signed_multiply_error::@7 to signed_multiply_error::@8 [phi:signed_multiply_error::@7->signed_multiply_error::@8] + b8_from_b7: + jmp b8 + //SEG149 signed_multiply_error::@8 + b8: + //SEG150 [75] call print_ln param-assignment [ ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ ] ) + //SEG151 [46] phi from signed_multiply_error::@8 to print_ln [phi:signed_multiply_error::@8->print_ln] + print_ln_from_b8: + //SEG152 [46] phi (byte*) char_cursor#118 = (byte*) char_cursor#17 [phi:signed_multiply_error::@8->print_ln#0] -- register_copy + //SEG153 [46] phi (byte*) line_cursor#40 = (byte*) line_cursor#1 [phi:signed_multiply_error::@8->print_ln#1] -- register_copy + jsr print_ln jmp breturn - //SEG130 print_word::@return + //SEG154 signed_multiply_error::@return breturn: - //SEG131 [65] return [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 ] ) + //SEG155 [76] return [ ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ ] ) + rts + str: .text "signed multiply mismatch @" + str1: .text "*@" + str2: .text " slow:@" + str3: .text " / fast asm:@" +} +//SEG156 print_sword +print_sword: { + .label w = 8 + //SEG157 [78] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word) 0) goto print_sword::@1 [ char_cursor#117 print_sword::w#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#117 print_sword::w#3 ] ) -- vwsz1_ge_0_then_la1 + lda w+1 + bpl b1_from_print_sword + //SEG158 [79] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + b2_from_print_sword: + jmp b2 + //SEG159 print_sword::@2 + b2: + //SEG160 [80] call print_char param-assignment [ char_cursor#17 print_sword::w#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sword::w#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 print_sword::w#3 ] ) + //SEG161 [100] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + print_char_from_b2: + //SEG162 [100] phi (byte*) char_cursor#75 = (byte*) char_cursor#117 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG163 [100] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + lda #'-' + sta print_char.ch + jsr print_char + jmp b4 + //SEG164 print_sword::@4 + b4: + //SEG165 [81] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ char_cursor#17 print_sword::w#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sword::w#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 print_sword::w#0 ] ) -- vwsz1=_neg_vwsz1 + sec + lda w + eor #$ff + adc #0 + sta w + lda w+1 + eor #$ff + adc #0 + sta w+1 + //SEG166 [82] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + b1_from_print_sword: + b1_from_b4: + //SEG167 [82] phi (byte*) char_cursor#119 = (byte*) char_cursor#117 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG168 [82] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + jmp b1 + //SEG169 print_sword::@1 + b1: + //SEG170 [83] (word) print_word::w#0 ← ((word)) (signed word) print_sword::w#4 [ char_cursor#119 print_word::w#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#119 print_word::w#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#119 print_word::w#0 ] ) -- vwuz1=_word_vwsz2 + lda w + sta print_word.w + lda w+1 + sta print_word.w+1 + //SEG171 [84] call print_word param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 ] ) + //SEG172 [86] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + print_word_from_b1: + //SEG173 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#119 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG174 [86] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy + jsr print_word + jmp breturn + //SEG175 print_sword::@return + breturn: + //SEG176 [85] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 ] ) rts } -//SEG132 print_byte +//SEG177 print_word +print_word: { + .label w = $a + //SEG178 [87] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:215 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] ) -- vbuz1=_hi_vwuz2 + lda w+1 + sta print_byte.b + //SEG179 [88] call print_byte param-assignment [ char_cursor#17 print_word::w#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_word::w#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 print_word::w#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_word::w#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 print_word::w#5 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_word::w#5 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 print_word::w#5 ] ) + //SEG180 [92] phi from print_word to print_byte [phi:print_word->print_byte] + print_byte_from_print_word: + //SEG181 [92] phi (byte*) char_cursor#124 = (byte*) char_cursor#123 [phi:print_word->print_byte#0] -- register_copy + //SEG182 [92] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + jsr print_byte + jmp b1 + //SEG183 print_word::@1 + b1: + //SEG184 [89] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ char_cursor#17 print_byte::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 print_byte::b#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::b#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 print_byte::b#2 ] ) -- vbuz1=_lo_vwuz2 + lda w + sta print_byte.b + //SEG185 [90] call print_byte param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 ] ) + //SEG186 [92] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + print_byte_from_b1: + //SEG187 [92] phi (byte*) char_cursor#124 = (byte*) char_cursor#17 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG188 [92] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + jsr print_byte + jmp breturn + //SEG189 print_word::@return + breturn: + //SEG190 [91] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 ] ) + rts +} +//SEG191 print_byte print_byte: { - .label _0 = $31 - .label _2 = $32 - .label b = $a - //SEG133 [67] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ) -- vbuz1=vbuz2_ror_4 + .label _0 = $44 + .label _2 = $45 + .label b = $c + //SEG192 [93] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] ) -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG134 [68] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG193 [94] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx _0 lda hextab,x sta print_char.ch - //SEG135 [69] call print_char param-assignment [ char_cursor#11 print_byte::b#2 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::b#2 ] ) - //SEG136 [74] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG194 [95] call print_char param-assignment [ char_cursor#17 print_byte::b#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] ) + //SEG195 [100] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG137 [74] phi (byte*) char_cursor#41 = (byte*) char_cursor#64 [phi:print_byte->print_char#0] -- register_copy - //SEG138 [74] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG196 [100] phi (byte*) char_cursor#75 = (byte*) char_cursor#124 [phi:print_byte->print_char#0] -- register_copy + //SEG197 [100] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG139 print_byte::@1 + //SEG198 print_byte::@1 b1: - //SEG140 [70] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 + //SEG199 [96] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word) 15 [ char_cursor#17 print_byte::$2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 lda b and #$f sta _2 - //SEG141 [71] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG200 [97] (byte) print_char::ch#3 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#17 print_char::ch#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx _2 lda hextab,x sta print_char.ch - //SEG142 [72] call print_char param-assignment [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) - //SEG143 [74] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG201 [98] call print_char param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] ) + //SEG202 [100] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG144 [74] phi (byte*) char_cursor#41 = (byte*) char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG145 [74] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG203 [100] phi (byte*) char_cursor#75 = (byte*) char_cursor#17 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG204 [100] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG146 print_byte::@return + //SEG205 print_byte::@return breturn: - //SEG147 [73] return [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + //SEG206 [99] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] ) rts - hextab: .byte '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' + hextab: .text "0123456789abcdef" } -//SEG148 print_char +//SEG207 print_char print_char: { - .label ch = $b - //SEG149 [75] *((byte*) char_cursor#41) ← (byte) print_char::ch#2 [ char_cursor#41 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#41 ] ) -- _deref_pbuz1=vbuz2 + .label ch = $d + //SEG208 [101] *((byte*) char_cursor#75) ← (byte) print_char::ch#4 [ char_cursor#75 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#75 ] ) -- _deref_pbuz1=vbuz2 ldy #0 lda ch sta (char_cursor),y - //SEG150 [76] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#41 [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) -- pbuz1=_inc_pbuz1 + //SEG209 [102] (byte*) char_cursor#17 ← ++ (byte*) char_cursor#75 [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: jmp breturn - //SEG151 print_char::@return + //SEG210 print_char::@return breturn: - //SEG152 [77] return [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) + //SEG211 [103] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] ) rts } -//SEG153 multiply +//SEG212 print_sbyte +print_sbyte: { + .label b = $10 + //SEG213 [105] if((signed byte) print_sbyte::b#3>=(byte/signed byte/word/signed word) 0) goto print_sbyte::@1 [ char_cursor#117 print_sbyte::b#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] ) -- vbsz1_ge_0_then_la1 + lda b + cmp #0 + bpl b1_from_print_sbyte + //SEG214 [106] phi from print_sbyte to print_sbyte::@2 [phi:print_sbyte->print_sbyte::@2] + b2_from_print_sbyte: + jmp b2 + //SEG215 print_sbyte::@2 + b2: + //SEG216 [107] call print_char param-assignment [ char_cursor#17 print_sbyte::b#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#3 ] ) + //SEG217 [100] phi from print_sbyte::@2 to print_char [phi:print_sbyte::@2->print_char] + print_char_from_b2: + //SEG218 [100] phi (byte*) char_cursor#75 = (byte*) char_cursor#117 [phi:print_sbyte::@2->print_char#0] -- register_copy + //SEG219 [100] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@2->print_char#1] -- vbuz1=vbuc1 + lda #'-' + sta print_char.ch + jsr print_char + jmp b4 + //SEG220 print_sbyte::@4 + b4: + //SEG221 [108] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ char_cursor#17 print_sbyte::b#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#0 ] ) -- vbsz1=_neg_vbsz1 + lda b + eor #$ff + clc + adc #1 + sta b + //SEG222 [109] phi from print_sbyte print_sbyte::@4 to print_sbyte::@1 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1] + b1_from_print_sbyte: + b1_from_b4: + //SEG223 [109] phi (byte*) char_cursor#121 = (byte*) char_cursor#117 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1#0] -- register_copy + //SEG224 [109] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#3 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1#1] -- register_copy + jmp b1 + //SEG225 print_sbyte::@1 + b1: + //SEG226 [110] (byte) print_byte::b#0 ← ((byte)) (signed byte) print_sbyte::b#4 [ print_byte::b#0 char_cursor#121 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#0 char_cursor#121 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#0 char_cursor#121 ] ) -- vbuz1=_byte_vbsz2 + lda b + sta print_byte.b + //SEG227 [111] call print_byte param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + //SEG228 [92] phi from print_sbyte::@1 to print_byte [phi:print_sbyte::@1->print_byte] + print_byte_from_b1: + //SEG229 [92] phi (byte*) char_cursor#124 = (byte*) char_cursor#121 [phi:print_sbyte::@1->print_byte#0] -- register_copy + //SEG230 [92] phi (byte) print_byte::b#5 = (byte) print_byte::b#0 [phi:print_sbyte::@1->print_byte#1] -- register_copy + jsr print_byte + jmp breturn + //SEG231 print_sbyte::@return + breturn: + //SEG232 [112] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + rts +} +//SEG233 signed_multiply +signed_multiply: { + .label _6 = $48 + .label _7 = $49 + .label _12 = $4b + .label _13 = $4c + .label _16 = $4a + .label _17 = $4d + .label m = $11 + .label return = $4e + .label a = $38 + .label b = $39 + .label return_2 = $3a + //SEG234 [113] (byte) multiply::a#0 ← ((byte)) (signed byte) signed_multiply::a#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 ] ) -- vbuz1=_byte_vbsz2 + lda a + sta multiply.a + //SEG235 [114] (byte) multiply::b#0 ← ((byte)) (signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 multiply::b#0 ] ) -- vbuz1=_byte_vbsz2 + lda b + sta multiply.b + //SEG236 [115] call multiply param-assignment [ signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] ) + //SEG237 [132] phi from signed_multiply to multiply [phi:signed_multiply->multiply] + multiply_from_signed_multiply: + //SEG238 [132] phi (byte) multiply::b#2 = (byte) multiply::b#0 [phi:signed_multiply->multiply#0] -- register_copy + //SEG239 [132] phi (byte) multiply::a#2 = (byte) multiply::a#0 [phi:signed_multiply->multiply#1] -- register_copy + jsr multiply + //SEG240 [116] (word) multiply::return#2 ← (word) multiply::return#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::return#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#2 ] ) -- vwuz1=vwuz2 + lda multiply.return + sta multiply.return_2 + lda multiply.return+1 + sta multiply.return_2+1 + jmp b6 + //SEG241 signed_multiply::@6 + b6: + //SEG242 [117] (word) signed_multiply::m#0 ← (word) multiply::return#2 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ) -- vwuz1=vwuz2 + lda multiply.return_2 + sta m + lda multiply.return_2+1 + sta m+1 + //SEG243 [118] if((signed byte) signed_multiply::a#0>=(byte/signed byte/word/signed word) 0) goto signed_multiply::@1 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ) -- vbsz1_ge_0_then_la1 + lda a + cmp #0 + bpl b1_from_b6 + jmp b3 + //SEG244 signed_multiply::@3 + b3: + //SEG245 [119] (byte~) signed_multiply::$6 ← > (word) signed_multiply::m#0 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 ] ) -- vbuz1=_hi_vwuz2 + lda m+1 + sta _6 + //SEG246 [120] (byte~) signed_multiply::$7 ← ((byte)) (signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 signed_multiply::$7 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 signed_multiply::$7 ] ) -- vbuz1=_byte_vbsz2 + lda b + sta _7 + //SEG247 [121] (byte/signed byte/word/signed word~) signed_multiply::$16 ← (byte~) signed_multiply::$6 - (byte~) signed_multiply::$7 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$16 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$16 ] ) -- vbuz1=vbuz2_minus_vbuz3 + lda _6 + sec + sbc _7 + sta _16 + //SEG248 [122] (word) signed_multiply::m#1 ← (word) signed_multiply::m#0 hi= (byte/signed byte/word/signed word~) signed_multiply::$16 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#1 ] ) -- vwuz1=vwuz1_sethi_vbuz2 + lda _16 + sta m+1 + //SEG249 [123] phi from signed_multiply::@3 signed_multiply::@6 to signed_multiply::@1 [phi:signed_multiply::@3/signed_multiply::@6->signed_multiply::@1] + b1_from_b3: + b1_from_b6: + //SEG250 [123] phi (word) signed_multiply::m#5 = (word) signed_multiply::m#1 [phi:signed_multiply::@3/signed_multiply::@6->signed_multiply::@1#0] -- register_copy + jmp b1 + //SEG251 signed_multiply::@1 + b1: + //SEG252 [124] if((signed byte) signed_multiply::b#0>=(byte/signed byte/word/signed word) 0) goto signed_multiply::@2 [ signed_multiply::a#0 signed_multiply::m#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::m#5 ] ) -- vbsz1_ge_0_then_la1 + lda b + cmp #0 + bpl b2_from_b1 + jmp b4 + //SEG253 signed_multiply::@4 + b4: + //SEG254 [125] (byte~) signed_multiply::$12 ← > (word) signed_multiply::m#5 [ signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ) -- vbuz1=_hi_vwuz2 + lda m+1 + sta _12 + //SEG255 [126] (byte~) signed_multiply::$13 ← ((byte)) (signed byte) signed_multiply::a#0 [ signed_multiply::m#5 signed_multiply::$12 signed_multiply::$13 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#5 signed_multiply::$12 signed_multiply::$13 ] ) -- vbuz1=_byte_vbsz2 + lda a + sta _13 + //SEG256 [127] (byte/signed byte/word/signed word~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte~) signed_multiply::$13 [ signed_multiply::m#5 signed_multiply::$17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#5 signed_multiply::$17 ] ) -- vbuz1=vbuz2_minus_vbuz3 + lda _12 + sec + sbc _13 + sta _17 + //SEG257 [128] (word) signed_multiply::m#2 ← (word) signed_multiply::m#5 hi= (byte/signed byte/word/signed word~) signed_multiply::$17 [ signed_multiply::m#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#2 ] ) -- vwuz1=vwuz1_sethi_vbuz2 + lda _17 + sta m+1 + //SEG258 [129] phi from signed_multiply::@1 signed_multiply::@4 to signed_multiply::@2 [phi:signed_multiply::@1/signed_multiply::@4->signed_multiply::@2] + b2_from_b1: + b2_from_b4: + //SEG259 [129] phi (word) signed_multiply::m#4 = (word) signed_multiply::m#5 [phi:signed_multiply::@1/signed_multiply::@4->signed_multiply::@2#0] -- register_copy + jmp b2 + //SEG260 signed_multiply::@2 + b2: + //SEG261 [130] (signed word) signed_multiply::return#0 ← ((signed word)) (word) signed_multiply::m#4 [ signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::return#0 ] ) -- vwsz1=_sword_vwuz2 + lda m + sta return + lda m+1 + sta return+1 + jmp breturn + //SEG262 signed_multiply::@return + breturn: + //SEG263 [131] return [ signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::return#0 ] ) + rts +} +//SEG264 multiply multiply: { .const memA = $fe .const memB = $ff - .label return = $33 - .label a = $2b - .label b = $2c - .label return_2 = $2d - //SEG154 [78] *((const byte*) multiply::memA#0) ← (byte) multiply::a#0 [ multiply::b#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::b#0 ] ) -- _deref_pbuc1=vbuz1 + .label return = $50 + .label a = $13 + .label b = $14 + .label return_2 = $46 + .label return_3 = $58 + //SEG265 [133] *((const byte*) multiply::memA#0) ← (byte) multiply::a#2 [ multiply::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::b#2 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::b#2 ] ) -- _deref_pbuc1=vbuz1 lda a sta memA - //SEG155 [79] *((const byte*) multiply::memB#0) ← (byte) multiply::b#0 [ ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) -- _deref_pbuc1=vbuz1 + //SEG266 [134] *((const byte*) multiply::memB#0) ← (byte) multiply::b#2 [ ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- _deref_pbuc1=vbuz1 lda b sta memB - //SEG156 asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB } + //SEG267 asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB } lda memA sta sm1+1 sta sm3+1 @@ -4083,198 +7099,611 @@ multiply: { sm4: sbc mul_sqr2_hi,x sta memB - //SEG157 [81] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG268 [136] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda memA sta return lda memB sta return+1 jmp breturn - //SEG158 multiply::@return + //SEG269 multiply::@return breturn: - //SEG159 [82] return [ multiply::return#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::return#0 ] ) + //SEG270 [137] return [ multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) rts } -//SEG160 slow_multiply -slow_multiply: { - .label return = $f - .label m = $f - .label i = $e - .label a = $25 - .label b = $26 - .label return_2 = $27 - //SEG161 [83] if((byte) slow_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuz1_le_0_then_la1 +//SEG271 slow_signed_multiply +slow_signed_multiply: { + .label m = $16 + .label i = $15 + .label return = $16 + .label j = $18 + .label a = $32 + .label b = $33 + .label return_2 = $34 + //SEG272 [138] if((signed byte) slow_signed_multiply::a#0>=(byte/signed byte/word/signed word) 0) goto slow_signed_multiply::@1 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ) -- vbsz1_ge_0_then_la1 lda a cmp #0 - beq b1_from_slow_multiply - //SEG162 [84] phi from slow_multiply to slow_multiply::@2 [phi:slow_multiply->slow_multiply::@2] - b2_from_slow_multiply: - //SEG163 [84] phi (byte) slow_multiply::i#2 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#0] -- vbuz1=vbuc1 + bpl b1 + //SEG273 [139] phi from slow_signed_multiply to slow_signed_multiply::@2 [phi:slow_signed_multiply->slow_signed_multiply::@2] + b2_from_slow_signed_multiply: + //SEG274 [139] phi (signed byte) slow_signed_multiply::i#2 = (byte/signed byte/word/signed word) 0 [phi:slow_signed_multiply->slow_signed_multiply::@2#0] -- vbsz1=vbuc1 lda #0 sta i - //SEG164 [84] phi (word) slow_multiply::m#3 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#1] -- vwuz1=vbuc1 + //SEG275 [139] phi (signed word) slow_signed_multiply::m#3 = (byte/signed byte/word/signed word) 0 [phi:slow_signed_multiply->slow_signed_multiply::@2#1] -- vwsz1=vbuc1 lda #0 sta m lda #0 sta m+1 jmp b2 - //SEG165 [84] phi from slow_multiply::@2 to slow_multiply::@2 [phi:slow_multiply::@2->slow_multiply::@2] + //SEG276 [139] phi from slow_signed_multiply::@2 to slow_signed_multiply::@2 [phi:slow_signed_multiply::@2->slow_signed_multiply::@2] b2_from_b2: - //SEG166 [84] phi (byte) slow_multiply::i#2 = (byte) slow_multiply::i#1 [phi:slow_multiply::@2->slow_multiply::@2#0] -- register_copy - //SEG167 [84] phi (word) slow_multiply::m#3 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@2#1] -- register_copy + //SEG277 [139] phi (signed byte) slow_signed_multiply::i#2 = (signed byte) slow_signed_multiply::i#1 [phi:slow_signed_multiply::@2->slow_signed_multiply::@2#0] -- register_copy + //SEG278 [139] phi (signed word) slow_signed_multiply::m#3 = (signed word) slow_signed_multiply::m#1 [phi:slow_signed_multiply::@2->slow_signed_multiply::@2#1] -- register_copy jmp b2 - //SEG168 slow_multiply::@2 + //SEG279 slow_signed_multiply::@2 b2: - //SEG169 [85] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) -- vwuz1=vwuz1_plus_vbuz2 + //SEG280 [140] (signed word) slow_signed_multiply::m#1 ← (signed word) slow_signed_multiply::m#3 - (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ) -- vwsz1=vwsz1_minus_vbsz2 + lda b + sta $fe + ora #$7f + bmi !+ + lda #0 + !: + sta $ff + sec + lda m + sbc $fe + sta m + lda m+1 + sbc $ff + sta m+1 + //SEG281 [141] (signed byte) slow_signed_multiply::i#1 ← -- (signed byte) slow_signed_multiply::i#2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ) -- vbsz1=_dec_vbsz1 + dec i + //SEG282 [142] if((signed byte) slow_signed_multiply::i#1!=(signed byte) slow_signed_multiply::a#0) goto slow_signed_multiply::@2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ) -- vbsz1_neq_vbsz2_then_la1 + lda i + cmp a + bne b2_from_b2 + //SEG283 [143] phi from slow_signed_multiply::@2 slow_signed_multiply::@5 to slow_signed_multiply::@3 [phi:slow_signed_multiply::@2/slow_signed_multiply::@5->slow_signed_multiply::@3] + b3_from_b2: + b3_from_b5: + //SEG284 [143] phi (signed word) slow_signed_multiply::return#0 = (signed word) slow_signed_multiply::m#1 [phi:slow_signed_multiply::@2/slow_signed_multiply::@5->slow_signed_multiply::@3#0] -- register_copy + jmp b3 + //SEG285 [143] phi from slow_signed_multiply::@1 to slow_signed_multiply::@3 [phi:slow_signed_multiply::@1->slow_signed_multiply::@3] + b3_from_b1: + //SEG286 [143] phi (signed word) slow_signed_multiply::return#0 = (byte/signed byte/word/signed word) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@3#0] -- vwsz1=vbuc1 + lda #0 + sta return + lda #0 + sta return+1 + jmp b3 + //SEG287 slow_signed_multiply::@3 + b3: + jmp breturn + //SEG288 slow_signed_multiply::@return + breturn: + //SEG289 [144] return [ slow_signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::return#0 ] ) + rts + //SEG290 slow_signed_multiply::@1 + b1: + //SEG291 [145] if((signed byte) slow_signed_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_signed_multiply::@3 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ) -- vbsz1_le_0_then_la1 + lda a + cmp #1 + bmi b3_from_b1 + //SEG292 [146] phi from slow_signed_multiply::@1 to slow_signed_multiply::@5 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5] + b5_from_b1: + //SEG293 [146] phi (signed byte) slow_signed_multiply::j#2 = (byte/signed byte/word/signed word) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5#0] -- vbsz1=vbuc1 + lda #0 + sta j + //SEG294 [146] phi (signed word) slow_signed_multiply::m#5 = (byte/signed byte/word/signed word) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5#1] -- vwsz1=vbuc1 + lda #0 + sta m + lda #0 + sta m+1 + jmp b5 + //SEG295 [146] phi from slow_signed_multiply::@5 to slow_signed_multiply::@5 [phi:slow_signed_multiply::@5->slow_signed_multiply::@5] + b5_from_b5: + //SEG296 [146] phi (signed byte) slow_signed_multiply::j#2 = (signed byte) slow_signed_multiply::j#1 [phi:slow_signed_multiply::@5->slow_signed_multiply::@5#0] -- register_copy + //SEG297 [146] phi (signed word) slow_signed_multiply::m#5 = (signed word) slow_signed_multiply::m#2 [phi:slow_signed_multiply::@5->slow_signed_multiply::@5#1] -- register_copy + jmp b5 + //SEG298 slow_signed_multiply::@5 + b5: + //SEG299 [147] (signed word) slow_signed_multiply::m#2 ← (signed word) slow_signed_multiply::m#5 + (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ) -- vwsz1=vwsz1_plus_vbsz2 + lda b + sta $fe + ora #$7f + bmi !+ + lda #0 + !: + sta $ff + clc + lda m + adc $fe + sta m + lda m+1 + adc $ff + sta m+1 + //SEG300 [148] (signed byte) slow_signed_multiply::j#1 ← ++ (signed byte) slow_signed_multiply::j#2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ) -- vbsz1=_inc_vbsz1 + inc j + //SEG301 [149] if((signed byte) slow_signed_multiply::j#1!=(signed byte) slow_signed_multiply::a#0) goto slow_signed_multiply::@5 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ) -- vbsz1_neq_vbsz2_then_la1 + lda j + cmp a + bne b5_from_b5 + jmp b3_from_b5 +} +//SEG302 multiply_results_compare +multiply_results_compare: { + .label ms = $56 + .label ma = $5a + .label b = $1a + .label a = $19 + //SEG303 [151] phi from multiply_results_compare to multiply_results_compare::@1 [phi:multiply_results_compare->multiply_results_compare::@1] + b1_from_multiply_results_compare: + //SEG304 [151] phi (byte) multiply_results_compare::a#6 = (byte/signed byte/word/signed word) 0 [phi:multiply_results_compare->multiply_results_compare::@1#0] -- vbuz1=vbuc1 + lda #0 + sta a + jmp b1 + //SEG305 [151] phi from multiply_results_compare::@6 to multiply_results_compare::@1 [phi:multiply_results_compare::@6->multiply_results_compare::@1] + b1_from_b6: + //SEG306 [151] phi (byte) multiply_results_compare::a#6 = (byte) multiply_results_compare::a#1 [phi:multiply_results_compare::@6->multiply_results_compare::@1#0] -- register_copy + jmp b1 + //SEG307 multiply_results_compare::@1 + b1: + //SEG308 [152] phi from multiply_results_compare::@1 to multiply_results_compare::@2 [phi:multiply_results_compare::@1->multiply_results_compare::@2] + b2_from_b1: + //SEG309 [152] phi (byte) multiply_results_compare::b#2 = (byte/signed byte/word/signed word) 0 [phi:multiply_results_compare::@1->multiply_results_compare::@2#0] -- vbuz1=vbuc1 + lda #0 + sta b + jmp b2 + //SEG310 [152] phi from multiply_results_compare::@3 to multiply_results_compare::@2 [phi:multiply_results_compare::@3->multiply_results_compare::@2] + b2_from_b3: + //SEG311 [152] phi (byte) multiply_results_compare::b#2 = (byte) multiply_results_compare::b#1 [phi:multiply_results_compare::@3->multiply_results_compare::@2#0] -- register_copy + jmp b2 + //SEG312 multiply_results_compare::@2 + b2: + //SEG313 [153] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ) -- vbuz1=vbuz2 + lda a + sta slow_multiply.a + //SEG314 [154] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuz1=vbuz2 + lda b + sta slow_multiply.b + //SEG315 [155] call slow_multiply param-assignment [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) + jsr slow_multiply + //SEG316 [156] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ) -- vwuz1=vwuz2 + lda slow_multiply.return + sta slow_multiply.return_2 + lda slow_multiply.return+1 + sta slow_multiply.return_2+1 + jmp b8 + //SEG317 multiply_results_compare::@8 + b8: + //SEG318 [157] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vwuz1=vwuz2 + lda slow_multiply.return_2 + sta ms + lda slow_multiply.return_2+1 + sta ms+1 + //SEG319 [158] (byte) multiply::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuz1=vbuz2 + lda a + sta multiply.a + //SEG320 [159] (byte) multiply::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuz1=vbuz2 + lda b + sta multiply.b + //SEG321 [160] call multiply param-assignment [ line_cursor#27 char_cursor#27 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + //SEG322 [132] phi from multiply_results_compare::@8 to multiply [phi:multiply_results_compare::@8->multiply] + multiply_from_b8: + //SEG323 [132] phi (byte) multiply::b#2 = (byte) multiply::b#1 [phi:multiply_results_compare::@8->multiply#0] -- register_copy + //SEG324 [132] phi (byte) multiply::a#2 = (byte) multiply::a#1 [phi:multiply_results_compare::@8->multiply#1] -- register_copy + jsr multiply + //SEG325 [161] (word) multiply::return#3 ← (word) multiply::return#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ) -- vwuz1=vwuz2 + lda multiply.return + sta multiply.return_3 + lda multiply.return+1 + sta multiply.return_3+1 + jmp b9 + //SEG326 multiply_results_compare::@9 + b9: + //SEG327 [162] (word) multiply_results_compare::ma#0 ← (word) multiply::return#3 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) -- vwuz1=vwuz2 + lda multiply.return_3 + sta ma + lda multiply.return_3+1 + sta ma+1 + //SEG328 [163] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) -- vwuz1_eq_vwuz2_then_la1 + lda ms + cmp ma + bne !+ + lda ms+1 + cmp ma+1 + beq b3 + !: + jmp b4 + //SEG329 multiply_results_compare::@4 + b4: + //SEG330 [164] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) -- _deref_pbuc1=vbuc2 + lda #2 + sta BGCOL + //SEG331 [165] (byte) multiply_error::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 ] ) -- vbuz1=vbuz2 + lda a + sta multiply_error.a + //SEG332 [166] (byte) multiply_error::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 ] ) -- vbuz1=vbuz2 + lda b + sta multiply_error.b + //SEG333 [167] (word) multiply_error::ms#0 ← (word) multiply_results_compare::ms#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ) -- vwuz1=vwuz2 + lda ms + sta multiply_error.ms + lda ms+1 + sta multiply_error.ms+1 + //SEG334 [168] (word) multiply_error::ma#0 ← (word) multiply_results_compare::ma#0 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) -- vwuz1=vwuz2 + lda ma + sta multiply_error.ma + lda ma+1 + sta multiply_error.ma+1 + //SEG335 [169] call multiply_error param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) + //SEG336 [179] phi from multiply_results_compare::@4 to multiply_error [phi:multiply_results_compare::@4->multiply_error] + multiply_error_from_b4: + jsr multiply_error + jmp breturn + //SEG337 multiply_results_compare::@return + breturn: + //SEG338 [170] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) + rts + //SEG339 multiply_results_compare::@3 + b3: + //SEG340 [171] (byte) multiply_results_compare::b#1 ← ++ (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ) -- vbuz1=_inc_vbuz1 + inc b + //SEG341 [172] if((byte) multiply_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ) -- vbuz1_neq_0_then_la1 + lda b + bne b2_from_b3 + jmp b6 + //SEG342 multiply_results_compare::@6 + b6: + //SEG343 [173] (byte) multiply_results_compare::a#1 ← ++ (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ) -- vbuz1=_inc_vbuz1 + inc a + //SEG344 [174] if((byte) multiply_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@1 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ) -- vbuz1_neq_0_then_la1 + lda a + bne b1_from_b6 + //SEG345 [175] phi from multiply_results_compare::@6 to multiply_results_compare::@7 [phi:multiply_results_compare::@6->multiply_results_compare::@7] + b7_from_b6: + jmp b7 + //SEG346 multiply_results_compare::@7 + b7: + //SEG347 [176] call print_str param-assignment [ char_cursor#117 line_cursor#27 ] ( main:2::multiply_results_compare:13 [ char_cursor#117 line_cursor#27 ] ) + //SEG348 [51] phi from multiply_results_compare::@7 to print_str [phi:multiply_results_compare::@7->print_str] + print_str_from_b7: + //SEG349 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#27 [phi:multiply_results_compare::@7->print_str#0] -- register_copy + //SEG350 [51] phi (byte*) print_str::str#16 = (const string) multiply_results_compare::str [phi:multiply_results_compare::@7->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + //SEG351 [177] phi from multiply_results_compare::@7 to multiply_results_compare::@11 [phi:multiply_results_compare::@7->multiply_results_compare::@11] + b11_from_b7: + jmp b11 + //SEG352 multiply_results_compare::@11 + b11: + //SEG353 [178] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) + //SEG354 [46] phi from multiply_results_compare::@11 to print_ln [phi:multiply_results_compare::@11->print_ln] + print_ln_from_b11: + //SEG355 [46] phi (byte*) char_cursor#118 = (byte*) char_cursor#117 [phi:multiply_results_compare::@11->print_ln#0] -- register_copy + //SEG356 [46] phi (byte*) line_cursor#40 = (byte*) line_cursor#27 [phi:multiply_results_compare::@11->print_ln#1] -- register_copy + jsr print_ln + jmp breturn + str: .text "multiply results match!@" +} +//SEG357 multiply_error +multiply_error: { + .label a = $5c + .label b = $5d + .label ms = $5e + .label ma = $60 + //SEG358 [180] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + //SEG359 [51] phi from multiply_error to print_str [phi:multiply_error->print_str] + print_str_from_multiply_error: + //SEG360 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#27 [phi:multiply_error->print_str#0] -- register_copy + //SEG361 [51] phi (byte*) print_str::str#16 = (const string) multiply_error::str [phi:multiply_error->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + jmp b1 + //SEG362 multiply_error::@1 + b1: + //SEG363 [181] (byte) print_byte::b#3 ← (byte) multiply_error::a#0 [ char_cursor#117 line_cursor#27 print_byte::b#3 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_byte::b#3 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) -- vbuz1=vbuz2 + lda a + sta print_byte.b + //SEG364 [182] call print_byte param-assignment [ char_cursor#17 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + //SEG365 [92] phi from multiply_error::@1 to print_byte [phi:multiply_error::@1->print_byte] + print_byte_from_b1: + //SEG366 [92] phi (byte*) char_cursor#124 = (byte*) char_cursor#117 [phi:multiply_error::@1->print_byte#0] -- register_copy + //SEG367 [92] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:multiply_error::@1->print_byte#1] -- register_copy + jsr print_byte + //SEG368 [183] phi from multiply_error::@1 to multiply_error::@2 [phi:multiply_error::@1->multiply_error::@2] + b2_from_b1: + jmp b2 + //SEG369 multiply_error::@2 + b2: + //SEG370 [184] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + //SEG371 [51] phi from multiply_error::@2 to print_str [phi:multiply_error::@2->print_str] + print_str_from_b2: + //SEG372 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:multiply_error::@2->print_str#0] -- register_copy + //SEG373 [51] phi (byte*) print_str::str#16 = (const string) multiply_error::str1 [phi:multiply_error::@2->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + jmp b3 + //SEG374 multiply_error::@3 + b3: + //SEG375 [185] (byte) print_byte::b#4 ← (byte) multiply_error::b#0 [ char_cursor#117 line_cursor#27 print_byte::b#4 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_byte::b#4 multiply_error::ms#0 multiply_error::ma#0 ] ) -- vbuz1=vbuz2 + lda b + sta print_byte.b + //SEG376 [186] call print_byte param-assignment [ char_cursor#17 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ) + //SEG377 [92] phi from multiply_error::@3 to print_byte [phi:multiply_error::@3->print_byte] + print_byte_from_b3: + //SEG378 [92] phi (byte*) char_cursor#124 = (byte*) char_cursor#117 [phi:multiply_error::@3->print_byte#0] -- register_copy + //SEG379 [92] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:multiply_error::@3->print_byte#1] -- register_copy + jsr print_byte + //SEG380 [187] phi from multiply_error::@3 to multiply_error::@4 [phi:multiply_error::@3->multiply_error::@4] + b4_from_b3: + jmp b4 + //SEG381 multiply_error::@4 + b4: + //SEG382 [188] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ) + //SEG383 [51] phi from multiply_error::@4 to print_str [phi:multiply_error::@4->print_str] + print_str_from_b4: + //SEG384 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:multiply_error::@4->print_str#0] -- register_copy + //SEG385 [51] phi (byte*) print_str::str#16 = (const string) multiply_error::str2 [phi:multiply_error::@4->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + jmp b5 + //SEG386 multiply_error::@5 + b5: + //SEG387 [189] (word) print_word::w#3 ← (word) multiply_error::ms#0 [ char_cursor#117 line_cursor#27 print_word::w#3 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_word::w#3 multiply_error::ma#0 ] ) -- vwuz1=vwuz2 + lda ms + sta print_word.w + lda ms+1 + sta print_word.w+1 + //SEG388 [190] call print_word param-assignment [ char_cursor#17 line_cursor#27 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::ma#0 ] ) + //SEG389 [86] phi from multiply_error::@5 to print_word [phi:multiply_error::@5->print_word] + print_word_from_b5: + //SEG390 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_error::@5->print_word#0] -- register_copy + //SEG391 [86] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:multiply_error::@5->print_word#1] -- register_copy + jsr print_word + //SEG392 [191] phi from multiply_error::@5 to multiply_error::@6 [phi:multiply_error::@5->multiply_error::@6] + b6_from_b5: + jmp b6 + //SEG393 multiply_error::@6 + b6: + //SEG394 [192] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::ma#0 ] ) + //SEG395 [51] phi from multiply_error::@6 to print_str [phi:multiply_error::@6->print_str] + print_str_from_b6: + //SEG396 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:multiply_error::@6->print_str#0] -- register_copy + //SEG397 [51] phi (byte*) print_str::str#16 = (const string) multiply_error::str3 [phi:multiply_error::@6->print_str#1] -- pbuz1=pbuc1 + lda #str3 + sta print_str.str+1 + jsr print_str + jmp b7 + //SEG398 multiply_error::@7 + b7: + //SEG399 [193] (word) print_word::w#4 ← (word) multiply_error::ma#0 [ char_cursor#117 line_cursor#27 print_word::w#4 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_word::w#4 ] ) -- vwuz1=vwuz2 + lda ma + sta print_word.w + lda ma+1 + sta print_word.w+1 + //SEG400 [194] call print_word param-assignment [ char_cursor#17 line_cursor#27 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 ] ) + //SEG401 [86] phi from multiply_error::@7 to print_word [phi:multiply_error::@7->print_word] + print_word_from_b7: + //SEG402 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_error::@7->print_word#0] -- register_copy + //SEG403 [86] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:multiply_error::@7->print_word#1] -- register_copy + jsr print_word + //SEG404 [195] phi from multiply_error::@7 to multiply_error::@8 [phi:multiply_error::@7->multiply_error::@8] + b8_from_b7: + jmp b8 + //SEG405 multiply_error::@8 + b8: + //SEG406 [196] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ line_cursor#1 ] ) + //SEG407 [46] phi from multiply_error::@8 to print_ln [phi:multiply_error::@8->print_ln] + print_ln_from_b8: + //SEG408 [46] phi (byte*) char_cursor#118 = (byte*) char_cursor#17 [phi:multiply_error::@8->print_ln#0] -- register_copy + //SEG409 [46] phi (byte*) line_cursor#40 = (byte*) line_cursor#27 [phi:multiply_error::@8->print_ln#1] -- register_copy + jsr print_ln + jmp breturn + //SEG410 multiply_error::@return + breturn: + //SEG411 [197] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ line_cursor#1 ] ) + rts + str: .text "multiply mismatch @" + str1: .text "*@" + str2: .text " slow:@" + str3: .text " / fast asm:@" +} +//SEG412 slow_multiply +slow_multiply: { + .label return = $1c + .label m = $1c + .label i = $1b + .label a = $52 + .label b = $53 + .label return_2 = $54 + //SEG413 [198] if((byte) slow_multiply::a#0==(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuz1_eq_0_then_la1 + lda a + beq b1_from_slow_multiply + //SEG414 [199] phi from slow_multiply to slow_multiply::@2 [phi:slow_multiply->slow_multiply::@2] + b2_from_slow_multiply: + //SEG415 [199] phi (byte) slow_multiply::i#2 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#0] -- vbuz1=vbuc1 + lda #0 + sta i + //SEG416 [199] phi (word) slow_multiply::m#3 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#1] -- vwuz1=vbuc1 + lda #0 + sta m + lda #0 + sta m+1 + jmp b2 + //SEG417 [199] phi from slow_multiply::@2 to slow_multiply::@2 [phi:slow_multiply::@2->slow_multiply::@2] + b2_from_b2: + //SEG418 [199] phi (byte) slow_multiply::i#2 = (byte) slow_multiply::i#1 [phi:slow_multiply::@2->slow_multiply::@2#0] -- register_copy + //SEG419 [199] phi (word) slow_multiply::m#3 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@2#1] -- register_copy + jmp b2 + //SEG420 slow_multiply::@2 + b2: + //SEG421 [200] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) -- vwuz1=vwuz1_plus_vbuz2 lda b clc adc m sta m - bcc !+ - inc m+1 - !: - //SEG170 [86] (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuz1=_inc_vbuz1 + lda #0 + adc m+1 + sta m+1 + //SEG422 [201] (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG171 [87] if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuz1_neq_vbuz2_then_la1 + //SEG423 [202] if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuz1_neq_vbuz2_then_la1 lda i cmp a bne b2_from_b2 - //SEG172 [88] phi from slow_multiply::@2 to slow_multiply::@1 [phi:slow_multiply::@2->slow_multiply::@1] + //SEG424 [203] phi from slow_multiply::@2 to slow_multiply::@1 [phi:slow_multiply::@2->slow_multiply::@1] b1_from_b2: - //SEG173 [88] phi (word) slow_multiply::return#0 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@1#0] -- register_copy + //SEG425 [203] phi (word) slow_multiply::return#0 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@1#0] -- register_copy jmp b1 - //SEG174 [88] phi from slow_multiply to slow_multiply::@1 [phi:slow_multiply->slow_multiply::@1] + //SEG426 [203] phi from slow_multiply to slow_multiply::@1 [phi:slow_multiply->slow_multiply::@1] b1_from_slow_multiply: - //SEG175 [88] phi (word) slow_multiply::return#0 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@1#0] -- vwuz1=vbuc1 + //SEG427 [203] phi (word) slow_multiply::return#0 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@1#0] -- vwuz1=vbuc1 lda #0 sta return lda #0 sta return+1 jmp b1 - //SEG176 slow_multiply::@1 + //SEG428 slow_multiply::@1 b1: jmp breturn - //SEG177 slow_multiply::@return + //SEG429 slow_multiply::@return breturn: - //SEG178 [89] return [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::return#0 ] ) + //SEG430 [204] return [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) rts } -//SEG179 multiply_tables_compare +//SEG431 multiply_tables_compare multiply_tables_compare: { - .label asm_sqr = $13 - .label kc_sqr = $11 - //SEG180 [91] phi from multiply_tables_compare to multiply_tables_compare::@1 [phi:multiply_tables_compare->multiply_tables_compare::@1] + .label asm_sqr = $20 + .label kc_sqr = $1e + //SEG432 [206] phi from multiply_tables_compare to multiply_tables_compare::@1 [phi:multiply_tables_compare->multiply_tables_compare::@1] b1_from_multiply_tables_compare: - //SEG181 [91] phi (byte*) multiply_tables_compare::asm_sqr#2 = (const byte[512]) asm_mul_sqr1_lo#0 [phi:multiply_tables_compare->multiply_tables_compare::@1#0] -- pbuz1=pbuc1 + //SEG433 [206] phi (byte*) multiply_tables_compare::asm_sqr#2 = (const byte[512]) asm_mul_sqr1_lo#0 [phi:multiply_tables_compare->multiply_tables_compare::@1#0] -- pbuz1=pbuc1 lda #asm_mul_sqr1_lo sta asm_sqr+1 - //SEG182 [91] phi (byte*) multiply_tables_compare::kc_sqr#2 = (const byte[512]) mul_sqr1_lo#0 [phi:multiply_tables_compare->multiply_tables_compare::@1#1] -- pbuz1=pbuc1 + //SEG434 [206] phi (byte*) multiply_tables_compare::kc_sqr#2 = (const byte[512]) mul_sqr1_lo#0 [phi:multiply_tables_compare->multiply_tables_compare::@1#1] -- pbuz1=pbuc1 lda #mul_sqr1_lo sta kc_sqr+1 jmp b1 - //SEG183 [91] phi from multiply_tables_compare::@2 to multiply_tables_compare::@1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1] + //SEG435 [206] phi from multiply_tables_compare::@2 to multiply_tables_compare::@1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1] b1_from_b2: - //SEG184 [91] phi (byte*) multiply_tables_compare::asm_sqr#2 = (byte*) multiply_tables_compare::asm_sqr#1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1#0] -- register_copy - //SEG185 [91] phi (byte*) multiply_tables_compare::kc_sqr#2 = (byte*) multiply_tables_compare::kc_sqr#1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1#1] -- register_copy + //SEG436 [206] phi (byte*) multiply_tables_compare::asm_sqr#2 = (byte*) multiply_tables_compare::asm_sqr#1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1#0] -- register_copy + //SEG437 [206] phi (byte*) multiply_tables_compare::kc_sqr#2 = (byte*) multiply_tables_compare::kc_sqr#1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1#1] -- register_copy jmp b1 - //SEG186 multiply_tables_compare::@1 + //SEG438 multiply_tables_compare::@1 b1: - //SEG187 [92] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) -- _deref_pbuz1_eq__deref_pbuz2_then_la1 + //SEG439 [207] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) -- _deref_pbuz1_eq__deref_pbuz2_then_la1 ldy #0 lda (kc_sqr),y ldy #0 cmp (asm_sqr),y beq b2 jmp b3 - //SEG188 multiply_tables_compare::@3 + //SEG440 multiply_tables_compare::@3 b3: - //SEG189 [93] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) -- _deref_pbuc1=vbuc2 + //SEG441 [208] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG190 [94] call print_str param-assignment [ char_cursor#2 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) - //SEG191 [53] phi from multiply_tables_compare::@3 to print_str [phi:multiply_tables_compare::@3->print_str] + //SEG442 [209] call print_str param-assignment [ char_cursor#117 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) + //SEG443 [51] phi from multiply_tables_compare::@3 to print_str [phi:multiply_tables_compare::@3->print_str] print_str_from_b3: - //SEG192 [53] phi (byte*) char_cursor#71 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@3->print_str#0] -- pbuz1=pbuc1 + //SEG444 [51] phi (byte*) char_cursor#135 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@3->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta char_cursor lda #>$400 sta char_cursor+1 - //SEG193 [53] phi (byte*) print_str::str#9 = (const string) multiply_tables_compare::str [phi:multiply_tables_compare::@3->print_str#1] -- pbuz1=pbuc1 + //SEG445 [51] phi (byte*) print_str::str#16 = (const string) multiply_tables_compare::str [phi:multiply_tables_compare::@3->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b6 - //SEG194 multiply_tables_compare::@6 + //SEG446 multiply_tables_compare::@6 b6: - //SEG195 [95] (word) print_word::w#0 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#2 print_word::w#0 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 print_word::w#0 multiply_tables_compare::kc_sqr#2 ] ) -- vwuz1=_word_pbuz2 + //SEG447 [210] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ) -- vwuz1=_word_pbuz2 lda asm_sqr sta print_word.w lda asm_sqr+1 sta print_word.w+1 - //SEG196 [96] call print_word param-assignment [ char_cursor#11 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#11 multiply_tables_compare::kc_sqr#2 ] ) - //SEG197 [60] phi from multiply_tables_compare::@6 to print_word [phi:multiply_tables_compare::@6->print_word] + //SEG448 [211] call print_word param-assignment [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ) + //SEG449 [86] phi from multiply_tables_compare::@6 to print_word [phi:multiply_tables_compare::@6->print_word] print_word_from_b6: - //SEG198 [60] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:multiply_tables_compare::@6->print_word#0] -- register_copy + //SEG450 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_tables_compare::@6->print_word#0] -- register_copy + //SEG451 [86] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:multiply_tables_compare::@6->print_word#1] -- register_copy jsr print_word - //SEG199 [97] phi from multiply_tables_compare::@6 to multiply_tables_compare::@7 [phi:multiply_tables_compare::@6->multiply_tables_compare::@7] + //SEG452 [212] phi from multiply_tables_compare::@6 to multiply_tables_compare::@7 [phi:multiply_tables_compare::@6->multiply_tables_compare::@7] b7_from_b6: jmp b7 - //SEG200 multiply_tables_compare::@7 + //SEG453 multiply_tables_compare::@7 b7: - //SEG201 [98] call print_str param-assignment [ char_cursor#2 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 multiply_tables_compare::kc_sqr#2 ] ) - //SEG202 [53] phi from multiply_tables_compare::@7 to print_str [phi:multiply_tables_compare::@7->print_str] + //SEG454 [213] call print_str param-assignment [ char_cursor#117 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 multiply_tables_compare::kc_sqr#2 ] ) + //SEG455 [51] phi from multiply_tables_compare::@7 to print_str [phi:multiply_tables_compare::@7->print_str] print_str_from_b7: - //SEG203 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#11 [phi:multiply_tables_compare::@7->print_str#0] -- register_copy - //SEG204 [53] phi (byte*) print_str::str#9 = (const string) multiply_tables_compare::str1 [phi:multiply_tables_compare::@7->print_str#1] -- pbuz1=pbuc1 + //SEG456 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:multiply_tables_compare::@7->print_str#0] -- register_copy + //SEG457 [51] phi (byte*) print_str::str#16 = (const string) multiply_tables_compare::str1 [phi:multiply_tables_compare::@7->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b8 - //SEG205 multiply_tables_compare::@8 + //SEG458 multiply_tables_compare::@8 b8: - //SEG206 [99] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#2 print_word::w#1 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 print_word::w#1 ] ) -- vwuz1=_word_pbuz2 + //SEG459 [214] (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#2 ] ) -- vwuz1=_word_pbuz2 lda kc_sqr sta print_word.w lda kc_sqr+1 sta print_word.w+1 - //SEG207 [100] call print_word param-assignment [ char_cursor#11 ] ( main:2::multiply_tables_compare:11 [ char_cursor#11 ] ) - //SEG208 [60] phi from multiply_tables_compare::@8 to print_word [phi:multiply_tables_compare::@8->print_word] + //SEG460 [215] call print_word param-assignment [ char_cursor#17 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 ] ) + //SEG461 [86] phi from multiply_tables_compare::@8 to print_word [phi:multiply_tables_compare::@8->print_word] print_word_from_b8: - //SEG209 [60] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:multiply_tables_compare::@8->print_word#0] -- register_copy + //SEG462 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_tables_compare::@8->print_word#0] -- register_copy + //SEG463 [86] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:multiply_tables_compare::@8->print_word#1] -- register_copy jsr print_word - //SEG210 [101] phi from multiply_tables_compare::@8 to multiply_tables_compare::@return [phi:multiply_tables_compare::@8->multiply_tables_compare::@return] + //SEG464 [216] phi from multiply_tables_compare::@8 to multiply_tables_compare::@return [phi:multiply_tables_compare::@8->multiply_tables_compare::@return] breturn_from_b8: - //SEG211 [101] phi (byte*) line_cursor#17 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@8->multiply_tables_compare::@return#0] -- pbuz1=pbuc1 + //SEG465 [216] phi (byte*) line_cursor#27 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@8->multiply_tables_compare::@return#0] -- pbuz1=pbuc1 lda #<$400 sta line_cursor lda #>$400 sta line_cursor+1 - //SEG212 [101] phi (byte*) char_cursor#20 = (byte*) char_cursor#11 [phi:multiply_tables_compare::@8->multiply_tables_compare::@return#1] -- register_copy + //SEG466 [216] phi (byte*) char_cursor#27 = (byte*) char_cursor#17 [phi:multiply_tables_compare::@8->multiply_tables_compare::@return#1] -- register_copy jmp breturn - //SEG213 multiply_tables_compare::@return + //SEG467 multiply_tables_compare::@return breturn: - //SEG214 [102] return [ line_cursor#17 char_cursor#20 ] ( main:2::multiply_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) + //SEG468 [217] return [ line_cursor#27 char_cursor#27 ] ( main:2::multiply_tables_compare:11 [ line_cursor#27 char_cursor#27 ] ) rts - //SEG215 multiply_tables_compare::@2 + //SEG469 multiply_tables_compare::@2 b2: - //SEG216 [103] (byte*) multiply_tables_compare::asm_sqr#1 ← ++ (byte*) multiply_tables_compare::asm_sqr#2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG470 [218] (byte*) multiply_tables_compare::asm_sqr#1 ← ++ (byte*) multiply_tables_compare::asm_sqr#2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 inc asm_sqr bne !+ inc asm_sqr+1 !: - //SEG217 [104] (byte*) multiply_tables_compare::kc_sqr#1 ← ++ (byte*) multiply_tables_compare::kc_sqr#2 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG471 [219] (byte*) multiply_tables_compare::kc_sqr#1 ← ++ (byte*) multiply_tables_compare::kc_sqr#2 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 inc kc_sqr bne !+ inc kc_sqr+1 !: - //SEG218 [105] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG472 [220] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda kc_sqr+1 cmp #>mul_sqr1_lo+$200*4 bcc b1_from_b2 @@ -4283,57 +7712,58 @@ multiply_tables_compare: { cmp #multiply_tables_compare::@5] + //SEG473 [221] phi from multiply_tables_compare::@2 to multiply_tables_compare::@5 [phi:multiply_tables_compare::@2->multiply_tables_compare::@5] b5_from_b2: jmp b5 - //SEG220 multiply_tables_compare::@5 + //SEG474 multiply_tables_compare::@5 b5: - //SEG221 [107] call print_str param-assignment [ char_cursor#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 ] ) - //SEG222 [53] phi from multiply_tables_compare::@5 to print_str [phi:multiply_tables_compare::@5->print_str] + //SEG475 [222] call print_str param-assignment [ char_cursor#117 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 ] ) + //SEG476 [51] phi from multiply_tables_compare::@5 to print_str [phi:multiply_tables_compare::@5->print_str] print_str_from_b5: - //SEG223 [53] phi (byte*) char_cursor#71 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@5->print_str#0] -- pbuz1=pbuc1 + //SEG477 [51] phi (byte*) char_cursor#135 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@5->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta char_cursor lda #>$400 sta char_cursor+1 - //SEG224 [53] phi (byte*) print_str::str#9 = (const string) multiply_tables_compare::str2 [phi:multiply_tables_compare::@5->print_str#1] -- pbuz1=pbuc1 + //SEG478 [51] phi (byte*) print_str::str#16 = (const string) multiply_tables_compare::str2 [phi:multiply_tables_compare::@5->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG225 [108] phi from multiply_tables_compare::@5 to multiply_tables_compare::@10 [phi:multiply_tables_compare::@5->multiply_tables_compare::@10] + //SEG479 [223] phi from multiply_tables_compare::@5 to multiply_tables_compare::@10 [phi:multiply_tables_compare::@5->multiply_tables_compare::@10] b10_from_b5: jmp b10 - //SEG226 multiply_tables_compare::@10 + //SEG480 multiply_tables_compare::@10 b10: - //SEG227 [109] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 ] ) - //SEG228 [48] phi from multiply_tables_compare::@10 to print_ln [phi:multiply_tables_compare::@10->print_ln] + //SEG481 [224] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 ] ) + //SEG482 [46] phi from multiply_tables_compare::@10 to print_ln [phi:multiply_tables_compare::@10->print_ln] print_ln_from_b10: - //SEG229 [48] phi (byte*) line_cursor#22 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@10->print_ln#0] -- pbuz1=pbuc1 + //SEG483 [46] phi (byte*) char_cursor#118 = (byte*) char_cursor#117 [phi:multiply_tables_compare::@10->print_ln#0] -- register_copy + //SEG484 [46] phi (byte*) line_cursor#40 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta line_cursor lda #>$400 sta line_cursor+1 jsr print_ln - //SEG230 [110] (byte*~) char_cursor#100 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#100 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#100 ] ) -- pbuz1=pbuz2 + //SEG485 [225] (byte*~) char_cursor#197 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#197 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#197 ] ) -- pbuz1=pbuz2 lda line_cursor sta char_cursor lda line_cursor+1 sta char_cursor+1 - //SEG231 [101] phi from multiply_tables_compare::@10 to multiply_tables_compare::@return [phi:multiply_tables_compare::@10->multiply_tables_compare::@return] + //SEG486 [216] phi from multiply_tables_compare::@10 to multiply_tables_compare::@return [phi:multiply_tables_compare::@10->multiply_tables_compare::@return] breturn_from_b10: - //SEG232 [101] phi (byte*) line_cursor#17 = (byte*) line_cursor#1 [phi:multiply_tables_compare::@10->multiply_tables_compare::@return#0] -- register_copy - //SEG233 [101] phi (byte*) char_cursor#20 = (byte*~) char_cursor#100 [phi:multiply_tables_compare::@10->multiply_tables_compare::@return#1] -- register_copy + //SEG487 [216] phi (byte*) line_cursor#27 = (byte*) line_cursor#1 [phi:multiply_tables_compare::@10->multiply_tables_compare::@return#0] -- register_copy + //SEG488 [216] phi (byte*) char_cursor#27 = (byte*~) char_cursor#197 [phi:multiply_tables_compare::@10->multiply_tables_compare::@return#1] -- register_copy jmp breturn str: .text "multiply table mismatch at @" str1: .text " / @" str2: .text "multiply tables match!@" } -//SEG234 init_multiply_asm +//SEG489 init_multiply_asm init_multiply_asm: { .const mem = $ff - //SEG235 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } + //SEG490 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } ldx #0 txa .byte $c9 @@ -4372,203 +7802,203 @@ init_multiply_asm: { dey inx bne !- - //SEG236 [112] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG491 [227] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr1_lo sta mem - //SEG237 [113] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG492 [228] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr1_hi sta mem - //SEG238 [114] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG493 [229] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr2_lo sta mem - //SEG239 [115] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG494 [230] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr2_hi sta mem jmp breturn - //SEG240 init_multiply_asm::@return + //SEG495 init_multiply_asm::@return breturn: - //SEG241 [116] return [ ] ( main:2::init_multiply_asm:9 [ ] ) + //SEG496 [231] return [ ] ( main:2::init_multiply_asm:9 [ ] ) rts } -//SEG242 init_multiply +//SEG497 init_multiply init_multiply: { - .label _2 = $35 - .label _5 = $36 - .label _6 = $37 - .label c = $15 - .label sqr1_hi = $18 - .label sqr = $1b - .label sqr1_lo = $16 - .label x_2 = $1a - .label sqr2_hi = $20 - .label x_255 = $1d - .label sqr2_lo = $1e - .label dir = $22 - //SEG243 [118] phi from init_multiply to init_multiply::@1 [phi:init_multiply->init_multiply::@1] + .label _2 = $62 + .label _5 = $63 + .label _6 = $64 + .label c = $22 + .label sqr1_hi = $25 + .label sqr = $28 + .label sqr1_lo = $23 + .label x_2 = $27 + .label sqr2_hi = $2d + .label x_255 = $2a + .label sqr2_lo = $2b + .label dir = $2f + //SEG498 [233] phi from init_multiply to init_multiply::@1 [phi:init_multiply->init_multiply::@1] b1_from_init_multiply: - //SEG244 [118] phi (byte) init_multiply::x_2#3 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#0] -- vbuz1=vbuc1 + //SEG499 [233] phi (byte) init_multiply::x_2#3 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG245 [118] phi (byte*) init_multiply::sqr1_hi#2 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 [phi:init_multiply->init_multiply::@1#1] -- pbuz1=pbuc1 + //SEG500 [233] phi (byte*) init_multiply::sqr1_hi#2 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 [phi:init_multiply->init_multiply::@1#1] -- pbuz1=pbuc1 lda #mul_sqr1_hi+1 sta sqr1_hi+1 - //SEG246 [118] phi (byte*) init_multiply::sqr1_lo#2 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 [phi:init_multiply->init_multiply::@1#2] -- pbuz1=pbuc1 + //SEG501 [233] phi (byte*) init_multiply::sqr1_lo#2 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 [phi:init_multiply->init_multiply::@1#2] -- pbuz1=pbuc1 lda #mul_sqr1_lo+1 sta sqr1_lo+1 - //SEG247 [118] phi (word) init_multiply::sqr#4 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#3] -- vwuz1=vbuc1 + //SEG502 [233] phi (word) init_multiply::sqr#4 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#3] -- vwuz1=vbuc1 lda #0 sta sqr lda #0 sta sqr+1 - //SEG248 [118] phi (byte) init_multiply::c#2 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#4] -- vbuz1=vbuc1 + //SEG503 [233] phi (byte) init_multiply::c#2 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#4] -- vbuz1=vbuc1 lda #0 sta c jmp b1 - //SEG249 [118] phi from init_multiply::@2 to init_multiply::@1 [phi:init_multiply::@2->init_multiply::@1] + //SEG504 [233] phi from init_multiply::@2 to init_multiply::@1 [phi:init_multiply::@2->init_multiply::@1] b1_from_b2: - //SEG250 [118] phi (byte) init_multiply::x_2#3 = (byte) init_multiply::x_2#2 [phi:init_multiply::@2->init_multiply::@1#0] -- register_copy - //SEG251 [118] phi (byte*) init_multiply::sqr1_hi#2 = (byte*) init_multiply::sqr1_hi#1 [phi:init_multiply::@2->init_multiply::@1#1] -- register_copy - //SEG252 [118] phi (byte*) init_multiply::sqr1_lo#2 = (byte*) init_multiply::sqr1_lo#1 [phi:init_multiply::@2->init_multiply::@1#2] -- register_copy - //SEG253 [118] phi (word) init_multiply::sqr#4 = (word) init_multiply::sqr#1 [phi:init_multiply::@2->init_multiply::@1#3] -- register_copy - //SEG254 [118] phi (byte) init_multiply::c#2 = (byte) init_multiply::c#1 [phi:init_multiply::@2->init_multiply::@1#4] -- register_copy + //SEG505 [233] phi (byte) init_multiply::x_2#3 = (byte) init_multiply::x_2#2 [phi:init_multiply::@2->init_multiply::@1#0] -- register_copy + //SEG506 [233] phi (byte*) init_multiply::sqr1_hi#2 = (byte*) init_multiply::sqr1_hi#1 [phi:init_multiply::@2->init_multiply::@1#1] -- register_copy + //SEG507 [233] phi (byte*) init_multiply::sqr1_lo#2 = (byte*) init_multiply::sqr1_lo#1 [phi:init_multiply::@2->init_multiply::@1#2] -- register_copy + //SEG508 [233] phi (word) init_multiply::sqr#4 = (word) init_multiply::sqr#1 [phi:init_multiply::@2->init_multiply::@1#3] -- register_copy + //SEG509 [233] phi (byte) init_multiply::c#2 = (byte) init_multiply::c#1 [phi:init_multiply::@2->init_multiply::@1#4] -- register_copy jmp b1 - //SEG255 init_multiply::@1 + //SEG510 init_multiply::@1 b1: - //SEG256 [119] (byte) init_multiply::c#1 ← ++ (byte) init_multiply::c#2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG511 [234] (byte) init_multiply::c#1 ← ++ (byte) init_multiply::c#2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) -- vbuz1=_inc_vbuz1 inc c - //SEG257 [120] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word) 1 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 + //SEG512 [235] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word) 1 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 lda c and #1 sta _2 - //SEG258 [121] if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word) 0) goto init_multiply::@2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG513 [236] if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word) 0) goto init_multiply::@2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) -- vbuz1_neq_0_then_la1 lda _2 bne b2_from_b1 jmp b5 - //SEG259 init_multiply::@5 + //SEG514 init_multiply::@5 b5: - //SEG260 [122] (byte) init_multiply::x_2#1 ← ++ (byte) init_multiply::x_2#3 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG515 [237] (byte) init_multiply::x_2#1 ← ++ (byte) init_multiply::x_2#3 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ) -- vbuz1=_inc_vbuz1 inc x_2 - //SEG261 [123] (word) init_multiply::sqr#2 ← ++ (word) init_multiply::sqr#4 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ) -- vwuz1=_inc_vwuz1 + //SEG516 [238] (word) init_multiply::sqr#2 ← ++ (word) init_multiply::sqr#4 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ) -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG262 [124] phi from init_multiply::@1 init_multiply::@5 to init_multiply::@2 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2] + //SEG517 [239] phi from init_multiply::@1 init_multiply::@5 to init_multiply::@2 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2] b2_from_b1: b2_from_b5: - //SEG263 [124] phi (byte) init_multiply::x_2#2 = (byte) init_multiply::x_2#3 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2#0] -- register_copy - //SEG264 [124] phi (word) init_multiply::sqr#3 = (word) init_multiply::sqr#4 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2#1] -- register_copy + //SEG518 [239] phi (byte) init_multiply::x_2#2 = (byte) init_multiply::x_2#3 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2#0] -- register_copy + //SEG519 [239] phi (word) init_multiply::sqr#3 = (word) init_multiply::sqr#4 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2#1] -- register_copy jmp b2 - //SEG265 init_multiply::@2 + //SEG520 init_multiply::@2 b2: - //SEG266 [125] (byte~) init_multiply::$5 ← < (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ) -- vbuz1=_lo_vwuz2 + //SEG521 [240] (byte~) init_multiply::$5 ← < (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ) -- vbuz1=_lo_vwuz2 lda sqr sta _5 - //SEG267 [126] *((byte*) init_multiply::sqr1_lo#2) ← (byte~) init_multiply::$5 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- _deref_pbuz1=vbuz2 + //SEG522 [241] *((byte*) init_multiply::sqr1_lo#2) ← (byte~) init_multiply::$5 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- _deref_pbuz1=vbuz2 ldy #0 lda _5 sta (sqr1_lo),y - //SEG268 [127] (byte~) init_multiply::$6 ← > (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ) -- vbuz1=_hi_vwuz2 + //SEG523 [242] (byte~) init_multiply::$6 ← > (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ) -- vbuz1=_hi_vwuz2 lda sqr+1 sta _6 - //SEG269 [128] *((byte*) init_multiply::sqr1_hi#2) ← (byte~) init_multiply::$6 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- _deref_pbuz1=vbuz2 + //SEG524 [243] *((byte*) init_multiply::sqr1_hi#2) ← (byte~) init_multiply::$6 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- _deref_pbuz1=vbuz2 ldy #0 lda _6 sta (sqr1_hi),y - //SEG270 [129] (byte*) init_multiply::sqr1_hi#1 ← ++ (byte*) init_multiply::sqr1_hi#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- pbuz1=_inc_pbuz1 + //SEG525 [244] (byte*) init_multiply::sqr1_hi#1 ← ++ (byte*) init_multiply::sqr1_hi#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG271 [130] (word) init_multiply::sqr#1 ← (word) init_multiply::sqr#3 + (byte) init_multiply::x_2#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2 + //SEG526 [245] (word) init_multiply::sqr#1 ← (word) init_multiply::sqr#3 + (byte) init_multiply::x_2#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr sta sqr - bcc !+ - inc sqr+1 - !: - //SEG272 [131] (byte*) init_multiply::sqr1_lo#1 ← ++ (byte*) init_multiply::sqr1_lo#2 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- pbuz1=_inc_pbuz1 + lda #0 + adc sqr+1 + sta sqr+1 + //SEG527 [246] (byte*) init_multiply::sqr1_lo#1 ← ++ (byte*) init_multiply::sqr1_lo#2 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG273 [132] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_multiply::@1 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG528 [247] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_multiply::@1 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mul_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #init_multiply::@3] + //SEG529 [248] phi from init_multiply::@2 to init_multiply::@3 [phi:init_multiply::@2->init_multiply::@3] b3_from_b2: - //SEG275 [133] phi (byte) init_multiply::dir#2 = (byte/word/signed word) 255 [phi:init_multiply::@2->init_multiply::@3#0] -- vbuz1=vbuc1 + //SEG530 [248] phi (byte) init_multiply::dir#2 = (byte/word/signed word) 255 [phi:init_multiply::@2->init_multiply::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG276 [133] phi (byte*) init_multiply::sqr2_hi#2 = (const byte[512]) mul_sqr2_hi#0 [phi:init_multiply::@2->init_multiply::@3#1] -- pbuz1=pbuc1 + //SEG531 [248] phi (byte*) init_multiply::sqr2_hi#2 = (const byte[512]) mul_sqr2_hi#0 [phi:init_multiply::@2->init_multiply::@3#1] -- pbuz1=pbuc1 lda #mul_sqr2_hi sta sqr2_hi+1 - //SEG277 [133] phi (byte*) init_multiply::sqr2_lo#2 = (const byte[512]) mul_sqr2_lo#0 [phi:init_multiply::@2->init_multiply::@3#2] -- pbuz1=pbuc1 + //SEG532 [248] phi (byte*) init_multiply::sqr2_lo#2 = (const byte[512]) mul_sqr2_lo#0 [phi:init_multiply::@2->init_multiply::@3#2] -- pbuz1=pbuc1 lda #mul_sqr2_lo sta sqr2_lo+1 - //SEG278 [133] phi (byte) init_multiply::x_255#2 = ((byte))-(byte/signed byte/word/signed word) 1 [phi:init_multiply::@2->init_multiply::@3#3] -- vbuz1=vbuc1 + //SEG533 [248] phi (byte) init_multiply::x_255#2 = ((byte))-(byte/signed byte/word/signed word) 1 [phi:init_multiply::@2->init_multiply::@3#3] -- vbuz1=vbuc1 lda #-1 sta x_255 jmp b3 - //SEG279 [133] phi from init_multiply::@4 to init_multiply::@3 [phi:init_multiply::@4->init_multiply::@3] + //SEG534 [248] phi from init_multiply::@4 to init_multiply::@3 [phi:init_multiply::@4->init_multiply::@3] b3_from_b4: - //SEG280 [133] phi (byte) init_multiply::dir#2 = (byte) init_multiply::dir#3 [phi:init_multiply::@4->init_multiply::@3#0] -- register_copy - //SEG281 [133] phi (byte*) init_multiply::sqr2_hi#2 = (byte*) init_multiply::sqr2_hi#1 [phi:init_multiply::@4->init_multiply::@3#1] -- register_copy - //SEG282 [133] phi (byte*) init_multiply::sqr2_lo#2 = (byte*) init_multiply::sqr2_lo#1 [phi:init_multiply::@4->init_multiply::@3#2] -- register_copy - //SEG283 [133] phi (byte) init_multiply::x_255#2 = (byte) init_multiply::x_255#1 [phi:init_multiply::@4->init_multiply::@3#3] -- register_copy + //SEG535 [248] phi (byte) init_multiply::dir#2 = (byte) init_multiply::dir#3 [phi:init_multiply::@4->init_multiply::@3#0] -- register_copy + //SEG536 [248] phi (byte*) init_multiply::sqr2_hi#2 = (byte*) init_multiply::sqr2_hi#1 [phi:init_multiply::@4->init_multiply::@3#1] -- register_copy + //SEG537 [248] phi (byte*) init_multiply::sqr2_lo#2 = (byte*) init_multiply::sqr2_lo#1 [phi:init_multiply::@4->init_multiply::@3#2] -- register_copy + //SEG538 [248] phi (byte) init_multiply::x_255#2 = (byte) init_multiply::x_255#1 [phi:init_multiply::@4->init_multiply::@3#3] -- register_copy jmp b3 - //SEG284 init_multiply::@3 + //SEG539 init_multiply::@3 b3: - //SEG285 [134] *((byte*) init_multiply::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG540 [249] *((byte*) init_multiply::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldx x_255 lda mul_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG286 [135] *((byte*) init_multiply::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG541 [250] *((byte*) init_multiply::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldx x_255 lda mul_sqr1_hi,x ldy #0 sta (sqr2_hi),y - //SEG287 [136] (byte*) init_multiply::sqr2_hi#1 ← ++ (byte*) init_multiply::sqr2_hi#2 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG542 [251] (byte*) init_multiply::sqr2_hi#1 ← ++ (byte*) init_multiply::sqr2_hi#2 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG288 [137] (byte) init_multiply::x_255#1 ← (byte) init_multiply::x_255#2 + (byte) init_multiply::dir#2 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 + //SEG543 [252] (byte) init_multiply::x_255#1 ← (byte) init_multiply::x_255#2 + (byte) init_multiply::dir#2 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 lda x_255 clc adc dir sta x_255 - //SEG289 [138] if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_multiply::@12 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG544 [253] if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_multiply::@12 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) -- vbuz1_neq_0_then_la1 lda x_255 bne b12_from_b3 - //SEG290 [139] phi from init_multiply::@3 to init_multiply::@4 [phi:init_multiply::@3->init_multiply::@4] + //SEG545 [254] phi from init_multiply::@3 to init_multiply::@4 [phi:init_multiply::@3->init_multiply::@4] b4_from_b3: - //SEG291 [139] phi (byte) init_multiply::dir#3 = (byte/signed byte/word/signed word) 1 [phi:init_multiply::@3->init_multiply::@4#0] -- vbuz1=vbuc1 + //SEG546 [254] phi (byte) init_multiply::dir#3 = (byte/signed byte/word/signed word) 1 [phi:init_multiply::@3->init_multiply::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG292 init_multiply::@4 + //SEG547 init_multiply::@4 b4: - //SEG293 [140] (byte*) init_multiply::sqr2_lo#1 ← ++ (byte*) init_multiply::sqr2_lo#2 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) -- pbuz1=_inc_pbuz1 + //SEG548 [255] (byte*) init_multiply::sqr2_lo#1 ← ++ (byte*) init_multiply::sqr2_lo#2 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG294 [141] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_multiply::@3 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG549 [256] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_multiply::@3 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mul_sqr2_lo+$1ff bne b3_from_b4 @@ -4576,56 +8006,56 @@ init_multiply: { cmp #init_multiply::@12] + //SEG555 [260] phi from init_multiply::@3 to init_multiply::@12 [phi:init_multiply::@3->init_multiply::@12] b12_from_b3: jmp b12 - //SEG301 init_multiply::@12 + //SEG556 init_multiply::@12 b12: - //SEG302 [139] phi from init_multiply::@12 to init_multiply::@4 [phi:init_multiply::@12->init_multiply::@4] + //SEG557 [254] phi from init_multiply::@12 to init_multiply::@4 [phi:init_multiply::@12->init_multiply::@4] b4_from_b12: - //SEG303 [139] phi (byte) init_multiply::dir#3 = (byte) init_multiply::dir#2 [phi:init_multiply::@12->init_multiply::@4#0] -- register_copy + //SEG558 [254] phi (byte) init_multiply::dir#3 = (byte) init_multiply::dir#2 [phi:init_multiply::@12->init_multiply::@4#0] -- register_copy jmp b4 } -//SEG304 print_cls +//SEG559 print_cls print_cls: { - .label sc = $23 - //SEG305 [147] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + .label sc = $30 + //SEG560 [262] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG306 [147] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG561 [262] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG307 [147] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG562 [262] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG308 [147] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG563 [262] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG309 print_cls::@1 + //SEG564 print_cls::@1 b1: - //SEG310 [148] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG565 [263] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #' ' sta (sc),y - //SEG311 [149] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG566 [264] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG312 [150] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 + //SEG567 [265] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -4633,9 +8063,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG313 print_cls::@return + //SEG568 print_cls::@return breturn: - //SEG314 [151] return [ ] ( main:2::print_cls:5 [ ] ) + //SEG569 [266] return [ ] ( main:2::print_cls:5 [ ] ) rts } .align $100 @@ -4657,220 +8087,371 @@ print_cls: { REGISTER UPLIFT POTENTIAL REGISTERS Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ multiply_results_compare::a#5 multiply_results_compare::a#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] -Statement [22] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a -Statement [26] (word) multiply::return#2 ← (word) multiply::return#0 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#2 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a -Statement [27] (word) multiply_results_compare::ma#0 ← (word) multiply::return#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a -Statement [28] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a -Statement [29] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a -Statement [31] (word) print_word::w#2 ← (word) multiply_results_compare::ms#0 [ multiply_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ) always clobbers reg byte a -Statement [35] (word) print_word::w#3 ← (word) multiply_results_compare::ma#0 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ) always clobbers reg byte a -Statement [47] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ char_cursor#89 line_cursor#1 ] ( main:2::multiply_results_compare:13 [ char_cursor#89 line_cursor#1 ] ) always clobbers reg byte a -Statement [50] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a -Statement [51] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a -Statement [55] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y -Statement [57] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y -Statement [61] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ) always clobbers reg byte a -Statement [63] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 print_byte::b#1 ] ) always clobbers reg byte a -Statement [70] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a -Statement [75] *((byte*) char_cursor#41) ← (byte) print_char::ch#2 [ char_cursor#41 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#41 ] ) always clobbers reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Statement [23] (signed word) slow_signed_multiply::return#2 ← (signed word) slow_signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ] +Statement [24] (signed word) signed_multiply_results_compare::ms#0 ← (signed word) slow_signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [28] (signed word) signed_multiply::return#2 ← (signed word) signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#2 line_cursor#1 ] ) always clobbers reg byte a +Statement [29] (signed word) signed_multiply_results_compare::ma#0 ← (signed word) signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [30] if((signed word) signed_multiply_results_compare::ms#0==(signed word) signed_multiply_results_compare::ma#0) goto signed_multiply_results_compare::@3 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [31] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [34] (signed word) signed_multiply_error::ms#0 ← (signed word) signed_multiply_results_compare::ms#0 [ signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 line_cursor#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:62 [ signed_multiply_error::a#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:63 [ signed_multiply_error::b#0 ] +Statement [35] (signed word) signed_multiply_error::ma#0 ← (signed word) signed_multiply_results_compare::ma#0 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [42] (byte*~) char_cursor#176 ← (byte*) line_cursor#1 [ char_cursor#176 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ char_cursor#176 line_cursor#1 ] ) always clobbers reg byte a +Statement [48] (byte*) line_cursor#1 ← (byte*) line_cursor#20 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 char_cursor#118 ] ) always clobbers reg byte a +Statement [49] if((byte*) line_cursor#1<(byte*) char_cursor#118) goto print_ln::@1 [ line_cursor#1 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 char_cursor#118 ] ) always clobbers reg byte a +Statement [53] if(*((byte*) print_str::str#14)!=(byte) '@') goto print_str::@2 [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:62 [ signed_multiply_error::a#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:63 [ signed_multiply_error::b#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:92 [ multiply_error::a#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:92 [ multiply_error::a#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:93 [ multiply_error::b#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:93 [ multiply_error::b#0 ] +Statement [55] *((byte*) char_cursor#117) ← *((byte*) print_str::str#14) [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) always clobbers reg byte a reg byte y +Statement [58] (byte*~) char_cursor#172 ← (byte*) line_cursor#1 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#172 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#172 ] ) always clobbers reg byte a +Statement [68] (signed word) print_sword::w#1 ← (signed word) signed_multiply_error::ms#0 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#1 ] ) always clobbers reg byte a +Statement [72] (signed word) print_sword::w#2 ← (signed word) signed_multiply_error::ma#0 [ line_cursor#1 char_cursor#117 print_sword::w#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ line_cursor#1 char_cursor#117 print_sword::w#2 ] ) always clobbers reg byte a +Statement [78] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word) 0) goto print_sword::@1 [ char_cursor#117 print_sword::w#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#117 print_sword::w#3 ] ) always clobbers reg byte a +Statement [81] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ char_cursor#17 print_sword::w#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sword::w#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 print_sword::w#0 ] ) always clobbers reg byte a +Statement [83] (word) print_word::w#0 ← ((word)) (signed word) print_sword::w#4 [ char_cursor#119 print_word::w#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#119 print_word::w#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#119 print_word::w#0 ] ) always clobbers reg byte a +Statement [87] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:215 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] ) always clobbers reg byte a +Statement [89] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ char_cursor#17 print_byte::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 print_byte::b#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::b#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 print_byte::b#2 ] ) always clobbers reg byte a +Statement [96] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word) 15 [ char_cursor#17 print_byte::$2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] ) always clobbers reg byte a +Statement [101] *((byte*) char_cursor#75) ← (byte) print_char::ch#4 [ char_cursor#75 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#75 ] ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:12 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:16 [ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ] +Statement [108] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ char_cursor#17 print_sbyte::b#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#0 ] ) always clobbers reg byte a +Statement [116] (word) multiply::return#2 ← (word) multiply::return#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::return#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ signed_multiply::a#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:57 [ signed_multiply::b#0 ] +Statement [117] (word) signed_multiply::m#0 ← (word) multiply::return#2 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ) always clobbers reg byte a +Statement [119] (byte~) signed_multiply::$6 ← > (word) signed_multiply::m#0 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 ] ) always clobbers reg byte a +Statement [121] (byte/signed byte/word/signed word~) signed_multiply::$16 ← (byte~) signed_multiply::$6 - (byte~) signed_multiply::$7 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$16 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$16 ] ) always clobbers reg byte a +Statement [125] (byte~) signed_multiply::$12 ← > (word) signed_multiply::m#5 [ signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ) always clobbers reg byte a +Statement [127] (byte/signed byte/word/signed word~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte~) signed_multiply::$13 [ signed_multiply::m#5 signed_multiply::$17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#5 signed_multiply::$17 ] ) always clobbers reg byte a +Statement [130] (signed word) signed_multiply::return#0 ← ((signed word)) (word) signed_multiply::m#4 [ signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::return#0 ] ) always clobbers reg byte a Statement asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB } always clobbers reg byte a reg byte x -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ multiply_results_compare::a#5 multiply_results_compare::a#1 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] -Statement [81] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::return#0 ] ) always clobbers reg byte a -Statement [85] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ slow_multiply::a#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:38 [ slow_multiply::b#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ slow_multiply::i#2 slow_multiply::i#1 ] -Statement [92] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a reg byte y -Statement [93] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a -Statement [95] (word) print_word::w#0 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#2 print_word::w#0 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 print_word::w#0 multiply_tables_compare::kc_sqr#2 ] ) always clobbers reg byte a -Statement [99] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#2 print_word::w#1 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 print_word::w#1 ] ) always clobbers reg byte a -Statement [105] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) always clobbers reg byte a -Statement [110] (byte*~) char_cursor#100 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#100 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#100 ] ) always clobbers reg byte a +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:56 [ signed_multiply::a#0 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:57 [ signed_multiply::b#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] +Statement [136] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) always clobbers reg byte a +Statement [140] (signed word) slow_signed_multiply::m#1 ← (signed word) slow_signed_multiply::m#3 - (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ slow_signed_multiply::a#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ slow_signed_multiply::b#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ slow_signed_multiply::i#2 slow_signed_multiply::i#1 ] +Statement [147] (signed word) slow_signed_multiply::m#2 ← (signed word) slow_signed_multiply::m#5 + (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ slow_signed_multiply::j#2 slow_signed_multiply::j#1 ] +Statement [156] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ) always clobbers reg byte a +Statement [157] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) always clobbers reg byte a +Statement [161] (word) multiply::return#3 ← (word) multiply::return#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ) always clobbers reg byte a +Statement [162] (word) multiply_results_compare::ma#0 ← (word) multiply::return#3 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) always clobbers reg byte a +Statement [163] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) always clobbers reg byte a +Statement [164] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) always clobbers reg byte a +Statement [167] (word) multiply_error::ms#0 ← (word) multiply_results_compare::ms#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ) always clobbers reg byte a +Statement [168] (word) multiply_error::ma#0 ← (word) multiply_results_compare::ma#0 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) always clobbers reg byte a +Statement [189] (word) print_word::w#3 ← (word) multiply_error::ms#0 [ char_cursor#117 line_cursor#27 print_word::w#3 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_word::w#3 multiply_error::ma#0 ] ) always clobbers reg byte a +Statement [193] (word) print_word::w#4 ← (word) multiply_error::ma#0 [ char_cursor#117 line_cursor#27 print_word::w#4 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_word::w#4 ] ) always clobbers reg byte a +Statement [200] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:82 [ slow_multiply::a#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:83 [ slow_multiply::b#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ slow_multiply::i#2 slow_multiply::i#1 ] +Statement [207] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a reg byte y +Statement [208] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a +Statement [210] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ) always clobbers reg byte a +Statement [214] (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#2 ] ) always clobbers reg byte a +Statement [220] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) always clobbers reg byte a +Statement [225] (byte*~) char_cursor#197 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#197 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#197 ] ) always clobbers reg byte a Statement asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } always clobbers reg byte a reg byte x reg byte y -Statement [112] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a -Statement [113] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a -Statement [114] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a -Statement [115] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a -Statement [120] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word) 1 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ init_multiply::c#2 init_multiply::c#1 ] -Statement [125] (byte~) init_multiply::$5 ← < (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ) always clobbers reg byte a -Statement [126] *((byte*) init_multiply::sqr1_lo#2) ← (byte~) init_multiply::$5 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) always clobbers reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:21 [ init_multiply::c#2 init_multiply::c#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:26 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] -Statement [127] (byte~) init_multiply::$6 ← > (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ) always clobbers reg byte a -Statement [128] *((byte*) init_multiply::sqr1_hi#2) ← (byte~) init_multiply::$6 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) always clobbers reg byte y -Statement [130] (word) init_multiply::sqr#1 ← (word) init_multiply::sqr#3 + (byte) init_multiply::x_2#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) always clobbers reg byte a -Statement [132] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_multiply::@1 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) always clobbers reg byte a -Statement [134] *((byte*) init_multiply::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ init_multiply::x_255#2 init_multiply::x_255#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:29 [ init_multiply::x_255#2 init_multiply::x_255#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ init_multiply::dir#2 init_multiply::dir#3 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:34 [ init_multiply::dir#2 init_multiply::dir#3 ] -Statement [135] *((byte*) init_multiply::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [137] (byte) init_multiply::x_255#1 ← (byte) init_multiply::x_255#2 + (byte) init_multiply::dir#2 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [141] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_multiply::@3 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) always clobbers reg byte a -Statement [142] *((const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word) 256) [ ] ( main:2::init_multiply:7 [ ] ) always clobbers reg byte a -Statement [143] *((const byte[512]) mul_sqr2_hi#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word) 256) [ ] ( main:2::init_multiply:7 [ ] ) always clobbers reg byte a -Statement [148] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [150] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [227] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a +Statement [228] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a +Statement [229] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a +Statement [230] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a +Statement [235] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word) 1 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ init_multiply::c#2 init_multiply::c#1 ] +Statement [240] (byte~) init_multiply::$5 ← < (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ) always clobbers reg byte a +Statement [241] *((byte*) init_multiply::sqr1_lo#2) ← (byte~) init_multiply::$5 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:34 [ init_multiply::c#2 init_multiply::c#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] +Statement [242] (byte~) init_multiply::$6 ← > (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ) always clobbers reg byte a +Statement [243] *((byte*) init_multiply::sqr1_hi#2) ← (byte~) init_multiply::$6 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) always clobbers reg byte y +Statement [245] (word) init_multiply::sqr#1 ← (word) init_multiply::sqr#3 + (byte) init_multiply::x_2#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) always clobbers reg byte a +Statement [247] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_multiply::@1 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) always clobbers reg byte a +Statement [249] *((byte*) init_multiply::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ init_multiply::x_255#2 init_multiply::x_255#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:42 [ init_multiply::x_255#2 init_multiply::x_255#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ] +Statement [250] *((byte*) init_multiply::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [252] (byte) init_multiply::x_255#1 ← (byte) init_multiply::x_255#2 + (byte) init_multiply::dir#2 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [256] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_multiply::@3 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) always clobbers reg byte a +Statement [257] *((const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word) 256) [ ] ( main:2::init_multiply:7 [ ] ) always clobbers reg byte a +Statement [258] *((const byte[512]) mul_sqr2_hi#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word) 256) [ ] ( main:2::init_multiply:7 [ ] ) always clobbers reg byte a +Statement [263] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [265] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a -Statement [22] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a -Statement [26] (word) multiply::return#2 ← (word) multiply::return#0 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#2 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a -Statement [27] (word) multiply_results_compare::ma#0 ← (word) multiply::return#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a -Statement [28] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a -Statement [29] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a -Statement [31] (word) print_word::w#2 ← (word) multiply_results_compare::ms#0 [ multiply_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ) always clobbers reg byte a -Statement [35] (word) print_word::w#3 ← (word) multiply_results_compare::ma#0 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ) always clobbers reg byte a -Statement [47] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ char_cursor#89 line_cursor#1 ] ( main:2::multiply_results_compare:13 [ char_cursor#89 line_cursor#1 ] ) always clobbers reg byte a -Statement [50] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a -Statement [51] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a -Statement [55] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y -Statement [57] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y -Statement [61] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ) always clobbers reg byte a -Statement [63] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 print_byte::b#1 ] ) always clobbers reg byte a -Statement [70] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a -Statement [75] *((byte*) char_cursor#41) ← (byte) print_char::ch#2 [ char_cursor#41 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#41 ] ) always clobbers reg byte y +Statement [23] (signed word) slow_signed_multiply::return#2 ← (signed word) slow_signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ) always clobbers reg byte a +Statement [24] (signed word) signed_multiply_results_compare::ms#0 ← (signed word) slow_signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [28] (signed word) signed_multiply::return#2 ← (signed word) signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#2 line_cursor#1 ] ) always clobbers reg byte a +Statement [29] (signed word) signed_multiply_results_compare::ma#0 ← (signed word) signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [30] if((signed word) signed_multiply_results_compare::ms#0==(signed word) signed_multiply_results_compare::ma#0) goto signed_multiply_results_compare::@3 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [31] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [32] (signed byte) signed_multiply_error::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [33] (signed byte) signed_multiply_error::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [34] (signed word) signed_multiply_error::ms#0 ← (signed word) signed_multiply_results_compare::ms#0 [ signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [35] (signed word) signed_multiply_error::ma#0 ← (signed word) signed_multiply_results_compare::ma#0 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [42] (byte*~) char_cursor#176 ← (byte*) line_cursor#1 [ char_cursor#176 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ char_cursor#176 line_cursor#1 ] ) always clobbers reg byte a +Statement [48] (byte*) line_cursor#1 ← (byte*) line_cursor#20 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 char_cursor#118 ] ) always clobbers reg byte a +Statement [49] if((byte*) line_cursor#1<(byte*) char_cursor#118) goto print_ln::@1 [ line_cursor#1 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 char_cursor#118 ] ) always clobbers reg byte a +Statement [53] if(*((byte*) print_str::str#14)!=(byte) '@') goto print_str::@2 [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) always clobbers reg byte a reg byte y +Statement [55] *((byte*) char_cursor#117) ← *((byte*) print_str::str#14) [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) always clobbers reg byte a reg byte y +Statement [58] (byte*~) char_cursor#172 ← (byte*) line_cursor#1 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#172 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#172 ] ) always clobbers reg byte a +Statement [68] (signed word) print_sword::w#1 ← (signed word) signed_multiply_error::ms#0 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#1 ] ) always clobbers reg byte a +Statement [72] (signed word) print_sword::w#2 ← (signed word) signed_multiply_error::ma#0 [ line_cursor#1 char_cursor#117 print_sword::w#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ line_cursor#1 char_cursor#117 print_sword::w#2 ] ) always clobbers reg byte a +Statement [78] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word) 0) goto print_sword::@1 [ char_cursor#117 print_sword::w#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#117 print_sword::w#3 ] ) always clobbers reg byte a +Statement [81] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ char_cursor#17 print_sword::w#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sword::w#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 print_sword::w#0 ] ) always clobbers reg byte a +Statement [83] (word) print_word::w#0 ← ((word)) (signed word) print_sword::w#4 [ char_cursor#119 print_word::w#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#119 print_word::w#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#119 print_word::w#0 ] ) always clobbers reg byte a +Statement [87] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:215 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] ) always clobbers reg byte a +Statement [89] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ char_cursor#17 print_byte::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 print_byte::b#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::b#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 print_byte::b#2 ] ) always clobbers reg byte a +Statement [96] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word) 15 [ char_cursor#17 print_byte::$2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] ) always clobbers reg byte a +Statement [101] *((byte*) char_cursor#75) ← (byte) print_char::ch#4 [ char_cursor#75 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#75 ] ) always clobbers reg byte y +Statement [108] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ char_cursor#17 print_sbyte::b#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#0 ] ) always clobbers reg byte a +Statement [116] (word) multiply::return#2 ← (word) multiply::return#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::return#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#2 ] ) always clobbers reg byte a +Statement [117] (word) signed_multiply::m#0 ← (word) multiply::return#2 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ) always clobbers reg byte a +Statement [119] (byte~) signed_multiply::$6 ← > (word) signed_multiply::m#0 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 ] ) always clobbers reg byte a +Statement [121] (byte/signed byte/word/signed word~) signed_multiply::$16 ← (byte~) signed_multiply::$6 - (byte~) signed_multiply::$7 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$16 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$16 ] ) always clobbers reg byte a +Statement [125] (byte~) signed_multiply::$12 ← > (word) signed_multiply::m#5 [ signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ) always clobbers reg byte a +Statement [127] (byte/signed byte/word/signed word~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte~) signed_multiply::$13 [ signed_multiply::m#5 signed_multiply::$17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#5 signed_multiply::$17 ] ) always clobbers reg byte a +Statement [130] (signed word) signed_multiply::return#0 ← ((signed word)) (word) signed_multiply::m#4 [ signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::return#0 ] ) always clobbers reg byte a Statement asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB } always clobbers reg byte a reg byte x -Statement [81] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::return#0 ] ) always clobbers reg byte a -Potential register analysis [83] if(slow_multiply::a#0<=0) goto slow_multiply::@1 missing fragment vbuxx_le_0_then_la1 allocation: reg byte x [ slow_multiply::a#0 ] -Potential register analysis [83] if(slow_multiply::a#0<=0) goto slow_multiply::@1 missing fragment vbuyy_le_0_then_la1 allocation: reg byte y [ slow_multiply::a#0 ] -MISSING FRAGMENTS - vbuxx_le_0_then_la1 - vbuyy_le_0_then_la1 -Statement [83] if((byte) slow_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 ] ) always clobbers reg byte a -Statement [85] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) always clobbers reg byte a -Statement [92] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a reg byte y -Statement [93] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a -Statement [95] (word) print_word::w#0 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#2 print_word::w#0 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 print_word::w#0 multiply_tables_compare::kc_sqr#2 ] ) always clobbers reg byte a -Statement [99] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#2 print_word::w#1 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 print_word::w#1 ] ) always clobbers reg byte a -Statement [105] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) always clobbers reg byte a -Statement [110] (byte*~) char_cursor#100 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#100 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#100 ] ) always clobbers reg byte a +Statement [136] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) always clobbers reg byte a +Statement [140] (signed word) slow_signed_multiply::m#1 ← (signed word) slow_signed_multiply::m#3 - (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ) always clobbers reg byte a +Statement [147] (signed word) slow_signed_multiply::m#2 ← (signed word) slow_signed_multiply::m#5 + (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ) always clobbers reg byte a +Statement [156] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ) always clobbers reg byte a +Statement [157] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) always clobbers reg byte a +Statement [161] (word) multiply::return#3 ← (word) multiply::return#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ) always clobbers reg byte a +Statement [162] (word) multiply_results_compare::ma#0 ← (word) multiply::return#3 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) always clobbers reg byte a +Statement [163] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) always clobbers reg byte a +Statement [164] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) always clobbers reg byte a +Statement [167] (word) multiply_error::ms#0 ← (word) multiply_results_compare::ms#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ) always clobbers reg byte a +Statement [168] (word) multiply_error::ma#0 ← (word) multiply_results_compare::ma#0 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) always clobbers reg byte a +Statement [189] (word) print_word::w#3 ← (word) multiply_error::ms#0 [ char_cursor#117 line_cursor#27 print_word::w#3 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_word::w#3 multiply_error::ma#0 ] ) always clobbers reg byte a +Statement [193] (word) print_word::w#4 ← (word) multiply_error::ma#0 [ char_cursor#117 line_cursor#27 print_word::w#4 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_word::w#4 ] ) always clobbers reg byte a +Statement [200] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) always clobbers reg byte a +Statement [207] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a reg byte y +Statement [208] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a +Statement [210] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ) always clobbers reg byte a +Statement [214] (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#2 ] ) always clobbers reg byte a +Statement [220] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) always clobbers reg byte a +Statement [225] (byte*~) char_cursor#197 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#197 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#197 ] ) always clobbers reg byte a Statement asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } always clobbers reg byte a reg byte x reg byte y -Statement [112] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a -Statement [113] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a -Statement [114] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a -Statement [115] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a -Statement [120] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word) 1 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ) always clobbers reg byte a -Statement [125] (byte~) init_multiply::$5 ← < (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ) always clobbers reg byte a -Statement [126] *((byte*) init_multiply::sqr1_lo#2) ← (byte~) init_multiply::$5 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) always clobbers reg byte y -Statement [127] (byte~) init_multiply::$6 ← > (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ) always clobbers reg byte a -Statement [128] *((byte*) init_multiply::sqr1_hi#2) ← (byte~) init_multiply::$6 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) always clobbers reg byte y -Statement [130] (word) init_multiply::sqr#1 ← (word) init_multiply::sqr#3 + (byte) init_multiply::x_2#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) always clobbers reg byte a -Statement [132] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_multiply::@1 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) always clobbers reg byte a -Statement [134] *((byte*) init_multiply::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [135] *((byte*) init_multiply::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [137] (byte) init_multiply::x_255#1 ← (byte) init_multiply::x_255#2 + (byte) init_multiply::dir#2 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [141] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_multiply::@3 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) always clobbers reg byte a -Statement [142] *((const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word) 256) [ ] ( main:2::init_multiply:7 [ ] ) always clobbers reg byte a -Statement [143] *((const byte[512]) mul_sqr2_hi#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word) 256) [ ] ( main:2::init_multiply:7 [ ] ) always clobbers reg byte a -Statement [148] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [150] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a -Potential registers zp ZP_BYTE:2 [ multiply_results_compare::a#5 multiply_results_compare::a#1 ] : zp ZP_BYTE:2 , reg byte y , -Potential registers zp ZP_BYTE:3 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] : zp ZP_BYTE:3 , reg byte y , -Potential registers zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 ] : zp ZP_WORD:4 , -Potential registers zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 ] : zp ZP_WORD:6 , -Potential registers zp ZP_WORD:8 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] : zp ZP_WORD:8 , -Potential registers zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , -Potential registers zp ZP_BYTE:11 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:12 [ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 ] : zp ZP_WORD:12 , -Potential registers zp ZP_BYTE:14 [ slow_multiply::i#2 slow_multiply::i#1 ] : zp ZP_BYTE:14 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:15 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] : zp ZP_WORD:15 , -Potential registers zp ZP_WORD:17 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] : zp ZP_WORD:17 , -Potential registers zp ZP_WORD:19 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ] : zp ZP_WORD:19 , -Potential registers zp ZP_BYTE:21 [ init_multiply::c#2 init_multiply::c#1 ] : zp ZP_BYTE:21 , reg byte x , -Potential registers zp ZP_WORD:22 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] : zp ZP_WORD:22 , -Potential registers zp ZP_WORD:24 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] : zp ZP_WORD:24 , -Potential registers zp ZP_BYTE:26 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] : zp ZP_BYTE:26 , reg byte x , -Potential registers zp ZP_WORD:27 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] : zp ZP_WORD:27 , -Potential registers zp ZP_BYTE:29 [ init_multiply::x_255#2 init_multiply::x_255#1 ] : zp ZP_BYTE:29 , reg byte x , -Potential registers zp ZP_WORD:30 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] : zp ZP_WORD:30 , -Potential registers zp ZP_WORD:32 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] : zp ZP_WORD:32 , -Potential registers zp ZP_BYTE:34 [ init_multiply::dir#2 init_multiply::dir#3 ] : zp ZP_BYTE:34 , reg byte x , -Potential registers zp ZP_WORD:35 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:35 , -Potential registers zp ZP_BYTE:37 [ slow_multiply::a#0 ] : zp ZP_BYTE:37 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:38 [ slow_multiply::b#0 ] : zp ZP_BYTE:38 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:39 [ slow_multiply::return#2 ] : zp ZP_WORD:39 , -Potential registers zp ZP_WORD:41 [ multiply_results_compare::ms#0 ] : zp ZP_WORD:41 , -Potential registers zp ZP_BYTE:43 [ multiply::a#0 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:44 [ multiply::b#0 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:45 [ multiply::return#2 ] : zp ZP_WORD:45 , -Potential registers zp ZP_WORD:47 [ multiply_results_compare::ma#0 ] : zp ZP_WORD:47 , -Potential registers zp ZP_BYTE:49 [ print_byte::$0 ] : zp ZP_BYTE:49 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:50 [ print_byte::$2 ] : zp ZP_BYTE:50 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:51 [ multiply::return#0 ] : zp ZP_WORD:51 , -Potential registers zp ZP_BYTE:53 [ init_multiply::$2 ] : zp ZP_BYTE:53 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:54 [ init_multiply::$5 ] : zp ZP_BYTE:54 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:55 [ init_multiply::$6 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y , +Statement [227] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a +Statement [228] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a +Statement [229] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a +Statement [230] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) always clobbers reg byte a +Statement [235] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word) 1 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ) always clobbers reg byte a +Statement [240] (byte~) init_multiply::$5 ← < (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ) always clobbers reg byte a +Statement [241] *((byte*) init_multiply::sqr1_lo#2) ← (byte~) init_multiply::$5 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) always clobbers reg byte y +Statement [242] (byte~) init_multiply::$6 ← > (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ) always clobbers reg byte a +Statement [243] *((byte*) init_multiply::sqr1_hi#2) ← (byte~) init_multiply::$6 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) always clobbers reg byte y +Statement [245] (word) init_multiply::sqr#1 ← (word) init_multiply::sqr#3 + (byte) init_multiply::x_2#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) always clobbers reg byte a +Statement [247] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_multiply::@1 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) always clobbers reg byte a +Statement [249] *((byte*) init_multiply::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [250] *((byte*) init_multiply::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [252] (byte) init_multiply::x_255#1 ← (byte) init_multiply::x_255#2 + (byte) init_multiply::dir#2 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [256] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_multiply::@3 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) always clobbers reg byte a +Statement [257] *((const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word) 256) [ ] ( main:2::init_multiply:7 [ ] ) always clobbers reg byte a +Statement [258] *((const byte[512]) mul_sqr2_hi#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word) 256) [ ] ( main:2::init_multiply:7 [ ] ) always clobbers reg byte a +Statement [263] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [265] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ] : zp ZP_BYTE:2 , reg byte y , +Potential registers zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ] : zp ZP_BYTE:3 , reg byte y , +Potential registers zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ] : zp ZP_WORD:4 , +Potential registers zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 ] : zp ZP_WORD:6 , +Potential registers zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] : zp ZP_WORD:8 , +Potential registers zp ZP_WORD:10 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] : zp ZP_WORD:10 , +Potential registers zp ZP_BYTE:12 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , +Potential registers zp ZP_BYTE:13 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] : zp ZP_BYTE:13 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:14 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ] : zp ZP_WORD:14 , +Potential registers zp ZP_BYTE:16 [ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ] : zp ZP_BYTE:16 , reg byte a , reg byte x , +Potential registers zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] : zp ZP_WORD:17 , +Potential registers zp ZP_BYTE:19 [ multiply::a#2 multiply::a#1 multiply::a#0 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:20 [ multiply::b#2 multiply::b#1 multiply::b#0 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:21 [ slow_signed_multiply::i#2 slow_signed_multiply::i#1 ] : zp ZP_BYTE:21 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:22 [ slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 ] : zp ZP_WORD:22 , +Potential registers zp ZP_BYTE:24 [ slow_signed_multiply::j#2 slow_signed_multiply::j#1 ] : zp ZP_BYTE:24 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] : zp ZP_BYTE:25 , reg byte y , +Potential registers zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] : zp ZP_BYTE:26 , reg byte y , +Potential registers zp ZP_BYTE:27 [ slow_multiply::i#2 slow_multiply::i#1 ] : zp ZP_BYTE:27 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:28 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] : zp ZP_WORD:28 , +Potential registers zp ZP_WORD:30 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] : zp ZP_WORD:30 , +Potential registers zp ZP_WORD:32 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ] : zp ZP_WORD:32 , +Potential registers zp ZP_BYTE:34 [ init_multiply::c#2 init_multiply::c#1 ] : zp ZP_BYTE:34 , reg byte x , +Potential registers zp ZP_WORD:35 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] : zp ZP_WORD:35 , +Potential registers zp ZP_WORD:37 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] : zp ZP_WORD:37 , +Potential registers zp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] : zp ZP_BYTE:39 , reg byte x , +Potential registers zp ZP_WORD:40 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] : zp ZP_WORD:40 , +Potential registers zp ZP_BYTE:42 [ init_multiply::x_255#2 init_multiply::x_255#1 ] : zp ZP_BYTE:42 , reg byte x , +Potential registers zp ZP_WORD:43 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] : zp ZP_WORD:43 , +Potential registers zp ZP_WORD:45 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] : zp ZP_WORD:45 , +Potential registers zp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ] : zp ZP_BYTE:47 , reg byte x , +Potential registers zp ZP_WORD:48 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:48 , +Potential registers zp ZP_BYTE:50 [ slow_signed_multiply::a#0 ] : zp ZP_BYTE:50 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:51 [ slow_signed_multiply::b#0 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:52 [ slow_signed_multiply::return#2 ] : zp ZP_WORD:52 , +Potential registers zp ZP_WORD:54 [ signed_multiply_results_compare::ms#0 ] : zp ZP_WORD:54 , +Potential registers zp ZP_BYTE:56 [ signed_multiply::a#0 ] : zp ZP_BYTE:56 , reg byte y , +Potential registers zp ZP_BYTE:57 [ signed_multiply::b#0 ] : zp ZP_BYTE:57 , reg byte y , +Potential registers zp ZP_WORD:58 [ signed_multiply::return#2 ] : zp ZP_WORD:58 , +Potential registers zp ZP_WORD:60 [ signed_multiply_results_compare::ma#0 ] : zp ZP_WORD:60 , +Potential registers zp ZP_BYTE:62 [ signed_multiply_error::a#0 ] : zp ZP_BYTE:62 , reg byte x , +Potential registers zp ZP_BYTE:63 [ signed_multiply_error::b#0 ] : zp ZP_BYTE:63 , reg byte x , +Potential registers zp ZP_WORD:64 [ signed_multiply_error::ms#0 ] : zp ZP_WORD:64 , +Potential registers zp ZP_WORD:66 [ signed_multiply_error::ma#0 ] : zp ZP_WORD:66 , +Potential registers zp ZP_BYTE:68 [ print_byte::$0 ] : zp ZP_BYTE:68 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:69 [ print_byte::$2 ] : zp ZP_BYTE:69 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:70 [ multiply::return#2 ] : zp ZP_WORD:70 , +Potential registers zp ZP_BYTE:72 [ signed_multiply::$6 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:73 [ signed_multiply::$7 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:74 [ signed_multiply::$16 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:75 [ signed_multiply::$12 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:76 [ signed_multiply::$13 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:77 [ signed_multiply::$17 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:78 [ signed_multiply::return#0 ] : zp ZP_WORD:78 , +Potential registers zp ZP_WORD:80 [ multiply::return#0 ] : zp ZP_WORD:80 , +Potential registers zp ZP_BYTE:82 [ slow_multiply::a#0 ] : zp ZP_BYTE:82 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:83 [ slow_multiply::b#0 ] : zp ZP_BYTE:83 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:84 [ slow_multiply::return#2 ] : zp ZP_WORD:84 , +Potential registers zp ZP_WORD:86 [ multiply_results_compare::ms#0 ] : zp ZP_WORD:86 , +Potential registers zp ZP_WORD:88 [ multiply::return#3 ] : zp ZP_WORD:88 , +Potential registers zp ZP_WORD:90 [ multiply_results_compare::ma#0 ] : zp ZP_WORD:90 , +Potential registers zp ZP_BYTE:92 [ multiply_error::a#0 ] : zp ZP_BYTE:92 , reg byte x , +Potential registers zp ZP_BYTE:93 [ multiply_error::b#0 ] : zp ZP_BYTE:93 , reg byte x , +Potential registers zp ZP_WORD:94 [ multiply_error::ms#0 ] : zp ZP_WORD:94 , +Potential registers zp ZP_WORD:96 [ multiply_error::ma#0 ] : zp ZP_WORD:96 , +Potential registers zp ZP_BYTE:98 [ init_multiply::$2 ] : zp ZP_BYTE:98 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:99 [ init_multiply::$5 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:100 [ init_multiply::$6 ] : zp ZP_BYTE:100 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [slow_multiply] 3,370.33: zp ZP_WORD:15 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] 2,502.5: zp ZP_BYTE:14 [ slow_multiply::i#2 slow_multiply::i#1 ] 202: zp ZP_WORD:39 [ slow_multiply::return#2 ] 183.67: zp ZP_BYTE:38 [ slow_multiply::b#0 ] 157.71: zp ZP_BYTE:37 [ slow_multiply::a#0 ] -Uplift Scope [multiply] 202: zp ZP_WORD:45 [ multiply::return#2 ] 51.5: zp ZP_BYTE:43 [ multiply::a#0 ] 51.5: zp ZP_BYTE:44 [ multiply::b#0 ] 34.33: zp ZP_WORD:51 [ multiply::return#0 ] -Uplift Scope [multiply_results_compare] 185.17: zp ZP_BYTE:3 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] 31.43: zp ZP_BYTE:2 [ multiply_results_compare::a#5 multiply_results_compare::a#1 ] 25.5: zp ZP_WORD:47 [ multiply_results_compare::ma#0 ] 22.67: zp ZP_WORD:41 [ multiply_results_compare::ms#0 ] -Uplift Scope [init_multiply] 45.1: zp ZP_WORD:27 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] 24.36: zp ZP_BYTE:21 [ init_multiply::c#2 init_multiply::c#1 ] 24.14: zp ZP_BYTE:26 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] 22: zp ZP_BYTE:53 [ init_multiply::$2 ] 22: zp ZP_BYTE:54 [ init_multiply::$5 ] 22: zp ZP_BYTE:55 [ init_multiply::$6 ] 20.62: zp ZP_WORD:30 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] 19.04: zp ZP_WORD:22 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] 16.5: zp ZP_BYTE:29 [ init_multiply::x_255#2 init_multiply::x_255#1 ] 14.14: zp ZP_WORD:32 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] 12.05: zp ZP_BYTE:34 [ init_multiply::dir#2 init_multiply::dir#3 ] 8.5: zp ZP_WORD:24 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] -Uplift Scope [] 78.34: zp ZP_WORD:12 [ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 ] 74.04: zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 ] -Uplift Scope [multiply_tables_compare] 20.39: zp ZP_WORD:17 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] 16.08: zp ZP_WORD:19 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ] -Uplift Scope [print_str] 35.5: zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 ] -Uplift Scope [print_cls] 33: zp ZP_WORD:35 [ print_cls::sc#2 print_cls::sc#1 ] -Uplift Scope [print_word] 20: zp ZP_WORD:8 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] -Uplift Scope [print_byte] 10: zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:49 [ print_byte::$0 ] 4: zp ZP_BYTE:50 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp ZP_BYTE:11 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [slow_signed_multiply] 6,707: zp ZP_WORD:22 [ slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 ] 2,502.5: zp ZP_BYTE:21 [ slow_signed_multiply::i#2 slow_signed_multiply::i#1 ] 2,502.5: zp ZP_BYTE:24 [ slow_signed_multiply::j#2 slow_signed_multiply::j#1 ] 202: zp ZP_WORD:52 [ slow_signed_multiply::return#2 ] 191.18: zp ZP_BYTE:51 [ slow_signed_multiply::b#0 ] 175.58: zp ZP_BYTE:50 [ slow_signed_multiply::a#0 ] +Uplift Scope [slow_multiply] 3,370.33: zp ZP_WORD:28 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] 2,502.5: zp ZP_BYTE:27 [ slow_multiply::i#2 slow_multiply::i#1 ] 202: zp ZP_WORD:84 [ slow_multiply::return#2 ] 183.67: zp ZP_BYTE:83 [ slow_multiply::b#0 ] 157.71: zp ZP_BYTE:82 [ slow_multiply::a#0 ] +Uplift Scope [multiply] 258.5: zp ZP_BYTE:20 [ multiply::b#2 multiply::b#1 multiply::b#0 ] 208: zp ZP_BYTE:19 [ multiply::a#2 multiply::a#1 multiply::a#0 ] 202: zp ZP_WORD:88 [ multiply::return#3 ] 26.25: zp ZP_WORD:80 [ multiply::return#0 ] 4: zp ZP_WORD:70 [ multiply::return#2 ] +Uplift Scope [signed_multiply] 202: zp ZP_WORD:58 [ signed_multiply::return#2 ] 34.33: zp ZP_WORD:78 [ signed_multiply::return#0 ] 17.6: zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] 8.92: zp ZP_BYTE:57 [ signed_multiply::b#0 ] 7.13: zp ZP_BYTE:56 [ signed_multiply::a#0 ] 4: zp ZP_BYTE:73 [ signed_multiply::$7 ] 4: zp ZP_BYTE:74 [ signed_multiply::$16 ] 4: zp ZP_BYTE:76 [ signed_multiply::$13 ] 4: zp ZP_BYTE:77 [ signed_multiply::$17 ] 2: zp ZP_BYTE:72 [ signed_multiply::$6 ] 2: zp ZP_BYTE:75 [ signed_multiply::$12 ] +Uplift Scope [multiply_results_compare] 180.5: zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] 34: zp ZP_WORD:90 [ multiply_results_compare::ma#0 ] 30.62: zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] 20.4: zp ZP_WORD:86 [ multiply_results_compare::ms#0 ] +Uplift Scope [signed_multiply_results_compare] 180.5: zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ] 34: zp ZP_WORD:60 [ signed_multiply_results_compare::ma#0 ] 30.62: zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ] 20.4: zp ZP_WORD:54 [ signed_multiply_results_compare::ms#0 ] +Uplift Scope [init_multiply] 45.1: zp ZP_WORD:40 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] 24.36: zp ZP_BYTE:34 [ init_multiply::c#2 init_multiply::c#1 ] 24.14: zp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] 22: zp ZP_BYTE:98 [ init_multiply::$2 ] 22: zp ZP_BYTE:99 [ init_multiply::$5 ] 22: zp ZP_BYTE:100 [ init_multiply::$6 ] 20.62: zp ZP_WORD:43 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] 19.04: zp ZP_WORD:35 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] 16.5: zp ZP_BYTE:42 [ init_multiply::x_255#2 init_multiply::x_255#1 ] 14.14: zp ZP_WORD:45 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] 12.05: zp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ] 8.5: zp ZP_WORD:37 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] +Uplift Scope [] 77.01: zp ZP_WORD:14 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ] 34.95: zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ] +Uplift Scope [multiply_tables_compare] 20.39: zp ZP_WORD:30 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] 16.08: zp ZP_WORD:32 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ] +Uplift Scope [print_str] 35.5: zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 ] +Uplift Scope [print_cls] 33: zp ZP_WORD:48 [ print_cls::sc#2 print_cls::sc#1 ] +Uplift Scope [print_byte] 23.5: zp ZP_BYTE:12 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] 4: zp ZP_BYTE:68 [ print_byte::$0 ] 4: zp ZP_BYTE:69 [ print_byte::$2 ] +Uplift Scope [print_word] 24.67: zp ZP_WORD:10 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] +Uplift Scope [print_sword] 20.5: zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] +Uplift Scope [print_sbyte] 20.5: zp ZP_BYTE:16 [ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:13 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplift Scope [multiply_error] 0.67: zp ZP_BYTE:92 [ multiply_error::a#0 ] 0.44: zp ZP_BYTE:93 [ multiply_error::b#0 ] 0.33: zp ZP_WORD:94 [ multiply_error::ms#0 ] 0.27: zp ZP_WORD:96 [ multiply_error::ma#0 ] +Uplift Scope [signed_multiply_error] 0.67: zp ZP_BYTE:62 [ signed_multiply_error::a#0 ] 0.44: zp ZP_BYTE:63 [ signed_multiply_error::b#0 ] 0.33: zp ZP_WORD:64 [ signed_multiply_error::ms#0 ] 0.27: zp ZP_WORD:66 [ signed_multiply_error::ma#0 ] Uplift Scope [print_ln] Uplift Scope [main] Uplift Scope [init_multiply_asm] -Uplifting [slow_multiply] best 66221 combination zp ZP_WORD:15 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] reg byte y [ slow_multiply::i#2 slow_multiply::i#1 ] zp ZP_WORD:39 [ slow_multiply::return#2 ] reg byte x [ slow_multiply::b#0 ] zp ZP_BYTE:37 [ slow_multiply::a#0 ] -Uplifting [multiply] best 65615 combination zp ZP_WORD:45 [ multiply::return#2 ] reg byte x [ multiply::a#0 ] reg byte a [ multiply::b#0 ] zp ZP_WORD:51 [ multiply::return#0 ] -Uplifting [multiply_results_compare] best 65615 combination zp ZP_BYTE:3 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] zp ZP_BYTE:2 [ multiply_results_compare::a#5 multiply_results_compare::a#1 ] zp ZP_WORD:47 [ multiply_results_compare::ma#0 ] zp ZP_WORD:41 [ multiply_results_compare::ms#0 ] -Uplifting [init_multiply] best 65265 combination zp ZP_WORD:27 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] reg byte x [ init_multiply::c#2 init_multiply::c#1 ] zp ZP_BYTE:26 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] reg byte a [ init_multiply::$2 ] reg byte a [ init_multiply::$5 ] reg byte a [ init_multiply::$6 ] zp ZP_WORD:30 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] zp ZP_WORD:22 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] reg byte x [ init_multiply::x_255#2 init_multiply::x_255#1 ] zp ZP_WORD:32 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] zp ZP_BYTE:34 [ init_multiply::dir#2 init_multiply::dir#3 ] zp ZP_WORD:24 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] -Uplifting [] best 65265 combination zp ZP_WORD:12 [ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 ] zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 ] -Uplifting [multiply_tables_compare] best 65265 combination zp ZP_WORD:17 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] zp ZP_WORD:19 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ] -Uplifting [print_str] best 65265 combination zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 ] -Uplifting [print_cls] best 65265 combination zp ZP_WORD:35 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_word] best 65265 combination zp ZP_WORD:8 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] -Uplifting [print_byte] best 65253 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte y [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_char] best 65244 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplifting [print_ln] best 65244 combination -Uplifting [main] best 65244 combination -Uplifting [init_multiply_asm] best 65244 combination -MISSING FRAGMENTS - vbuxx_le_0_then_la1 - vbuyy_le_0_then_la1 -Attempting to uplift remaining variables inzp ZP_BYTE:3 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] -Uplifting [multiply_results_compare] best 65244 combination zp ZP_BYTE:3 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:37 [ slow_multiply::a#0 ] -Uplifting [slow_multiply] best 65244 combination zp ZP_BYTE:37 [ slow_multiply::a#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:2 [ multiply_results_compare::a#5 multiply_results_compare::a#1 ] -Uplifting [multiply_results_compare] best 65244 combination zp ZP_BYTE:2 [ multiply_results_compare::a#5 multiply_results_compare::a#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:26 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] -Uplifting [init_multiply] best 65244 combination zp ZP_BYTE:26 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:34 [ init_multiply::dir#2 init_multiply::dir#3 ] -Uplifting [init_multiply] best 65244 combination zp ZP_BYTE:34 [ init_multiply::dir#2 init_multiply::dir#3 ] -Coalescing zero page register [ zp ZP_BYTE:2 [ multiply_results_compare::a#5 multiply_results_compare::a#1 ] ] with [ zp ZP_BYTE:26 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ multiply_results_compare::a#5 multiply_results_compare::a#1 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] ] with [ zp ZP_BYTE:34 [ init_multiply::dir#2 init_multiply::dir#3 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ multiply_results_compare::a#5 multiply_results_compare::a#1 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 ] ] with [ zp ZP_BYTE:37 [ slow_multiply::a#0 ] ] -Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 ] ] with [ zp ZP_WORD:17 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] ] -Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] ] with [ zp ZP_WORD:22 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] ] -Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] ] with [ zp ZP_WORD:30 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] ] -Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] ] with [ zp ZP_WORD:35 [ print_cls::sc#2 print_cls::sc#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 ] ] with [ zp ZP_WORD:8 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] ] with [ zp ZP_WORD:15 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] ] with [ zp ZP_WORD:24 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] ] with [ zp ZP_WORD:32 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] ] with [ zp ZP_WORD:39 [ slow_multiply::return#2 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_multiply::return#2 ] ] with [ zp ZP_WORD:45 [ multiply::return#2 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_multiply::return#2 multiply::return#2 ] ] with [ zp ZP_WORD:51 [ multiply::return#0 ] ] -Coalescing zero page register [ zp ZP_WORD:12 [ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 ] ] with [ zp ZP_WORD:27 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] ] -Coalescing zero page register [ zp ZP_WORD:19 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ] ] with [ zp ZP_WORD:41 [ multiply_results_compare::ms#0 ] ] -Allocated (was zp ZP_WORD:12) zp ZP_WORD:8 [ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] -Allocated (was zp ZP_WORD:19) zp ZP_WORD:10 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 multiply_results_compare::ms#0 ] -Allocated (was zp ZP_WORD:47) zp ZP_WORD:12 [ multiply_results_compare::ma#0 ] +Uplifting [slow_signed_multiply] best 234039 combination zp ZP_WORD:22 [ slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 ] reg byte y [ slow_signed_multiply::i#2 slow_signed_multiply::i#1 ] reg byte y [ slow_signed_multiply::j#2 slow_signed_multiply::j#1 ] zp ZP_WORD:52 [ slow_signed_multiply::return#2 ] reg byte x [ slow_signed_multiply::b#0 ] zp ZP_BYTE:50 [ slow_signed_multiply::a#0 ] +Uplifting [slow_multiply] best 223739 combination zp ZP_WORD:28 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] reg byte y [ slow_multiply::i#2 slow_multiply::i#1 ] zp ZP_WORD:84 [ slow_multiply::return#2 ] reg byte x [ slow_multiply::b#0 ] zp ZP_BYTE:82 [ slow_multiply::a#0 ] +Uplifting [multiply] best 223129 combination reg byte a [ multiply::b#2 multiply::b#1 multiply::b#0 ] reg byte x [ multiply::a#2 multiply::a#1 multiply::a#0 ] zp ZP_WORD:88 [ multiply::return#3 ] zp ZP_WORD:80 [ multiply::return#0 ] zp ZP_WORD:70 [ multiply::return#2 ] +Uplift attempts [signed_multiply] 10000/16384 (limiting to 10000) +Uplifting [signed_multiply] best 223004 combination zp ZP_WORD:58 [ signed_multiply::return#2 ] zp ZP_WORD:78 [ signed_multiply::return#0 ] zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] reg byte y [ signed_multiply::b#0 ] zp ZP_BYTE:56 [ signed_multiply::a#0 ] reg byte a [ signed_multiply::$7 ] reg byte a [ signed_multiply::$16 ] reg byte a [ signed_multiply::$13 ] reg byte a [ signed_multiply::$17 ] zp ZP_BYTE:72 [ signed_multiply::$6 ] zp ZP_BYTE:75 [ signed_multiply::$12 ] +Limited combination testing to 10000 combinations of 16384 possible. +Uplifting [multiply_results_compare] best 223004 combination zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] zp ZP_WORD:90 [ multiply_results_compare::ma#0 ] zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] zp ZP_WORD:86 [ multiply_results_compare::ms#0 ] +Uplifting [signed_multiply_results_compare] best 223004 combination zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ] zp ZP_WORD:60 [ signed_multiply_results_compare::ma#0 ] zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ] zp ZP_WORD:54 [ signed_multiply_results_compare::ms#0 ] +Uplifting [init_multiply] best 222654 combination zp ZP_WORD:40 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] reg byte x [ init_multiply::c#2 init_multiply::c#1 ] zp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] reg byte a [ init_multiply::$2 ] reg byte a [ init_multiply::$5 ] reg byte a [ init_multiply::$6 ] zp ZP_WORD:43 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] zp ZP_WORD:35 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] reg byte x [ init_multiply::x_255#2 init_multiply::x_255#1 ] zp ZP_WORD:45 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] zp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ] zp ZP_WORD:37 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] +Uplifting [] best 222654 combination zp ZP_WORD:14 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ] zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ] +Uplifting [multiply_tables_compare] best 222654 combination zp ZP_WORD:30 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] zp ZP_WORD:32 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ] +Uplifting [print_str] best 222654 combination zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 ] +Uplifting [print_cls] best 222654 combination zp ZP_WORD:48 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_byte] best 222635 combination reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] reg byte y [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_word] best 222635 combination zp ZP_WORD:10 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] +Uplifting [print_sword] best 222635 combination zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] +Uplifting [print_sbyte] best 222623 combination reg byte x [ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ] +Uplifting [print_char] best 222608 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplifting [multiply_error] best 222602 combination reg byte x [ multiply_error::a#0 ] zp ZP_BYTE:93 [ multiply_error::b#0 ] zp ZP_WORD:94 [ multiply_error::ms#0 ] zp ZP_WORD:96 [ multiply_error::ma#0 ] +Uplifting [signed_multiply_error] best 222596 combination reg byte x [ signed_multiply_error::a#0 ] zp ZP_BYTE:63 [ signed_multiply_error::b#0 ] zp ZP_WORD:64 [ signed_multiply_error::ms#0 ] zp ZP_WORD:66 [ signed_multiply_error::ma#0 ] +Uplifting [print_ln] best 222596 combination +Uplifting [main] best 222596 combination +Uplifting [init_multiply_asm] best 222596 combination +Attempting to uplift remaining variables inzp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ] +Uplifting [signed_multiply_results_compare] best 222596 combination zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] +Uplifting [multiply_results_compare] best 222596 combination zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:50 [ slow_signed_multiply::a#0 ] +Uplifting [slow_signed_multiply] best 222596 combination zp ZP_BYTE:50 [ slow_signed_multiply::a#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:82 [ slow_multiply::a#0 ] +Uplifting [slow_multiply] best 222596 combination zp ZP_BYTE:82 [ slow_multiply::a#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ] +Uplifting [signed_multiply_results_compare] best 222596 combination zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] +Uplifting [multiply_results_compare] best 222596 combination zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] +Uplifting [init_multiply] best 222596 combination zp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ] +Uplifting [init_multiply] best 222596 combination zp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:56 [ signed_multiply::a#0 ] +Uplifting [signed_multiply] best 222596 combination zp ZP_BYTE:56 [ signed_multiply::a#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:72 [ signed_multiply::$6 ] +Uplifting [signed_multiply] best 222596 combination zp ZP_BYTE:72 [ signed_multiply::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:75 [ signed_multiply::$12 ] +Uplifting [signed_multiply] best 222596 combination zp ZP_BYTE:75 [ signed_multiply::$12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:63 [ signed_multiply_error::b#0 ] +Uplifting [signed_multiply_error] best 222596 combination zp ZP_BYTE:63 [ signed_multiply_error::b#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:93 [ multiply_error::b#0 ] +Uplifting [multiply_error] best 222596 combination zp ZP_BYTE:93 [ multiply_error::b#0 ] +Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ] ] with [ zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 multiply_results_compare::a#6 multiply_results_compare::a#1 ] ] with [ zp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 multiply_results_compare::a#6 multiply_results_compare::a#1 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] ] with [ zp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 multiply_results_compare::a#6 multiply_results_compare::a#1 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 ] ] with [ zp ZP_BYTE:50 [ slow_signed_multiply::a#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 multiply_results_compare::a#6 multiply_results_compare::a#1 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 slow_signed_multiply::a#0 ] ] with [ zp ZP_BYTE:56 [ signed_multiply::a#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 multiply_results_compare::a#6 multiply_results_compare::a#1 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 slow_signed_multiply::a#0 signed_multiply::a#0 ] ] with [ zp ZP_BYTE:63 [ signed_multiply_error::b#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 multiply_results_compare::a#6 multiply_results_compare::a#1 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 slow_signed_multiply::a#0 signed_multiply::a#0 signed_multiply_error::b#0 ] ] with [ zp ZP_BYTE:82 [ slow_multiply::a#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 multiply_results_compare::a#6 multiply_results_compare::a#1 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 slow_signed_multiply::a#0 signed_multiply::a#0 signed_multiply_error::b#0 slow_multiply::a#0 ] ] with [ zp ZP_BYTE:93 [ multiply_error::b#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ] ] with [ zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ] ] with [ zp ZP_WORD:30 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] ] with [ zp ZP_WORD:35 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] ] with [ zp ZP_WORD:43 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] ] with [ zp ZP_WORD:48 [ print_cls::sc#2 print_cls::sc#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 ] ] with [ zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] ] with [ zp ZP_WORD:10 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] ] with [ zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] ] with [ zp ZP_WORD:22 [ slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 ] ] with [ zp ZP_WORD:28 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] ] with [ zp ZP_WORD:37 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] ] with [ zp ZP_WORD:45 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] ] with [ zp ZP_WORD:52 [ slow_signed_multiply::return#2 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 ] ] with [ zp ZP_WORD:58 [ signed_multiply::return#2 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 ] ] with [ zp ZP_WORD:60 [ signed_multiply_results_compare::ma#0 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 ] ] with [ zp ZP_WORD:70 [ multiply::return#2 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 ] ] with [ zp ZP_WORD:78 [ signed_multiply::return#0 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 signed_multiply::return#0 ] ] with [ zp ZP_WORD:80 [ multiply::return#0 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 signed_multiply::return#0 multiply::return#0 ] ] with [ zp ZP_WORD:84 [ slow_multiply::return#2 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 signed_multiply::return#0 multiply::return#0 slow_multiply::return#2 ] ] with [ zp ZP_WORD:88 [ multiply::return#3 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 signed_multiply::return#0 multiply::return#0 slow_multiply::return#2 multiply::return#3 ] ] with [ zp ZP_WORD:90 [ multiply_results_compare::ma#0 ] ] +Coalescing zero page register [ zp ZP_WORD:14 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ] ] with [ zp ZP_WORD:40 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] ] +Coalescing zero page register [ zp ZP_WORD:14 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] ] with [ zp ZP_WORD:54 [ signed_multiply_results_compare::ms#0 ] ] +Coalescing zero page register [ zp ZP_WORD:32 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ] ] with [ zp ZP_WORD:64 [ signed_multiply_error::ms#0 ] ] +Coalescing zero page register [ zp ZP_WORD:32 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 ] ] with [ zp ZP_WORD:86 [ multiply_results_compare::ms#0 ] ] +Coalescing zero page register [ zp ZP_WORD:32 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 multiply_results_compare::ms#0 ] ] with [ zp ZP_WORD:94 [ multiply_error::ms#0 ] ] +Coalescing zero page register [ zp ZP_WORD:66 [ signed_multiply_error::ma#0 ] ] with [ zp ZP_WORD:96 [ multiply_error::ma#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:72 [ signed_multiply::$6 ] ] with [ zp ZP_BYTE:75 [ signed_multiply::$12 ] ] +Allocated (was zp ZP_WORD:14) zp ZP_WORD:8 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 signed_multiply_results_compare::ms#0 ] +Allocated (was zp ZP_WORD:32) zp ZP_WORD:10 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 multiply_results_compare::ms#0 multiply_error::ms#0 ] +Allocated (was zp ZP_WORD:66) zp ZP_WORD:12 [ signed_multiply_error::ma#0 multiply_error::ma#0 ] +Allocated (was zp ZP_BYTE:72) zp ZP_BYTE:14 [ signed_multiply::$6 signed_multiply::$12 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -4883,15 +8464,15 @@ ASSEMBLER BEFORE OPTIMIZATION .label line_cursor = 4 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] -b13_from_bbegin: - jmp b13 -//SEG4 @13 -b13: +//SEG3 [1] phi from @begin to @20 [phi:@begin->@20] +b20_from_bbegin: + jmp b20 +//SEG4 @20 +b20: //SEG5 [2] call main param-assignment [ ] ( ) jsr main -//SEG6 [3] phi from @13 to @end [phi:@13->@end] -bend_from_b13: +//SEG6 [3] phi from @20 to @end [phi:@20->@end] +bend_from_b20: jmp bend //SEG7 @end bend: @@ -4901,7 +8482,7 @@ main: { lda #5 sta BGCOL //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] ) - //SEG11 [146] phi from main to print_cls [phi:main->print_cls] + //SEG11 [261] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] @@ -4910,7 +8491,7 @@ main: { //SEG13 main::@1 b1: //SEG14 [7] call init_multiply param-assignment [ ] ( main:2 [ ] ) - //SEG15 [117] phi from main::@1 to init_multiply [phi:main::@1->init_multiply] + //SEG15 [232] phi from main::@1 to init_multiply [phi:main::@1->init_multiply] init_multiply_from_b1: jsr init_multiply //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -4925,8 +8506,8 @@ main: { jmp b3 //SEG20 main::@3 b3: - //SEG21 [11] call multiply_tables_compare param-assignment [ line_cursor#17 char_cursor#20 ] ( main:2 [ line_cursor#17 char_cursor#20 ] ) - //SEG22 [90] phi from main::@3 to multiply_tables_compare [phi:main::@3->multiply_tables_compare] + //SEG21 [11] call multiply_tables_compare param-assignment [ line_cursor#27 char_cursor#27 ] ( main:2 [ line_cursor#27 char_cursor#27 ] ) + //SEG22 [205] phi from main::@3 to multiply_tables_compare [phi:main::@3->multiply_tables_compare] multiply_tables_compare_from_b3: jsr multiply_tables_compare //SEG23 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] @@ -4934,79 +8515,87 @@ main: { jmp b4 //SEG24 main::@4 b4: - //SEG25 [13] call multiply_results_compare param-assignment [ ] ( main:2 [ ] ) - //SEG26 [15] phi from main::@4 to multiply_results_compare [phi:main::@4->multiply_results_compare] + //SEG25 [13] call multiply_results_compare param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + //SEG26 [150] phi from main::@4 to multiply_results_compare [phi:main::@4->multiply_results_compare] multiply_results_compare_from_b4: jsr multiply_results_compare + //SEG27 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + b5_from_b4: + jmp b5 + //SEG28 main::@5 + b5: + //SEG29 [15] call signed_multiply_results_compare param-assignment [ ] ( main:2 [ ] ) + //SEG30 [17] phi from main::@5 to signed_multiply_results_compare [phi:main::@5->signed_multiply_results_compare] + signed_multiply_results_compare_from_b5: + jsr signed_multiply_results_compare jmp breturn - //SEG27 main::@return + //SEG31 main::@return breturn: - //SEG28 [14] return [ ] ( main:2 [ ] ) + //SEG32 [16] return [ ] ( main:2 [ ] ) rts } -//SEG29 multiply_results_compare -multiply_results_compare: { - .label ms = $a - .label ma = $c +//SEG33 signed_multiply_results_compare +signed_multiply_results_compare: { + .label ms = 8 + .label ma = 6 .label b = 3 .label a = 2 - //SEG30 [16] phi from multiply_results_compare to multiply_results_compare::@1 [phi:multiply_results_compare->multiply_results_compare::@1] - b1_from_multiply_results_compare: - //SEG31 [16] phi (byte) multiply_results_compare::a#5 = (byte/signed byte/word/signed word) 0 [phi:multiply_results_compare->multiply_results_compare::@1#0] -- vbuz1=vbuc1 - lda #0 + //SEG34 [18] phi from signed_multiply_results_compare to signed_multiply_results_compare::@1 [phi:signed_multiply_results_compare->signed_multiply_results_compare::@1] + b1_from_signed_multiply_results_compare: + //SEG35 [18] phi (signed byte) signed_multiply_results_compare::a#6 = -(byte/word/signed word) 128 [phi:signed_multiply_results_compare->signed_multiply_results_compare::@1#0] -- vbsz1=vbsc1 + lda #-$80 sta a jmp b1 - //SEG32 [16] phi from multiply_results_compare::@6 to multiply_results_compare::@1 [phi:multiply_results_compare::@6->multiply_results_compare::@1] + //SEG36 [18] phi from signed_multiply_results_compare::@6 to signed_multiply_results_compare::@1 [phi:signed_multiply_results_compare::@6->signed_multiply_results_compare::@1] b1_from_b6: - //SEG33 [16] phi (byte) multiply_results_compare::a#5 = (byte) multiply_results_compare::a#1 [phi:multiply_results_compare::@6->multiply_results_compare::@1#0] -- register_copy + //SEG37 [18] phi (signed byte) signed_multiply_results_compare::a#6 = (signed byte) signed_multiply_results_compare::a#1 [phi:signed_multiply_results_compare::@6->signed_multiply_results_compare::@1#0] -- register_copy jmp b1 - //SEG34 multiply_results_compare::@1 + //SEG38 signed_multiply_results_compare::@1 b1: - //SEG35 [17] phi from multiply_results_compare::@1 to multiply_results_compare::@2 [phi:multiply_results_compare::@1->multiply_results_compare::@2] + //SEG39 [19] phi from signed_multiply_results_compare::@1 to signed_multiply_results_compare::@2 [phi:signed_multiply_results_compare::@1->signed_multiply_results_compare::@2] b2_from_b1: - //SEG36 [17] phi (byte) multiply_results_compare::b#2 = (byte/signed byte/word/signed word) 0 [phi:multiply_results_compare::@1->multiply_results_compare::@2#0] -- vbuz1=vbuc1 - lda #0 + //SEG40 [19] phi (signed byte) signed_multiply_results_compare::b#2 = -(byte/word/signed word) 128 [phi:signed_multiply_results_compare::@1->signed_multiply_results_compare::@2#0] -- vbsz1=vbsc1 + lda #-$80 sta b jmp b2 - //SEG37 [17] phi from multiply_results_compare::@3 to multiply_results_compare::@2 [phi:multiply_results_compare::@3->multiply_results_compare::@2] + //SEG41 [19] phi from signed_multiply_results_compare::@3 to signed_multiply_results_compare::@2 [phi:signed_multiply_results_compare::@3->signed_multiply_results_compare::@2] b2_from_b3: - //SEG38 [17] phi (byte) multiply_results_compare::b#2 = (byte) multiply_results_compare::b#1 [phi:multiply_results_compare::@3->multiply_results_compare::@2#0] -- register_copy + //SEG42 [19] phi (signed byte) signed_multiply_results_compare::b#2 = (signed byte) signed_multiply_results_compare::b#1 [phi:signed_multiply_results_compare::@3->signed_multiply_results_compare::@2#0] -- register_copy jmp b2 - //SEG39 multiply_results_compare::@2 + //SEG43 signed_multiply_results_compare::@2 b2: - //SEG40 [18] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#5 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ) - // (byte) slow_multiply::a#0 = (byte) multiply_results_compare::a#5 // register copy zp ZP_BYTE:2 - //SEG41 [19] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ) -- vbuxx=vbuz1 - ldx b - //SEG42 [20] call slow_multiply param-assignment [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ) - jsr slow_multiply - //SEG43 [21] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ) - // (word) slow_multiply::return#2 = (word) slow_multiply::return#0 // register copy zp ZP_WORD:6 - jmp b8 - //SEG44 multiply_results_compare::@8 - b8: - //SEG45 [22] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1=vwuz2 - lda slow_multiply.return - sta ms - lda slow_multiply.return+1 - sta ms+1 - //SEG46 [23] (byte) multiply::a#0 ← (byte) multiply_results_compare::a#5 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 line_cursor#17 char_cursor#20 ] ) -- vbuxx=vbuz1 - ldx a - //SEG47 [24] (byte) multiply::b#0 ← (byte) multiply_results_compare::b#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 multiply::b#0 line_cursor#17 char_cursor#20 ] ) -- vbuaa=vbuz1 + //SEG44 [20] (signed byte) slow_signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 line_cursor#1 ] ) + // (signed byte) slow_signed_multiply::a#0 = (signed byte) signed_multiply_results_compare::a#6 // register copy zp ZP_BYTE:2 + //SEG45 [21] (signed byte) slow_signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 slow_signed_multiply::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 slow_signed_multiply::b#0 line_cursor#1 ] ) -- vbsxx=vbsz1 lda b - //SEG48 [25] call multiply param-assignment [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 line_cursor#17 char_cursor#20 ] ) - jsr multiply - //SEG49 [26] (word) multiply::return#2 ← (word) multiply::return#0 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#2 line_cursor#17 char_cursor#20 ] ) - // (word) multiply::return#2 = (word) multiply::return#0 // register copy zp ZP_WORD:6 + tax + //SEG46 [22] call slow_signed_multiply param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#0 line_cursor#1 ] ) + jsr slow_signed_multiply + //SEG47 [23] (signed word) slow_signed_multiply::return#2 ← (signed word) slow_signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ) + // (signed word) slow_signed_multiply::return#2 = (signed word) slow_signed_multiply::return#0 // register copy zp ZP_WORD:6 + jmp b8 + //SEG48 signed_multiply_results_compare::@8 + b8: + //SEG49 [24] (signed word) signed_multiply_results_compare::ms#0 ← (signed word) slow_signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] ) -- vwsz1=vwsz2 + lda slow_signed_multiply.return + sta ms + lda slow_signed_multiply.return+1 + sta ms+1 + //SEG50 [25] (signed byte) signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 line_cursor#1 ] ) + // (signed byte) signed_multiply::a#0 = (signed byte) signed_multiply_results_compare::a#6 // register copy zp ZP_BYTE:2 + //SEG51 [26] (signed byte) signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 signed_multiply::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 signed_multiply::b#0 line_cursor#1 ] ) -- vbsyy=vbsz1 + lda b + tay + //SEG52 [27] call signed_multiply param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#0 line_cursor#1 ] ) + jsr signed_multiply + //SEG53 [28] (signed word) signed_multiply::return#2 ← (signed word) signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#2 line_cursor#1 ] ) + // (signed word) signed_multiply::return#2 = (signed word) signed_multiply::return#0 // register copy zp ZP_WORD:6 jmp b9 - //SEG50 multiply_results_compare::@9 + //SEG54 signed_multiply_results_compare::@9 b9: - //SEG51 [27] (word) multiply_results_compare::ma#0 ← (word) multiply::return#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1=vwuz2 - lda multiply.return - sta ma - lda multiply.return+1 - sta ma+1 - //SEG52 [28] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1_eq_vwuz2_then_la1 + //SEG55 [29] (signed word) signed_multiply_results_compare::ma#0 ← (signed word) signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) + // (signed word) signed_multiply_results_compare::ma#0 = (signed word) signed_multiply::return#2 // register copy zp ZP_WORD:6 + //SEG56 [30] if((signed word) signed_multiply_results_compare::ms#0==(signed word) signed_multiply_results_compare::ma#0) goto signed_multiply_results_compare::@3 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) -- vwsz1_eq_vwsz2_then_la1 lda ms cmp ma bne !+ @@ -5015,132 +8604,93 @@ multiply_results_compare: { beq b3 !: jmp b4 - //SEG53 multiply_results_compare::@4 + //SEG57 signed_multiply_results_compare::@4 b4: - //SEG54 [29] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- _deref_pbuc1=vbuc2 + //SEG58 [31] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG55 [30] call print_str param-assignment [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) - //SEG56 [53] phi from multiply_results_compare::@4 to print_str [phi:multiply_results_compare::@4->print_str] - print_str_from_b4: - //SEG57 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#20 [phi:multiply_results_compare::@4->print_str#0] -- register_copy - //SEG58 [53] phi (byte*) print_str::str#9 = (const string) multiply_results_compare::str [phi:multiply_results_compare::@4->print_str#1] -- pbuz1=pbuc1 + //SEG59 [32] (signed byte) signed_multiply_error::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ) -- vbsxx=vbsz1 + lda a + tax + //SEG60 [33] (signed byte) signed_multiply_error::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ) -- vbsz1=vbsz2 + lda b + sta signed_multiply_error.b + //SEG61 [34] (signed word) signed_multiply_error::ms#0 ← (signed word) signed_multiply_results_compare::ms#0 [ signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 line_cursor#1 ] ) -- vwsz1=vwsz2 + lda ms + sta signed_multiply_error.ms + lda ms+1 + sta signed_multiply_error.ms+1 + //SEG62 [35] (signed word) signed_multiply_error::ma#0 ← (signed word) signed_multiply_results_compare::ma#0 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 ] ) -- vwsz1=vwsz2 + lda ma + sta signed_multiply_error.ma + lda ma+1 + sta signed_multiply_error.ma+1 + //SEG63 [36] call signed_multiply_error param-assignment [ ] ( main:2::signed_multiply_results_compare:15 [ ] ) + jsr signed_multiply_error + jmp breturn + //SEG64 signed_multiply_results_compare::@return + breturn: + //SEG65 [37] return [ ] ( main:2::signed_multiply_results_compare:15 [ ] ) + rts + //SEG66 signed_multiply_results_compare::@3 + b3: + //SEG67 [38] (signed byte) signed_multiply_results_compare::b#1 ← ++ (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ) -- vbsz1=_inc_vbsz1 + inc b + //SEG68 [39] if((signed byte) signed_multiply_results_compare::b#1!=-(byte/word/signed word) 128) goto signed_multiply_results_compare::@2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ) -- vbsz1_neq_vbsc1_then_la1 + lda b + cmp #-$80 + bne b2_from_b3 + jmp b6 + //SEG69 signed_multiply_results_compare::@6 + b6: + //SEG70 [40] (signed byte) signed_multiply_results_compare::a#1 ← ++ (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ) -- vbsz1=_inc_vbsz1 + inc a + //SEG71 [41] if((signed byte) signed_multiply_results_compare::a#1!=-(byte/word/signed word) 128) goto signed_multiply_results_compare::@1 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ) -- vbsz1_neq_vbsc1_then_la1 + lda a + cmp #-$80 + bne b1_from_b6 + jmp b7 + //SEG72 signed_multiply_results_compare::@7 + b7: + //SEG73 [42] (byte*~) char_cursor#176 ← (byte*) line_cursor#1 [ char_cursor#176 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ char_cursor#176 line_cursor#1 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG74 [43] call print_str param-assignment [ line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15 [ line_cursor#1 char_cursor#117 ] ) + //SEG75 [51] phi from signed_multiply_results_compare::@7 to print_str [phi:signed_multiply_results_compare::@7->print_str] + print_str_from_b7: + //SEG76 [51] phi (byte*) char_cursor#135 = (byte*~) char_cursor#176 [phi:signed_multiply_results_compare::@7->print_str#0] -- register_copy + //SEG77 [51] phi (byte*) print_str::str#16 = (const string) signed_multiply_results_compare::str [phi:signed_multiply_results_compare::@7->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - jmp b10 - //SEG59 multiply_results_compare::@10 - b10: - //SEG60 [31] (word) print_word::w#2 ← (word) multiply_results_compare::ms#0 [ multiply_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ) -- vwuz1=vwuz2 - lda ms - sta print_word.w - lda ms+1 - sta print_word.w+1 - //SEG61 [32] call print_word param-assignment [ multiply_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ) - //SEG62 [60] phi from multiply_results_compare::@10 to print_word [phi:multiply_results_compare::@10->print_word] - print_word_from_b10: - //SEG63 [60] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:multiply_results_compare::@10->print_word#0] -- register_copy - jsr print_word - //SEG64 [33] phi from multiply_results_compare::@10 to multiply_results_compare::@11 [phi:multiply_results_compare::@10->multiply_results_compare::@11] - b11_from_b10: + //SEG78 [44] phi from signed_multiply_results_compare::@7 to signed_multiply_results_compare::@11 [phi:signed_multiply_results_compare::@7->signed_multiply_results_compare::@11] + b11_from_b7: jmp b11 - //SEG65 multiply_results_compare::@11 + //SEG79 signed_multiply_results_compare::@11 b11: - //SEG66 [34] call print_str param-assignment [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) - //SEG67 [53] phi from multiply_results_compare::@11 to print_str [phi:multiply_results_compare::@11->print_str] - print_str_from_b11: - //SEG68 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#11 [phi:multiply_results_compare::@11->print_str#0] -- register_copy - //SEG69 [53] phi (byte*) print_str::str#9 = (const string) multiply_results_compare::str1 [phi:multiply_results_compare::@11->print_str#1] -- pbuz1=pbuc1 - lda #str1 - sta print_str.str+1 - jsr print_str - jmp b12 - //SEG70 multiply_results_compare::@12 - b12: - //SEG71 [35] (word) print_word::w#3 ← (word) multiply_results_compare::ma#0 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ) -- vwuz1=vwuz2 - lda ma - sta print_word.w - lda ma+1 - sta print_word.w+1 - //SEG72 [36] call print_word param-assignment [ char_cursor#11 line_cursor#17 ] ( main:2::multiply_results_compare:13 [ char_cursor#11 line_cursor#17 ] ) - //SEG73 [60] phi from multiply_results_compare::@12 to print_word [phi:multiply_results_compare::@12->print_word] - print_word_from_b12: - //SEG74 [60] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:multiply_results_compare::@12->print_word#0] -- register_copy - jsr print_word - //SEG75 [37] phi from multiply_results_compare::@12 multiply_results_compare::@14 to multiply_results_compare::@return [phi:multiply_results_compare::@12/multiply_results_compare::@14->multiply_results_compare::@return] - breturn_from_b12: - breturn_from_b14: - //SEG76 [37] phi (byte*) line_cursor#19 = (byte*) line_cursor#17 [phi:multiply_results_compare::@12/multiply_results_compare::@14->multiply_results_compare::@return#0] -- register_copy - //SEG77 [37] phi (byte*) char_cursor#27 = (byte*) char_cursor#11 [phi:multiply_results_compare::@12/multiply_results_compare::@14->multiply_results_compare::@return#1] -- register_copy - jmp breturn - //SEG78 multiply_results_compare::@return - breturn: - //SEG79 [38] return [ ] ( main:2::multiply_results_compare:13 [ ] ) - rts - //SEG80 multiply_results_compare::@3 - b3: - //SEG81 [39] (byte) multiply_results_compare::b#1 ← ++ (byte) multiply_results_compare::b#2 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1=_inc_vbuz1 - inc b - //SEG82 [40] if((byte) multiply_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@2 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1_neq_0_then_la1 - lda b - bne b2_from_b3 - jmp b6 - //SEG83 multiply_results_compare::@6 - b6: - //SEG84 [41] (byte) multiply_results_compare::a#1 ← ++ (byte) multiply_results_compare::a#5 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1=_inc_vbuz1 - inc a - //SEG85 [42] if((byte) multiply_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@1 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1_neq_0_then_la1 - lda a - bne b1_from_b6 - //SEG86 [43] phi from multiply_results_compare::@6 to multiply_results_compare::@7 [phi:multiply_results_compare::@6->multiply_results_compare::@7] - b7_from_b6: - jmp b7 - //SEG87 multiply_results_compare::@7 - b7: - //SEG88 [44] call print_str param-assignment [ line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#17 char_cursor#2 ] ) - //SEG89 [53] phi from multiply_results_compare::@7 to print_str [phi:multiply_results_compare::@7->print_str] - print_str_from_b7: - //SEG90 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#20 [phi:multiply_results_compare::@7->print_str#0] -- register_copy - //SEG91 [53] phi (byte*) print_str::str#9 = (const string) multiply_results_compare::str2 [phi:multiply_results_compare::@7->print_str#1] -- pbuz1=pbuc1 - lda #str2 - sta print_str.str+1 - jsr print_str - //SEG92 [45] phi from multiply_results_compare::@7 to multiply_results_compare::@14 [phi:multiply_results_compare::@7->multiply_results_compare::@14] - b14_from_b7: - jmp b14 - //SEG93 multiply_results_compare::@14 - b14: - //SEG94 [46] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) - //SEG95 [48] phi from multiply_results_compare::@14 to print_ln [phi:multiply_results_compare::@14->print_ln] - print_ln_from_b14: - //SEG96 [48] phi (byte*) line_cursor#22 = (byte*) line_cursor#17 [phi:multiply_results_compare::@14->print_ln#0] -- register_copy + //SEG80 [45] call print_ln param-assignment [ ] ( main:2::signed_multiply_results_compare:15 [ ] ) + //SEG81 [46] phi from signed_multiply_results_compare::@11 to print_ln [phi:signed_multiply_results_compare::@11->print_ln] + print_ln_from_b11: + //SEG82 [46] phi (byte*) char_cursor#118 = (byte*) char_cursor#117 [phi:signed_multiply_results_compare::@11->print_ln#0] -- register_copy + //SEG83 [46] phi (byte*) line_cursor#40 = (byte*) line_cursor#1 [phi:signed_multiply_results_compare::@11->print_ln#1] -- register_copy jsr print_ln - //SEG97 [47] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ char_cursor#89 line_cursor#1 ] ( main:2::multiply_results_compare:13 [ char_cursor#89 line_cursor#1 ] ) -- pbuz1=pbuz2 - lda line_cursor - sta char_cursor - lda line_cursor+1 - sta char_cursor+1 - jmp breturn_from_b14 - str: .text "multiply mismatch slow:@" - str1: .text " / fast asm:" - str2: .text "multiply results match!@" + jmp breturn + str: .text "signed multiply results match!@" } -//SEG98 print_ln +//SEG84 print_ln print_ln: { - //SEG99 [49] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG85 [47] 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: - //SEG100 [49] phi (byte*) line_cursor#11 = (byte*) line_cursor#22 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG86 [47] phi (byte*) line_cursor#20 = (byte*) line_cursor#40 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG101 print_ln::@1 + //SEG87 print_ln::@1 b1: - //SEG102 [50] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG88 [48] (byte*) line_cursor#1 ← (byte*) line_cursor#20 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 char_cursor#118 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda line_cursor clc adc #$28 @@ -5148,7 +8698,7 @@ print_ln: { bcc !+ inc line_cursor+1 !: - //SEG103 [51] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1_lt_pbuz2_then_la1 + //SEG89 [49] if((byte*) line_cursor#1<(byte*) char_cursor#118) goto print_ln::@1 [ line_cursor#1 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 char_cursor#118 ] ) -- pbuz1_lt_pbuz2_then_la1 lda line_cursor+1 cmp char_cursor+1 bcc b1_from_b1 @@ -5158,146 +8708,459 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG104 print_ln::@return + //SEG90 print_ln::@return breturn: - //SEG105 [52] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 ] ) + //SEG91 [50] return [ line_cursor#1 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 ] ) rts } -//SEG106 print_str +//SEG92 print_str print_str: { .label str = 6 - //SEG107 [54] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG93 [52] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - //SEG108 [54] phi (byte*) char_cursor#2 = (byte*) char_cursor#71 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG109 [54] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG94 [52] phi (byte*) char_cursor#117 = (byte*) char_cursor#135 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG95 [52] phi (byte*) print_str::str#14 = (byte*) print_str::str#16 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG110 print_str::@1 + //SEG96 print_str::@1 b1: - //SEG111 [55] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG97 [53] if(*((byte*) print_str::str#14)!=(byte) '@') goto print_str::@2 [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG112 print_str::@return + //SEG98 print_str::@return breturn: - //SEG113 [56] return [ char_cursor#2 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 ] ) + //SEG99 [54] return [ char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 ] ) rts - //SEG114 print_str::@2 + //SEG100 print_str::@2 b2: - //SEG115 [57] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1=_deref_pbuz2 + //SEG101 [55] *((byte*) char_cursor#117) ← *((byte*) print_str::str#14) [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (char_cursor),y - //SEG116 [58] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#7 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 print_str::str#7 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:107 [ print_str::str#7 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG102 [56] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#117 [ print_str::str#14 char_cursor#1 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#14 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 print_str::str#14 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:222 [ print_str::str#14 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: - //SEG117 [59] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:107 [ print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG103 [57] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#14 [ print_str::str#0 char_cursor#1 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:222 [ print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG118 print_word -print_word: { - .label w = 6 - //SEG119 [61] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ) -- vbuxx=_hi_vwuz1 - lda w+1 - tax - //SEG120 [62] call print_byte param-assignment [ char_cursor#11 print_word::w#4 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_word::w#4 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 print_word::w#4 ] ) - //SEG121 [66] phi from print_word to print_byte [phi:print_word->print_byte] - print_byte_from_print_word: - //SEG122 [66] phi (byte*) char_cursor#64 = (byte*) char_cursor#2 [phi:print_word->print_byte#0] -- register_copy - //SEG123 [66] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy - jsr print_byte +//SEG104 signed_multiply_error +signed_multiply_error: { + .label b = 2 + .label ms = $a + .label ma = $c + //SEG105 [58] (byte*~) char_cursor#172 ← (byte*) line_cursor#1 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#172 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#172 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG106 [59] call print_str param-assignment [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + //SEG107 [51] phi from signed_multiply_error to print_str [phi:signed_multiply_error->print_str] + print_str_from_signed_multiply_error: + //SEG108 [51] phi (byte*) char_cursor#135 = (byte*~) char_cursor#172 [phi:signed_multiply_error->print_str#0] -- register_copy + //SEG109 [51] phi (byte*) print_str::str#16 = (const string) signed_multiply_error::str [phi:signed_multiply_error->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str jmp b1 - //SEG124 print_word::@1 + //SEG110 signed_multiply_error::@1 b1: - //SEG125 [63] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 print_byte::b#1 ] ) -- vbuxx=_lo_vwuz1 - lda w + //SEG111 [60] (signed byte) print_sbyte::b#1 ← (signed byte) signed_multiply_error::a#0 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#1 ] ) + // (signed byte) print_sbyte::b#1 = (signed byte) signed_multiply_error::a#0 // register copy reg byte x + //SEG112 [61] call print_sbyte param-assignment [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + //SEG113 [104] phi from signed_multiply_error::@1 to print_sbyte [phi:signed_multiply_error::@1->print_sbyte] + print_sbyte_from_b1: + //SEG114 [104] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:signed_multiply_error::@1->print_sbyte#0] -- register_copy + jsr print_sbyte + //SEG115 [62] phi from signed_multiply_error::@1 to signed_multiply_error::@2 [phi:signed_multiply_error::@1->signed_multiply_error::@2] + b2_from_b1: + jmp b2 + //SEG116 signed_multiply_error::@2 + b2: + //SEG117 [63] call print_str param-assignment [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + //SEG118 [51] phi from signed_multiply_error::@2 to print_str [phi:signed_multiply_error::@2->print_str] + print_str_from_b2: + //SEG119 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:signed_multiply_error::@2->print_str#0] -- register_copy + //SEG120 [51] phi (byte*) print_str::str#16 = (const string) signed_multiply_error::str1 [phi:signed_multiply_error::@2->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + jmp b3 + //SEG121 signed_multiply_error::@3 + b3: + //SEG122 [64] (signed byte) print_sbyte::b#2 ← (signed byte) signed_multiply_error::b#0 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#2 ] ) -- vbsxx=vbsz1 + lda b tax - //SEG126 [64] call print_byte param-assignment [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 ] ) - //SEG127 [66] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - print_byte_from_b1: - //SEG128 [66] phi (byte*) char_cursor#64 = (byte*) char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG129 [66] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy - jsr print_byte + //SEG123 [65] call print_sbyte param-assignment [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + //SEG124 [104] phi from signed_multiply_error::@3 to print_sbyte [phi:signed_multiply_error::@3->print_sbyte] + print_sbyte_from_b3: + //SEG125 [104] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:signed_multiply_error::@3->print_sbyte#0] -- register_copy + jsr print_sbyte + //SEG126 [66] phi from signed_multiply_error::@3 to signed_multiply_error::@4 [phi:signed_multiply_error::@3->signed_multiply_error::@4] + b4_from_b3: + jmp b4 + //SEG127 signed_multiply_error::@4 + b4: + //SEG128 [67] call print_str param-assignment [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + //SEG129 [51] phi from signed_multiply_error::@4 to print_str [phi:signed_multiply_error::@4->print_str] + print_str_from_b4: + //SEG130 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:signed_multiply_error::@4->print_str#0] -- register_copy + //SEG131 [51] phi (byte*) print_str::str#16 = (const string) signed_multiply_error::str2 [phi:signed_multiply_error::@4->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + jmp b5 + //SEG132 signed_multiply_error::@5 + b5: + //SEG133 [68] (signed word) print_sword::w#1 ← (signed word) signed_multiply_error::ms#0 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#1 ] ) -- vwsz1=vwsz2 + lda ms + sta print_sword.w + lda ms+1 + sta print_sword.w+1 + //SEG134 [69] call print_sword param-assignment [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + //SEG135 [77] phi from signed_multiply_error::@5 to print_sword [phi:signed_multiply_error::@5->print_sword] + print_sword_from_b5: + //SEG136 [77] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:signed_multiply_error::@5->print_sword#0] -- register_copy + jsr print_sword + //SEG137 [70] phi from signed_multiply_error::@5 to signed_multiply_error::@6 [phi:signed_multiply_error::@5->signed_multiply_error::@6] + b6_from_b5: + jmp b6 + //SEG138 signed_multiply_error::@6 + b6: + //SEG139 [71] call print_str param-assignment [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + //SEG140 [51] phi from signed_multiply_error::@6 to print_str [phi:signed_multiply_error::@6->print_str] + print_str_from_b6: + //SEG141 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:signed_multiply_error::@6->print_str#0] -- register_copy + //SEG142 [51] phi (byte*) print_str::str#16 = (const string) signed_multiply_error::str3 [phi:signed_multiply_error::@6->print_str#1] -- pbuz1=pbuc1 + lda #str3 + sta print_str.str+1 + jsr print_str + jmp b7 + //SEG143 signed_multiply_error::@7 + b7: + //SEG144 [72] (signed word) print_sword::w#2 ← (signed word) signed_multiply_error::ma#0 [ line_cursor#1 char_cursor#117 print_sword::w#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ line_cursor#1 char_cursor#117 print_sword::w#2 ] ) -- vwsz1=vwsz2 + lda ma + sta print_sword.w + lda ma+1 + sta print_sword.w+1 + //SEG145 [73] call print_sword param-assignment [ line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ line_cursor#1 char_cursor#17 ] ) + //SEG146 [77] phi from signed_multiply_error::@7 to print_sword [phi:signed_multiply_error::@7->print_sword] + print_sword_from_b7: + //SEG147 [77] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:signed_multiply_error::@7->print_sword#0] -- register_copy + jsr print_sword + //SEG148 [74] phi from signed_multiply_error::@7 to signed_multiply_error::@8 [phi:signed_multiply_error::@7->signed_multiply_error::@8] + b8_from_b7: + jmp b8 + //SEG149 signed_multiply_error::@8 + b8: + //SEG150 [75] call print_ln param-assignment [ ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ ] ) + //SEG151 [46] phi from signed_multiply_error::@8 to print_ln [phi:signed_multiply_error::@8->print_ln] + print_ln_from_b8: + //SEG152 [46] phi (byte*) char_cursor#118 = (byte*) char_cursor#17 [phi:signed_multiply_error::@8->print_ln#0] -- register_copy + //SEG153 [46] phi (byte*) line_cursor#40 = (byte*) line_cursor#1 [phi:signed_multiply_error::@8->print_ln#1] -- register_copy + jsr print_ln jmp breturn - //SEG130 print_word::@return + //SEG154 signed_multiply_error::@return breturn: - //SEG131 [65] return [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 ] ) + //SEG155 [76] return [ ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ ] ) + rts + str: .text "signed multiply mismatch @" + str1: .text "*@" + str2: .text " slow:@" + str3: .text " / fast asm:@" +} +//SEG156 print_sword +print_sword: { + .label w = 6 + //SEG157 [78] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word) 0) goto print_sword::@1 [ char_cursor#117 print_sword::w#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#117 print_sword::w#3 ] ) -- vwsz1_ge_0_then_la1 + lda w+1 + bpl b1_from_print_sword + //SEG158 [79] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + b2_from_print_sword: + jmp b2 + //SEG159 print_sword::@2 + b2: + //SEG160 [80] call print_char param-assignment [ char_cursor#17 print_sword::w#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sword::w#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 print_sword::w#3 ] ) + //SEG161 [100] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + print_char_from_b2: + //SEG162 [100] phi (byte*) char_cursor#75 = (byte*) char_cursor#117 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG163 [100] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + lda #'-' + jsr print_char + jmp b4 + //SEG164 print_sword::@4 + b4: + //SEG165 [81] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ char_cursor#17 print_sword::w#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sword::w#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 print_sword::w#0 ] ) -- vwsz1=_neg_vwsz1 + sec + lda w + eor #$ff + adc #0 + sta w + lda w+1 + eor #$ff + adc #0 + sta w+1 + //SEG166 [82] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + b1_from_print_sword: + b1_from_b4: + //SEG167 [82] phi (byte*) char_cursor#119 = (byte*) char_cursor#117 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG168 [82] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + jmp b1 + //SEG169 print_sword::@1 + b1: + //SEG170 [83] (word) print_word::w#0 ← ((word)) (signed word) print_sword::w#4 [ char_cursor#119 print_word::w#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#119 print_word::w#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#119 print_word::w#0 ] ) -- vwuz1=_word_vwsz1 + //SEG171 [84] call print_word param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 ] ) + //SEG172 [86] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + print_word_from_b1: + //SEG173 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#119 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG174 [86] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy + jsr print_word + jmp breturn + //SEG175 print_sword::@return + breturn: + //SEG176 [85] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 ] ) rts } -//SEG132 print_byte +//SEG177 print_word +print_word: { + .label w = 6 + //SEG178 [87] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:215 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] ) -- vbuxx=_hi_vwuz1 + lda w+1 + tax + //SEG179 [88] call print_byte param-assignment [ char_cursor#17 print_word::w#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_word::w#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 print_word::w#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_word::w#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 print_word::w#5 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_word::w#5 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 print_word::w#5 ] ) + //SEG180 [92] phi from print_word to print_byte [phi:print_word->print_byte] + print_byte_from_print_word: + //SEG181 [92] phi (byte*) char_cursor#124 = (byte*) char_cursor#123 [phi:print_word->print_byte#0] -- register_copy + //SEG182 [92] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + jsr print_byte + jmp b1 + //SEG183 print_word::@1 + b1: + //SEG184 [89] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ char_cursor#17 print_byte::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 print_byte::b#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::b#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 print_byte::b#2 ] ) -- vbuxx=_lo_vwuz1 + lda w + tax + //SEG185 [90] call print_byte param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 ] ) + //SEG186 [92] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + print_byte_from_b1: + //SEG187 [92] phi (byte*) char_cursor#124 = (byte*) char_cursor#17 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG188 [92] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + jsr print_byte + jmp breturn + //SEG189 print_word::@return + breturn: + //SEG190 [91] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 ] ) + rts +} +//SEG191 print_byte print_byte: { - //SEG133 [67] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ) -- vbuyy=vbuxx_ror_4 + //SEG192 [93] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] ) -- vbuyy=vbuxx_ror_4 txa lsr lsr lsr lsr tay - //SEG134 [68] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG193 [94] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda hextab,y - //SEG135 [69] call print_char param-assignment [ char_cursor#11 print_byte::b#2 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::b#2 ] ) - //SEG136 [74] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG194 [95] call print_char param-assignment [ char_cursor#17 print_byte::b#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] ) + //SEG195 [100] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG137 [74] phi (byte*) char_cursor#41 = (byte*) char_cursor#64 [phi:print_byte->print_char#0] -- register_copy - //SEG138 [74] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG196 [100] phi (byte*) char_cursor#75 = (byte*) char_cursor#124 [phi:print_byte->print_char#0] -- register_copy + //SEG197 [100] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG139 print_byte::@1 + //SEG198 print_byte::@1 b1: - //SEG140 [70] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG199 [96] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word) 15 [ char_cursor#17 print_byte::$2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG141 [71] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG200 [97] (byte) print_char::ch#3 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#17 print_char::ch#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tax lda hextab,x - //SEG142 [72] call print_char param-assignment [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) - //SEG143 [74] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG201 [98] call print_char param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] ) + //SEG202 [100] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG144 [74] phi (byte*) char_cursor#41 = (byte*) char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG145 [74] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG203 [100] phi (byte*) char_cursor#75 = (byte*) char_cursor#17 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG204 [100] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG146 print_byte::@return + //SEG205 print_byte::@return breturn: - //SEG147 [73] return [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + //SEG206 [99] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] ) rts - hextab: .byte '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' + hextab: .text "0123456789abcdef" } -//SEG148 print_char +//SEG207 print_char print_char: { - //SEG149 [75] *((byte*) char_cursor#41) ← (byte) print_char::ch#2 [ char_cursor#41 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#41 ] ) -- _deref_pbuz1=vbuaa + //SEG208 [101] *((byte*) char_cursor#75) ← (byte) print_char::ch#4 [ char_cursor#75 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#75 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (char_cursor),y - //SEG150 [76] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#41 [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) -- pbuz1=_inc_pbuz1 + //SEG209 [102] (byte*) char_cursor#17 ← ++ (byte*) char_cursor#75 [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: jmp breturn - //SEG151 print_char::@return + //SEG210 print_char::@return breturn: - //SEG152 [77] return [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) + //SEG211 [103] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] ) rts } -//SEG153 multiply +//SEG212 print_sbyte +print_sbyte: { + //SEG213 [105] if((signed byte) print_sbyte::b#3>=(byte/signed byte/word/signed word) 0) goto print_sbyte::@1 [ char_cursor#117 print_sbyte::b#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] ) -- vbsxx_ge_0_then_la1 + cpx #0 + bpl b1_from_print_sbyte + //SEG214 [106] phi from print_sbyte to print_sbyte::@2 [phi:print_sbyte->print_sbyte::@2] + b2_from_print_sbyte: + jmp b2 + //SEG215 print_sbyte::@2 + b2: + //SEG216 [107] call print_char param-assignment [ char_cursor#17 print_sbyte::b#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#3 ] ) + //SEG217 [100] phi from print_sbyte::@2 to print_char [phi:print_sbyte::@2->print_char] + print_char_from_b2: + //SEG218 [100] phi (byte*) char_cursor#75 = (byte*) char_cursor#117 [phi:print_sbyte::@2->print_char#0] -- register_copy + //SEG219 [100] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@2->print_char#1] -- vbuaa=vbuc1 + lda #'-' + jsr print_char + jmp b4 + //SEG220 print_sbyte::@4 + b4: + //SEG221 [108] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ char_cursor#17 print_sbyte::b#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#0 ] ) -- vbsxx=_neg_vbsxx + txa + eor #$ff + clc + adc #1 + tax + //SEG222 [109] phi from print_sbyte print_sbyte::@4 to print_sbyte::@1 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1] + b1_from_print_sbyte: + b1_from_b4: + //SEG223 [109] phi (byte*) char_cursor#121 = (byte*) char_cursor#117 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1#0] -- register_copy + //SEG224 [109] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#3 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1#1] -- register_copy + jmp b1 + //SEG225 print_sbyte::@1 + b1: + //SEG226 [110] (byte) print_byte::b#0 ← ((byte)) (signed byte) print_sbyte::b#4 [ print_byte::b#0 char_cursor#121 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#0 char_cursor#121 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#0 char_cursor#121 ] ) -- vbuxx=_byte_vbsxx + //SEG227 [111] call print_byte param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + //SEG228 [92] phi from print_sbyte::@1 to print_byte [phi:print_sbyte::@1->print_byte] + print_byte_from_b1: + //SEG229 [92] phi (byte*) char_cursor#124 = (byte*) char_cursor#121 [phi:print_sbyte::@1->print_byte#0] -- register_copy + //SEG230 [92] phi (byte) print_byte::b#5 = (byte) print_byte::b#0 [phi:print_sbyte::@1->print_byte#1] -- register_copy + jsr print_byte + jmp breturn + //SEG231 print_sbyte::@return + breturn: + //SEG232 [112] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + rts +} +//SEG233 signed_multiply +signed_multiply: { + .label _6 = $e + .label _12 = $e + .label m = 6 + .label return = 6 + .label a = 2 + //SEG234 [113] (byte) multiply::a#0 ← ((byte)) (signed byte) signed_multiply::a#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 ] ) -- vbuxx=_byte_vbsz1 + lda a + tax + //SEG235 [114] (byte) multiply::b#0 ← ((byte)) (signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 multiply::b#0 ] ) -- vbuaa=_byte_vbsyy + tya + //SEG236 [115] call multiply param-assignment [ signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] ) + //SEG237 [132] phi from signed_multiply to multiply [phi:signed_multiply->multiply] + multiply_from_signed_multiply: + //SEG238 [132] phi (byte) multiply::b#2 = (byte) multiply::b#0 [phi:signed_multiply->multiply#0] -- register_copy + //SEG239 [132] phi (byte) multiply::a#2 = (byte) multiply::a#0 [phi:signed_multiply->multiply#1] -- register_copy + jsr multiply + //SEG240 [116] (word) multiply::return#2 ← (word) multiply::return#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::return#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#2 ] ) + // (word) multiply::return#2 = (word) multiply::return#0 // register copy zp ZP_WORD:6 + jmp b6 + //SEG241 signed_multiply::@6 + b6: + //SEG242 [117] (word) signed_multiply::m#0 ← (word) multiply::return#2 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ) + // (word) signed_multiply::m#0 = (word) multiply::return#2 // register copy zp ZP_WORD:6 + //SEG243 [118] if((signed byte) signed_multiply::a#0>=(byte/signed byte/word/signed word) 0) goto signed_multiply::@1 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ) -- vbsz1_ge_0_then_la1 + lda a + cmp #0 + bpl b1_from_b6 + jmp b3 + //SEG244 signed_multiply::@3 + b3: + //SEG245 [119] (byte~) signed_multiply::$6 ← > (word) signed_multiply::m#0 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 ] ) -- vbuz1=_hi_vwuz2 + lda m+1 + sta _6 + //SEG246 [120] (byte~) signed_multiply::$7 ← ((byte)) (signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 signed_multiply::$7 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 signed_multiply::$7 ] ) -- vbuaa=_byte_vbsyy + tya + //SEG247 [121] (byte/signed byte/word/signed word~) signed_multiply::$16 ← (byte~) signed_multiply::$6 - (byte~) signed_multiply::$7 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$16 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$16 ] ) -- vbuaa=vbuz1_minus_vbuaa + eor #$ff + sec + adc _6 + //SEG248 [122] (word) signed_multiply::m#1 ← (word) signed_multiply::m#0 hi= (byte/signed byte/word/signed word~) signed_multiply::$16 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#1 ] ) -- vwuz1=vwuz1_sethi_vbuaa + sta m+1 + //SEG249 [123] phi from signed_multiply::@3 signed_multiply::@6 to signed_multiply::@1 [phi:signed_multiply::@3/signed_multiply::@6->signed_multiply::@1] + b1_from_b3: + b1_from_b6: + //SEG250 [123] phi (word) signed_multiply::m#5 = (word) signed_multiply::m#1 [phi:signed_multiply::@3/signed_multiply::@6->signed_multiply::@1#0] -- register_copy + jmp b1 + //SEG251 signed_multiply::@1 + b1: + //SEG252 [124] if((signed byte) signed_multiply::b#0>=(byte/signed byte/word/signed word) 0) goto signed_multiply::@2 [ signed_multiply::a#0 signed_multiply::m#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::m#5 ] ) -- vbsyy_ge_0_then_la1 + cpy #0 + bpl b2_from_b1 + jmp b4 + //SEG253 signed_multiply::@4 + b4: + //SEG254 [125] (byte~) signed_multiply::$12 ← > (word) signed_multiply::m#5 [ signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ) -- vbuz1=_hi_vwuz2 + lda m+1 + sta _12 + //SEG255 [126] (byte~) signed_multiply::$13 ← ((byte)) (signed byte) signed_multiply::a#0 [ signed_multiply::m#5 signed_multiply::$12 signed_multiply::$13 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#5 signed_multiply::$12 signed_multiply::$13 ] ) -- vbuaa=_byte_vbsz1 + lda a + //SEG256 [127] (byte/signed byte/word/signed word~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte~) signed_multiply::$13 [ signed_multiply::m#5 signed_multiply::$17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#5 signed_multiply::$17 ] ) -- vbuaa=vbuz1_minus_vbuaa + eor #$ff + sec + adc _12 + //SEG257 [128] (word) signed_multiply::m#2 ← (word) signed_multiply::m#5 hi= (byte/signed byte/word/signed word~) signed_multiply::$17 [ signed_multiply::m#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#2 ] ) -- vwuz1=vwuz1_sethi_vbuaa + sta m+1 + //SEG258 [129] phi from signed_multiply::@1 signed_multiply::@4 to signed_multiply::@2 [phi:signed_multiply::@1/signed_multiply::@4->signed_multiply::@2] + b2_from_b1: + b2_from_b4: + //SEG259 [129] phi (word) signed_multiply::m#4 = (word) signed_multiply::m#5 [phi:signed_multiply::@1/signed_multiply::@4->signed_multiply::@2#0] -- register_copy + jmp b2 + //SEG260 signed_multiply::@2 + b2: + //SEG261 [130] (signed word) signed_multiply::return#0 ← ((signed word)) (word) signed_multiply::m#4 [ signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::return#0 ] ) -- vwsz1=_sword_vwuz1 + jmp breturn + //SEG262 signed_multiply::@return + breturn: + //SEG263 [131] return [ signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::return#0 ] ) + rts +} +//SEG264 multiply multiply: { .const memA = $fe .const memB = $ff .label return = 6 - //SEG154 [78] *((const byte*) multiply::memA#0) ← (byte) multiply::a#0 [ multiply::b#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::b#0 ] ) -- _deref_pbuc1=vbuxx + //SEG265 [133] *((const byte*) multiply::memA#0) ← (byte) multiply::a#2 [ multiply::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::b#2 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::b#2 ] ) -- _deref_pbuc1=vbuxx stx memA - //SEG155 [79] *((const byte*) multiply::memB#0) ← (byte) multiply::b#0 [ ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) -- _deref_pbuc1=vbuaa + //SEG266 [134] *((const byte*) multiply::memB#0) ← (byte) multiply::b#2 [ ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- _deref_pbuc1=vbuaa sta memB - //SEG156 asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB } + //SEG267 asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB } lda memA sta sm1+1 sta sm3+1 @@ -5316,193 +9179,580 @@ multiply: { sm4: sbc mul_sqr2_hi,x sta memB - //SEG157 [81] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG268 [136] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda memA sta return lda memB sta return+1 jmp breturn - //SEG158 multiply::@return + //SEG269 multiply::@return breturn: - //SEG159 [82] return [ multiply::return#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::return#0 ] ) + //SEG270 [137] return [ multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) rts } -//SEG160 slow_multiply -slow_multiply: { - .label return = 6 +//SEG271 slow_signed_multiply +slow_signed_multiply: { .label m = 6 + .label return = 6 .label a = 2 - //SEG161 [83] if((byte) slow_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuz1_le_0_then_la1 + //SEG272 [138] if((signed byte) slow_signed_multiply::a#0>=(byte/signed byte/word/signed word) 0) goto slow_signed_multiply::@1 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ) -- vbsz1_ge_0_then_la1 lda a cmp #0 - beq b1_from_slow_multiply - //SEG162 [84] phi from slow_multiply to slow_multiply::@2 [phi:slow_multiply->slow_multiply::@2] - b2_from_slow_multiply: - //SEG163 [84] phi (byte) slow_multiply::i#2 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#0] -- vbuyy=vbuc1 - ldy #0 - //SEG164 [84] phi (word) slow_multiply::m#3 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#1] -- vwuz1=vbuc1 + bpl b1 + //SEG273 [139] phi from slow_signed_multiply to slow_signed_multiply::@2 [phi:slow_signed_multiply->slow_signed_multiply::@2] + b2_from_slow_signed_multiply: + //SEG274 [139] phi (signed byte) slow_signed_multiply::i#2 = (byte/signed byte/word/signed word) 0 [phi:slow_signed_multiply->slow_signed_multiply::@2#0] -- vbsyy=vbuc1 + lda #0 + tay + //SEG275 [139] phi (signed word) slow_signed_multiply::m#3 = (byte/signed byte/word/signed word) 0 [phi:slow_signed_multiply->slow_signed_multiply::@2#1] -- vwsz1=vbuc1 lda #0 sta m lda #0 sta m+1 jmp b2 - //SEG165 [84] phi from slow_multiply::@2 to slow_multiply::@2 [phi:slow_multiply::@2->slow_multiply::@2] + //SEG276 [139] phi from slow_signed_multiply::@2 to slow_signed_multiply::@2 [phi:slow_signed_multiply::@2->slow_signed_multiply::@2] b2_from_b2: - //SEG166 [84] phi (byte) slow_multiply::i#2 = (byte) slow_multiply::i#1 [phi:slow_multiply::@2->slow_multiply::@2#0] -- register_copy - //SEG167 [84] phi (word) slow_multiply::m#3 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@2#1] -- register_copy + //SEG277 [139] phi (signed byte) slow_signed_multiply::i#2 = (signed byte) slow_signed_multiply::i#1 [phi:slow_signed_multiply::@2->slow_signed_multiply::@2#0] -- register_copy + //SEG278 [139] phi (signed word) slow_signed_multiply::m#3 = (signed word) slow_signed_multiply::m#1 [phi:slow_signed_multiply::@2->slow_signed_multiply::@2#1] -- register_copy jmp b2 - //SEG168 slow_multiply::@2 + //SEG279 slow_signed_multiply::@2 b2: - //SEG169 [85] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) -- vwuz1=vwuz1_plus_vbuxx + //SEG280 [140] (signed word) slow_signed_multiply::m#1 ← (signed word) slow_signed_multiply::m#3 - (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ) -- vwsz1=vwsz1_minus_vbsxx + txa + sta $fe + ora #$7f + bmi !+ + lda #0 + !: + sta $ff + sec + lda m + sbc $fe + sta m + lda m+1 + sbc $ff + sta m+1 + //SEG281 [141] (signed byte) slow_signed_multiply::i#1 ← -- (signed byte) slow_signed_multiply::i#2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ) -- vbsyy=_dec_vbsyy + dey + //SEG282 [142] if((signed byte) slow_signed_multiply::i#1!=(signed byte) slow_signed_multiply::a#0) goto slow_signed_multiply::@2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ) -- vbsyy_neq_vbsz1_then_la1 + cpy a + bne b2_from_b2 + //SEG283 [143] phi from slow_signed_multiply::@2 slow_signed_multiply::@5 to slow_signed_multiply::@3 [phi:slow_signed_multiply::@2/slow_signed_multiply::@5->slow_signed_multiply::@3] + b3_from_b2: + b3_from_b5: + //SEG284 [143] phi (signed word) slow_signed_multiply::return#0 = (signed word) slow_signed_multiply::m#1 [phi:slow_signed_multiply::@2/slow_signed_multiply::@5->slow_signed_multiply::@3#0] -- register_copy + jmp b3 + //SEG285 [143] phi from slow_signed_multiply::@1 to slow_signed_multiply::@3 [phi:slow_signed_multiply::@1->slow_signed_multiply::@3] + b3_from_b1: + //SEG286 [143] phi (signed word) slow_signed_multiply::return#0 = (byte/signed byte/word/signed word) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@3#0] -- vwsz1=vbuc1 + lda #0 + sta return + lda #0 + sta return+1 + jmp b3 + //SEG287 slow_signed_multiply::@3 + b3: + jmp breturn + //SEG288 slow_signed_multiply::@return + breturn: + //SEG289 [144] return [ slow_signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::return#0 ] ) + rts + //SEG290 slow_signed_multiply::@1 + b1: + //SEG291 [145] if((signed byte) slow_signed_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_signed_multiply::@3 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ) -- vbsz1_le_0_then_la1 + lda a + cmp #1 + bmi b3_from_b1 + //SEG292 [146] phi from slow_signed_multiply::@1 to slow_signed_multiply::@5 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5] + b5_from_b1: + //SEG293 [146] phi (signed byte) slow_signed_multiply::j#2 = (byte/signed byte/word/signed word) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5#0] -- vbsyy=vbuc1 + lda #0 + tay + //SEG294 [146] phi (signed word) slow_signed_multiply::m#5 = (byte/signed byte/word/signed word) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5#1] -- vwsz1=vbuc1 + lda #0 + sta m + lda #0 + sta m+1 + jmp b5 + //SEG295 [146] phi from slow_signed_multiply::@5 to slow_signed_multiply::@5 [phi:slow_signed_multiply::@5->slow_signed_multiply::@5] + b5_from_b5: + //SEG296 [146] phi (signed byte) slow_signed_multiply::j#2 = (signed byte) slow_signed_multiply::j#1 [phi:slow_signed_multiply::@5->slow_signed_multiply::@5#0] -- register_copy + //SEG297 [146] phi (signed word) slow_signed_multiply::m#5 = (signed word) slow_signed_multiply::m#2 [phi:slow_signed_multiply::@5->slow_signed_multiply::@5#1] -- register_copy + jmp b5 + //SEG298 slow_signed_multiply::@5 + b5: + //SEG299 [147] (signed word) slow_signed_multiply::m#2 ← (signed word) slow_signed_multiply::m#5 + (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ) -- vwsz1=vwsz1_plus_vbsxx + txa + sta $fe + ora #$7f + bmi !+ + lda #0 + !: + sta $ff + clc + lda m + adc $fe + sta m + lda m+1 + adc $ff + sta m+1 + //SEG300 [148] (signed byte) slow_signed_multiply::j#1 ← ++ (signed byte) slow_signed_multiply::j#2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ) -- vbsyy=_inc_vbsyy + iny + //SEG301 [149] if((signed byte) slow_signed_multiply::j#1!=(signed byte) slow_signed_multiply::a#0) goto slow_signed_multiply::@5 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ) -- vbsyy_neq_vbsz1_then_la1 + cpy a + bne b5_from_b5 + jmp b3_from_b5 +} +//SEG302 multiply_results_compare +multiply_results_compare: { + .label ms = $a + .label ma = 6 + .label b = 3 + .label a = 2 + //SEG303 [151] phi from multiply_results_compare to multiply_results_compare::@1 [phi:multiply_results_compare->multiply_results_compare::@1] + b1_from_multiply_results_compare: + //SEG304 [151] phi (byte) multiply_results_compare::a#6 = (byte/signed byte/word/signed word) 0 [phi:multiply_results_compare->multiply_results_compare::@1#0] -- vbuz1=vbuc1 + lda #0 + sta a + jmp b1 + //SEG305 [151] phi from multiply_results_compare::@6 to multiply_results_compare::@1 [phi:multiply_results_compare::@6->multiply_results_compare::@1] + b1_from_b6: + //SEG306 [151] phi (byte) multiply_results_compare::a#6 = (byte) multiply_results_compare::a#1 [phi:multiply_results_compare::@6->multiply_results_compare::@1#0] -- register_copy + jmp b1 + //SEG307 multiply_results_compare::@1 + b1: + //SEG308 [152] phi from multiply_results_compare::@1 to multiply_results_compare::@2 [phi:multiply_results_compare::@1->multiply_results_compare::@2] + b2_from_b1: + //SEG309 [152] phi (byte) multiply_results_compare::b#2 = (byte/signed byte/word/signed word) 0 [phi:multiply_results_compare::@1->multiply_results_compare::@2#0] -- vbuz1=vbuc1 + lda #0 + sta b + jmp b2 + //SEG310 [152] phi from multiply_results_compare::@3 to multiply_results_compare::@2 [phi:multiply_results_compare::@3->multiply_results_compare::@2] + b2_from_b3: + //SEG311 [152] phi (byte) multiply_results_compare::b#2 = (byte) multiply_results_compare::b#1 [phi:multiply_results_compare::@3->multiply_results_compare::@2#0] -- register_copy + jmp b2 + //SEG312 multiply_results_compare::@2 + b2: + //SEG313 [153] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ) + // (byte) slow_multiply::a#0 = (byte) multiply_results_compare::a#6 // register copy zp ZP_BYTE:2 + //SEG314 [154] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuxx=vbuz1 + ldx b + //SEG315 [155] call slow_multiply param-assignment [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) + jsr slow_multiply + //SEG316 [156] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ) + // (word) slow_multiply::return#2 = (word) slow_multiply::return#0 // register copy zp ZP_WORD:6 + jmp b8 + //SEG317 multiply_results_compare::@8 + b8: + //SEG318 [157] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vwuz1=vwuz2 + lda slow_multiply.return + sta ms + lda slow_multiply.return+1 + sta ms+1 + //SEG319 [158] (byte) multiply::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuxx=vbuz1 + ldx a + //SEG320 [159] (byte) multiply::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuaa=vbuz1 + lda b + //SEG321 [160] call multiply param-assignment [ line_cursor#27 char_cursor#27 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + //SEG322 [132] phi from multiply_results_compare::@8 to multiply [phi:multiply_results_compare::@8->multiply] + multiply_from_b8: + //SEG323 [132] phi (byte) multiply::b#2 = (byte) multiply::b#1 [phi:multiply_results_compare::@8->multiply#0] -- register_copy + //SEG324 [132] phi (byte) multiply::a#2 = (byte) multiply::a#1 [phi:multiply_results_compare::@8->multiply#1] -- register_copy + jsr multiply + //SEG325 [161] (word) multiply::return#3 ← (word) multiply::return#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ) + // (word) multiply::return#3 = (word) multiply::return#0 // register copy zp ZP_WORD:6 + jmp b9 + //SEG326 multiply_results_compare::@9 + b9: + //SEG327 [162] (word) multiply_results_compare::ma#0 ← (word) multiply::return#3 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) + // (word) multiply_results_compare::ma#0 = (word) multiply::return#3 // register copy zp ZP_WORD:6 + //SEG328 [163] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) -- vwuz1_eq_vwuz2_then_la1 + lda ms + cmp ma + bne !+ + lda ms+1 + cmp ma+1 + beq b3 + !: + jmp b4 + //SEG329 multiply_results_compare::@4 + b4: + //SEG330 [164] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) -- _deref_pbuc1=vbuc2 + lda #2 + sta BGCOL + //SEG331 [165] (byte) multiply_error::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 ] ) -- vbuxx=vbuz1 + ldx a + //SEG332 [166] (byte) multiply_error::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 ] ) -- vbuz1=vbuz2 + lda b + sta multiply_error.b + //SEG333 [167] (word) multiply_error::ms#0 ← (word) multiply_results_compare::ms#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ) + // (word) multiply_error::ms#0 = (word) multiply_results_compare::ms#0 // register copy zp ZP_WORD:10 + //SEG334 [168] (word) multiply_error::ma#0 ← (word) multiply_results_compare::ma#0 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) -- vwuz1=vwuz2 + lda ma + sta multiply_error.ma + lda ma+1 + sta multiply_error.ma+1 + //SEG335 [169] call multiply_error param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) + //SEG336 [179] phi from multiply_results_compare::@4 to multiply_error [phi:multiply_results_compare::@4->multiply_error] + multiply_error_from_b4: + jsr multiply_error + jmp breturn + //SEG337 multiply_results_compare::@return + breturn: + //SEG338 [170] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) + rts + //SEG339 multiply_results_compare::@3 + b3: + //SEG340 [171] (byte) multiply_results_compare::b#1 ← ++ (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ) -- vbuz1=_inc_vbuz1 + inc b + //SEG341 [172] if((byte) multiply_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ) -- vbuz1_neq_0_then_la1 + lda b + bne b2_from_b3 + jmp b6 + //SEG342 multiply_results_compare::@6 + b6: + //SEG343 [173] (byte) multiply_results_compare::a#1 ← ++ (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ) -- vbuz1=_inc_vbuz1 + inc a + //SEG344 [174] if((byte) multiply_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@1 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ) -- vbuz1_neq_0_then_la1 + lda a + bne b1_from_b6 + //SEG345 [175] phi from multiply_results_compare::@6 to multiply_results_compare::@7 [phi:multiply_results_compare::@6->multiply_results_compare::@7] + b7_from_b6: + jmp b7 + //SEG346 multiply_results_compare::@7 + b7: + //SEG347 [176] call print_str param-assignment [ char_cursor#117 line_cursor#27 ] ( main:2::multiply_results_compare:13 [ char_cursor#117 line_cursor#27 ] ) + //SEG348 [51] phi from multiply_results_compare::@7 to print_str [phi:multiply_results_compare::@7->print_str] + print_str_from_b7: + //SEG349 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#27 [phi:multiply_results_compare::@7->print_str#0] -- register_copy + //SEG350 [51] phi (byte*) print_str::str#16 = (const string) multiply_results_compare::str [phi:multiply_results_compare::@7->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + //SEG351 [177] phi from multiply_results_compare::@7 to multiply_results_compare::@11 [phi:multiply_results_compare::@7->multiply_results_compare::@11] + b11_from_b7: + jmp b11 + //SEG352 multiply_results_compare::@11 + b11: + //SEG353 [178] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) + //SEG354 [46] phi from multiply_results_compare::@11 to print_ln [phi:multiply_results_compare::@11->print_ln] + print_ln_from_b11: + //SEG355 [46] phi (byte*) char_cursor#118 = (byte*) char_cursor#117 [phi:multiply_results_compare::@11->print_ln#0] -- register_copy + //SEG356 [46] phi (byte*) line_cursor#40 = (byte*) line_cursor#27 [phi:multiply_results_compare::@11->print_ln#1] -- register_copy + jsr print_ln + jmp breturn + str: .text "multiply results match!@" +} +//SEG357 multiply_error +multiply_error: { + .label b = 2 + .label ms = $a + .label ma = $c + //SEG358 [180] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + //SEG359 [51] phi from multiply_error to print_str [phi:multiply_error->print_str] + print_str_from_multiply_error: + //SEG360 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#27 [phi:multiply_error->print_str#0] -- register_copy + //SEG361 [51] phi (byte*) print_str::str#16 = (const string) multiply_error::str [phi:multiply_error->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + jmp b1 + //SEG362 multiply_error::@1 + b1: + //SEG363 [181] (byte) print_byte::b#3 ← (byte) multiply_error::a#0 [ char_cursor#117 line_cursor#27 print_byte::b#3 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_byte::b#3 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + // (byte) print_byte::b#3 = (byte) multiply_error::a#0 // register copy reg byte x + //SEG364 [182] call print_byte param-assignment [ char_cursor#17 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + //SEG365 [92] phi from multiply_error::@1 to print_byte [phi:multiply_error::@1->print_byte] + print_byte_from_b1: + //SEG366 [92] phi (byte*) char_cursor#124 = (byte*) char_cursor#117 [phi:multiply_error::@1->print_byte#0] -- register_copy + //SEG367 [92] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:multiply_error::@1->print_byte#1] -- register_copy + jsr print_byte + //SEG368 [183] phi from multiply_error::@1 to multiply_error::@2 [phi:multiply_error::@1->multiply_error::@2] + b2_from_b1: + jmp b2 + //SEG369 multiply_error::@2 + b2: + //SEG370 [184] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + //SEG371 [51] phi from multiply_error::@2 to print_str [phi:multiply_error::@2->print_str] + print_str_from_b2: + //SEG372 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:multiply_error::@2->print_str#0] -- register_copy + //SEG373 [51] phi (byte*) print_str::str#16 = (const string) multiply_error::str1 [phi:multiply_error::@2->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + jmp b3 + //SEG374 multiply_error::@3 + b3: + //SEG375 [185] (byte) print_byte::b#4 ← (byte) multiply_error::b#0 [ char_cursor#117 line_cursor#27 print_byte::b#4 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_byte::b#4 multiply_error::ms#0 multiply_error::ma#0 ] ) -- vbuxx=vbuz1 + ldx b + //SEG376 [186] call print_byte param-assignment [ char_cursor#17 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ) + //SEG377 [92] phi from multiply_error::@3 to print_byte [phi:multiply_error::@3->print_byte] + print_byte_from_b3: + //SEG378 [92] phi (byte*) char_cursor#124 = (byte*) char_cursor#117 [phi:multiply_error::@3->print_byte#0] -- register_copy + //SEG379 [92] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:multiply_error::@3->print_byte#1] -- register_copy + jsr print_byte + //SEG380 [187] phi from multiply_error::@3 to multiply_error::@4 [phi:multiply_error::@3->multiply_error::@4] + b4_from_b3: + jmp b4 + //SEG381 multiply_error::@4 + b4: + //SEG382 [188] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ) + //SEG383 [51] phi from multiply_error::@4 to print_str [phi:multiply_error::@4->print_str] + print_str_from_b4: + //SEG384 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:multiply_error::@4->print_str#0] -- register_copy + //SEG385 [51] phi (byte*) print_str::str#16 = (const string) multiply_error::str2 [phi:multiply_error::@4->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + jmp b5 + //SEG386 multiply_error::@5 + b5: + //SEG387 [189] (word) print_word::w#3 ← (word) multiply_error::ms#0 [ char_cursor#117 line_cursor#27 print_word::w#3 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_word::w#3 multiply_error::ma#0 ] ) -- vwuz1=vwuz2 + lda ms + sta print_word.w + lda ms+1 + sta print_word.w+1 + //SEG388 [190] call print_word param-assignment [ char_cursor#17 line_cursor#27 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::ma#0 ] ) + //SEG389 [86] phi from multiply_error::@5 to print_word [phi:multiply_error::@5->print_word] + print_word_from_b5: + //SEG390 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_error::@5->print_word#0] -- register_copy + //SEG391 [86] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:multiply_error::@5->print_word#1] -- register_copy + jsr print_word + //SEG392 [191] phi from multiply_error::@5 to multiply_error::@6 [phi:multiply_error::@5->multiply_error::@6] + b6_from_b5: + jmp b6 + //SEG393 multiply_error::@6 + b6: + //SEG394 [192] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::ma#0 ] ) + //SEG395 [51] phi from multiply_error::@6 to print_str [phi:multiply_error::@6->print_str] + print_str_from_b6: + //SEG396 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:multiply_error::@6->print_str#0] -- register_copy + //SEG397 [51] phi (byte*) print_str::str#16 = (const string) multiply_error::str3 [phi:multiply_error::@6->print_str#1] -- pbuz1=pbuc1 + lda #str3 + sta print_str.str+1 + jsr print_str + jmp b7 + //SEG398 multiply_error::@7 + b7: + //SEG399 [193] (word) print_word::w#4 ← (word) multiply_error::ma#0 [ char_cursor#117 line_cursor#27 print_word::w#4 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_word::w#4 ] ) -- vwuz1=vwuz2 + lda ma + sta print_word.w + lda ma+1 + sta print_word.w+1 + //SEG400 [194] call print_word param-assignment [ char_cursor#17 line_cursor#27 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 ] ) + //SEG401 [86] phi from multiply_error::@7 to print_word [phi:multiply_error::@7->print_word] + print_word_from_b7: + //SEG402 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_error::@7->print_word#0] -- register_copy + //SEG403 [86] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:multiply_error::@7->print_word#1] -- register_copy + jsr print_word + //SEG404 [195] phi from multiply_error::@7 to multiply_error::@8 [phi:multiply_error::@7->multiply_error::@8] + b8_from_b7: + jmp b8 + //SEG405 multiply_error::@8 + b8: + //SEG406 [196] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ line_cursor#1 ] ) + //SEG407 [46] phi from multiply_error::@8 to print_ln [phi:multiply_error::@8->print_ln] + print_ln_from_b8: + //SEG408 [46] phi (byte*) char_cursor#118 = (byte*) char_cursor#17 [phi:multiply_error::@8->print_ln#0] -- register_copy + //SEG409 [46] phi (byte*) line_cursor#40 = (byte*) line_cursor#27 [phi:multiply_error::@8->print_ln#1] -- register_copy + jsr print_ln + jmp breturn + //SEG410 multiply_error::@return + breturn: + //SEG411 [197] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ line_cursor#1 ] ) + rts + str: .text "multiply mismatch @" + str1: .text "*@" + str2: .text " slow:@" + str3: .text " / fast asm:@" +} +//SEG412 slow_multiply +slow_multiply: { + .label return = 6 + .label m = 6 + .label a = 2 + //SEG413 [198] if((byte) slow_multiply::a#0==(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuz1_eq_0_then_la1 + lda a + beq b1_from_slow_multiply + //SEG414 [199] phi from slow_multiply to slow_multiply::@2 [phi:slow_multiply->slow_multiply::@2] + b2_from_slow_multiply: + //SEG415 [199] phi (byte) slow_multiply::i#2 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#0] -- vbuyy=vbuc1 + ldy #0 + //SEG416 [199] phi (word) slow_multiply::m#3 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#1] -- vwuz1=vbuc1 + lda #0 + sta m + lda #0 + sta m+1 + jmp b2 + //SEG417 [199] phi from slow_multiply::@2 to slow_multiply::@2 [phi:slow_multiply::@2->slow_multiply::@2] + b2_from_b2: + //SEG418 [199] phi (byte) slow_multiply::i#2 = (byte) slow_multiply::i#1 [phi:slow_multiply::@2->slow_multiply::@2#0] -- register_copy + //SEG419 [199] phi (word) slow_multiply::m#3 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@2#1] -- register_copy + jmp b2 + //SEG420 slow_multiply::@2 + b2: + //SEG421 [200] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) -- vwuz1=vwuz1_plus_vbuxx txa clc adc m sta m - bcc !+ - inc m+1 - !: - //SEG170 [86] (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuyy=_inc_vbuyy + lda #0 + adc m+1 + sta m+1 + //SEG422 [201] (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG171 [87] if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuyy_neq_vbuz1_then_la1 + //SEG423 [202] if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuyy_neq_vbuz1_then_la1 cpy a bne b2_from_b2 - //SEG172 [88] phi from slow_multiply::@2 to slow_multiply::@1 [phi:slow_multiply::@2->slow_multiply::@1] + //SEG424 [203] phi from slow_multiply::@2 to slow_multiply::@1 [phi:slow_multiply::@2->slow_multiply::@1] b1_from_b2: - //SEG173 [88] phi (word) slow_multiply::return#0 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@1#0] -- register_copy + //SEG425 [203] phi (word) slow_multiply::return#0 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@1#0] -- register_copy jmp b1 - //SEG174 [88] phi from slow_multiply to slow_multiply::@1 [phi:slow_multiply->slow_multiply::@1] + //SEG426 [203] phi from slow_multiply to slow_multiply::@1 [phi:slow_multiply->slow_multiply::@1] b1_from_slow_multiply: - //SEG175 [88] phi (word) slow_multiply::return#0 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@1#0] -- vwuz1=vbuc1 + //SEG427 [203] phi (word) slow_multiply::return#0 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@1#0] -- vwuz1=vbuc1 lda #0 sta return lda #0 sta return+1 jmp b1 - //SEG176 slow_multiply::@1 + //SEG428 slow_multiply::@1 b1: jmp breturn - //SEG177 slow_multiply::@return + //SEG429 slow_multiply::@return breturn: - //SEG178 [89] return [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::return#0 ] ) + //SEG430 [204] return [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) rts } -//SEG179 multiply_tables_compare +//SEG431 multiply_tables_compare multiply_tables_compare: { .label asm_sqr = $a .label kc_sqr = 4 - //SEG180 [91] phi from multiply_tables_compare to multiply_tables_compare::@1 [phi:multiply_tables_compare->multiply_tables_compare::@1] + //SEG432 [206] phi from multiply_tables_compare to multiply_tables_compare::@1 [phi:multiply_tables_compare->multiply_tables_compare::@1] b1_from_multiply_tables_compare: - //SEG181 [91] phi (byte*) multiply_tables_compare::asm_sqr#2 = (const byte[512]) asm_mul_sqr1_lo#0 [phi:multiply_tables_compare->multiply_tables_compare::@1#0] -- pbuz1=pbuc1 + //SEG433 [206] phi (byte*) multiply_tables_compare::asm_sqr#2 = (const byte[512]) asm_mul_sqr1_lo#0 [phi:multiply_tables_compare->multiply_tables_compare::@1#0] -- pbuz1=pbuc1 lda #asm_mul_sqr1_lo sta asm_sqr+1 - //SEG182 [91] phi (byte*) multiply_tables_compare::kc_sqr#2 = (const byte[512]) mul_sqr1_lo#0 [phi:multiply_tables_compare->multiply_tables_compare::@1#1] -- pbuz1=pbuc1 + //SEG434 [206] phi (byte*) multiply_tables_compare::kc_sqr#2 = (const byte[512]) mul_sqr1_lo#0 [phi:multiply_tables_compare->multiply_tables_compare::@1#1] -- pbuz1=pbuc1 lda #mul_sqr1_lo sta kc_sqr+1 jmp b1 - //SEG183 [91] phi from multiply_tables_compare::@2 to multiply_tables_compare::@1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1] + //SEG435 [206] phi from multiply_tables_compare::@2 to multiply_tables_compare::@1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1] b1_from_b2: - //SEG184 [91] phi (byte*) multiply_tables_compare::asm_sqr#2 = (byte*) multiply_tables_compare::asm_sqr#1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1#0] -- register_copy - //SEG185 [91] phi (byte*) multiply_tables_compare::kc_sqr#2 = (byte*) multiply_tables_compare::kc_sqr#1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1#1] -- register_copy + //SEG436 [206] phi (byte*) multiply_tables_compare::asm_sqr#2 = (byte*) multiply_tables_compare::asm_sqr#1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1#0] -- register_copy + //SEG437 [206] phi (byte*) multiply_tables_compare::kc_sqr#2 = (byte*) multiply_tables_compare::kc_sqr#1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1#1] -- register_copy jmp b1 - //SEG186 multiply_tables_compare::@1 + //SEG438 multiply_tables_compare::@1 b1: - //SEG187 [92] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) -- _deref_pbuz1_eq__deref_pbuz2_then_la1 + //SEG439 [207] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) -- _deref_pbuz1_eq__deref_pbuz2_then_la1 ldy #0 lda (kc_sqr),y ldy #0 cmp (asm_sqr),y beq b2 jmp b3 - //SEG188 multiply_tables_compare::@3 + //SEG440 multiply_tables_compare::@3 b3: - //SEG189 [93] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) -- _deref_pbuc1=vbuc2 + //SEG441 [208] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG190 [94] call print_str param-assignment [ char_cursor#2 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) - //SEG191 [53] phi from multiply_tables_compare::@3 to print_str [phi:multiply_tables_compare::@3->print_str] + //SEG442 [209] call print_str param-assignment [ char_cursor#117 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) + //SEG443 [51] phi from multiply_tables_compare::@3 to print_str [phi:multiply_tables_compare::@3->print_str] print_str_from_b3: - //SEG192 [53] phi (byte*) char_cursor#71 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@3->print_str#0] -- pbuz1=pbuc1 + //SEG444 [51] phi (byte*) char_cursor#135 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@3->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta char_cursor lda #>$400 sta char_cursor+1 - //SEG193 [53] phi (byte*) print_str::str#9 = (const string) multiply_tables_compare::str [phi:multiply_tables_compare::@3->print_str#1] -- pbuz1=pbuc1 + //SEG445 [51] phi (byte*) print_str::str#16 = (const string) multiply_tables_compare::str [phi:multiply_tables_compare::@3->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b6 - //SEG194 multiply_tables_compare::@6 + //SEG446 multiply_tables_compare::@6 b6: - //SEG195 [95] (word) print_word::w#0 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#2 print_word::w#0 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 print_word::w#0 multiply_tables_compare::kc_sqr#2 ] ) -- vwuz1=_word_pbuz2 + //SEG447 [210] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ) -- vwuz1=_word_pbuz2 lda asm_sqr sta print_word.w lda asm_sqr+1 sta print_word.w+1 - //SEG196 [96] call print_word param-assignment [ char_cursor#11 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#11 multiply_tables_compare::kc_sqr#2 ] ) - //SEG197 [60] phi from multiply_tables_compare::@6 to print_word [phi:multiply_tables_compare::@6->print_word] + //SEG448 [211] call print_word param-assignment [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ) + //SEG449 [86] phi from multiply_tables_compare::@6 to print_word [phi:multiply_tables_compare::@6->print_word] print_word_from_b6: - //SEG198 [60] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:multiply_tables_compare::@6->print_word#0] -- register_copy + //SEG450 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_tables_compare::@6->print_word#0] -- register_copy + //SEG451 [86] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:multiply_tables_compare::@6->print_word#1] -- register_copy jsr print_word - //SEG199 [97] phi from multiply_tables_compare::@6 to multiply_tables_compare::@7 [phi:multiply_tables_compare::@6->multiply_tables_compare::@7] + //SEG452 [212] phi from multiply_tables_compare::@6 to multiply_tables_compare::@7 [phi:multiply_tables_compare::@6->multiply_tables_compare::@7] b7_from_b6: jmp b7 - //SEG200 multiply_tables_compare::@7 + //SEG453 multiply_tables_compare::@7 b7: - //SEG201 [98] call print_str param-assignment [ char_cursor#2 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 multiply_tables_compare::kc_sqr#2 ] ) - //SEG202 [53] phi from multiply_tables_compare::@7 to print_str [phi:multiply_tables_compare::@7->print_str] + //SEG454 [213] call print_str param-assignment [ char_cursor#117 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 multiply_tables_compare::kc_sqr#2 ] ) + //SEG455 [51] phi from multiply_tables_compare::@7 to print_str [phi:multiply_tables_compare::@7->print_str] print_str_from_b7: - //SEG203 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#11 [phi:multiply_tables_compare::@7->print_str#0] -- register_copy - //SEG204 [53] phi (byte*) print_str::str#9 = (const string) multiply_tables_compare::str1 [phi:multiply_tables_compare::@7->print_str#1] -- pbuz1=pbuc1 + //SEG456 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:multiply_tables_compare::@7->print_str#0] -- register_copy + //SEG457 [51] phi (byte*) print_str::str#16 = (const string) multiply_tables_compare::str1 [phi:multiply_tables_compare::@7->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b8 - //SEG205 multiply_tables_compare::@8 + //SEG458 multiply_tables_compare::@8 b8: - //SEG206 [99] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#2 print_word::w#1 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 print_word::w#1 ] ) -- vwuz1=_word_pbuz2 + //SEG459 [214] (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#2 ] ) -- vwuz1=_word_pbuz2 lda kc_sqr sta print_word.w lda kc_sqr+1 sta print_word.w+1 - //SEG207 [100] call print_word param-assignment [ char_cursor#11 ] ( main:2::multiply_tables_compare:11 [ char_cursor#11 ] ) - //SEG208 [60] phi from multiply_tables_compare::@8 to print_word [phi:multiply_tables_compare::@8->print_word] + //SEG460 [215] call print_word param-assignment [ char_cursor#17 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 ] ) + //SEG461 [86] phi from multiply_tables_compare::@8 to print_word [phi:multiply_tables_compare::@8->print_word] print_word_from_b8: - //SEG209 [60] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:multiply_tables_compare::@8->print_word#0] -- register_copy + //SEG462 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_tables_compare::@8->print_word#0] -- register_copy + //SEG463 [86] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:multiply_tables_compare::@8->print_word#1] -- register_copy jsr print_word - //SEG210 [101] phi from multiply_tables_compare::@8 to multiply_tables_compare::@return [phi:multiply_tables_compare::@8->multiply_tables_compare::@return] + //SEG464 [216] phi from multiply_tables_compare::@8 to multiply_tables_compare::@return [phi:multiply_tables_compare::@8->multiply_tables_compare::@return] breturn_from_b8: - //SEG211 [101] phi (byte*) line_cursor#17 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@8->multiply_tables_compare::@return#0] -- pbuz1=pbuc1 + //SEG465 [216] phi (byte*) line_cursor#27 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@8->multiply_tables_compare::@return#0] -- pbuz1=pbuc1 lda #<$400 sta line_cursor lda #>$400 sta line_cursor+1 - //SEG212 [101] phi (byte*) char_cursor#20 = (byte*) char_cursor#11 [phi:multiply_tables_compare::@8->multiply_tables_compare::@return#1] -- register_copy + //SEG466 [216] phi (byte*) char_cursor#27 = (byte*) char_cursor#17 [phi:multiply_tables_compare::@8->multiply_tables_compare::@return#1] -- register_copy jmp breturn - //SEG213 multiply_tables_compare::@return + //SEG467 multiply_tables_compare::@return breturn: - //SEG214 [102] return [ line_cursor#17 char_cursor#20 ] ( main:2::multiply_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) + //SEG468 [217] return [ line_cursor#27 char_cursor#27 ] ( main:2::multiply_tables_compare:11 [ line_cursor#27 char_cursor#27 ] ) rts - //SEG215 multiply_tables_compare::@2 + //SEG469 multiply_tables_compare::@2 b2: - //SEG216 [103] (byte*) multiply_tables_compare::asm_sqr#1 ← ++ (byte*) multiply_tables_compare::asm_sqr#2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG470 [218] (byte*) multiply_tables_compare::asm_sqr#1 ← ++ (byte*) multiply_tables_compare::asm_sqr#2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 inc asm_sqr bne !+ inc asm_sqr+1 !: - //SEG217 [104] (byte*) multiply_tables_compare::kc_sqr#1 ← ++ (byte*) multiply_tables_compare::kc_sqr#2 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG471 [219] (byte*) multiply_tables_compare::kc_sqr#1 ← ++ (byte*) multiply_tables_compare::kc_sqr#2 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 inc kc_sqr bne !+ inc kc_sqr+1 !: - //SEG218 [105] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG472 [220] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda kc_sqr+1 cmp #>mul_sqr1_lo+$200*4 bcc b1_from_b2 @@ -5511,57 +9761,58 @@ multiply_tables_compare: { cmp #multiply_tables_compare::@5] + //SEG473 [221] phi from multiply_tables_compare::@2 to multiply_tables_compare::@5 [phi:multiply_tables_compare::@2->multiply_tables_compare::@5] b5_from_b2: jmp b5 - //SEG220 multiply_tables_compare::@5 + //SEG474 multiply_tables_compare::@5 b5: - //SEG221 [107] call print_str param-assignment [ char_cursor#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 ] ) - //SEG222 [53] phi from multiply_tables_compare::@5 to print_str [phi:multiply_tables_compare::@5->print_str] + //SEG475 [222] call print_str param-assignment [ char_cursor#117 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 ] ) + //SEG476 [51] phi from multiply_tables_compare::@5 to print_str [phi:multiply_tables_compare::@5->print_str] print_str_from_b5: - //SEG223 [53] phi (byte*) char_cursor#71 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@5->print_str#0] -- pbuz1=pbuc1 + //SEG477 [51] phi (byte*) char_cursor#135 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@5->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta char_cursor lda #>$400 sta char_cursor+1 - //SEG224 [53] phi (byte*) print_str::str#9 = (const string) multiply_tables_compare::str2 [phi:multiply_tables_compare::@5->print_str#1] -- pbuz1=pbuc1 + //SEG478 [51] phi (byte*) print_str::str#16 = (const string) multiply_tables_compare::str2 [phi:multiply_tables_compare::@5->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG225 [108] phi from multiply_tables_compare::@5 to multiply_tables_compare::@10 [phi:multiply_tables_compare::@5->multiply_tables_compare::@10] + //SEG479 [223] phi from multiply_tables_compare::@5 to multiply_tables_compare::@10 [phi:multiply_tables_compare::@5->multiply_tables_compare::@10] b10_from_b5: jmp b10 - //SEG226 multiply_tables_compare::@10 + //SEG480 multiply_tables_compare::@10 b10: - //SEG227 [109] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 ] ) - //SEG228 [48] phi from multiply_tables_compare::@10 to print_ln [phi:multiply_tables_compare::@10->print_ln] + //SEG481 [224] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 ] ) + //SEG482 [46] phi from multiply_tables_compare::@10 to print_ln [phi:multiply_tables_compare::@10->print_ln] print_ln_from_b10: - //SEG229 [48] phi (byte*) line_cursor#22 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@10->print_ln#0] -- pbuz1=pbuc1 + //SEG483 [46] phi (byte*) char_cursor#118 = (byte*) char_cursor#117 [phi:multiply_tables_compare::@10->print_ln#0] -- register_copy + //SEG484 [46] phi (byte*) line_cursor#40 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta line_cursor lda #>$400 sta line_cursor+1 jsr print_ln - //SEG230 [110] (byte*~) char_cursor#100 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#100 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#100 ] ) -- pbuz1=pbuz2 + //SEG485 [225] (byte*~) char_cursor#197 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#197 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#197 ] ) -- pbuz1=pbuz2 lda line_cursor sta char_cursor lda line_cursor+1 sta char_cursor+1 - //SEG231 [101] phi from multiply_tables_compare::@10 to multiply_tables_compare::@return [phi:multiply_tables_compare::@10->multiply_tables_compare::@return] + //SEG486 [216] phi from multiply_tables_compare::@10 to multiply_tables_compare::@return [phi:multiply_tables_compare::@10->multiply_tables_compare::@return] breturn_from_b10: - //SEG232 [101] phi (byte*) line_cursor#17 = (byte*) line_cursor#1 [phi:multiply_tables_compare::@10->multiply_tables_compare::@return#0] -- register_copy - //SEG233 [101] phi (byte*) char_cursor#20 = (byte*~) char_cursor#100 [phi:multiply_tables_compare::@10->multiply_tables_compare::@return#1] -- register_copy + //SEG487 [216] phi (byte*) line_cursor#27 = (byte*) line_cursor#1 [phi:multiply_tables_compare::@10->multiply_tables_compare::@return#0] -- register_copy + //SEG488 [216] phi (byte*) char_cursor#27 = (byte*~) char_cursor#197 [phi:multiply_tables_compare::@10->multiply_tables_compare::@return#1] -- register_copy jmp breturn str: .text "multiply table mismatch at @" str1: .text " / @" str2: .text "multiply tables match!@" } -//SEG234 init_multiply_asm +//SEG489 init_multiply_asm init_multiply_asm: { .const mem = $ff - //SEG235 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } + //SEG490 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } ldx #0 txa .byte $c9 @@ -5600,25 +9851,25 @@ init_multiply_asm: { dey inx bne !- - //SEG236 [112] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG491 [227] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr1_lo sta mem - //SEG237 [113] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG492 [228] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr1_hi sta mem - //SEG238 [114] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG493 [229] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr2_lo sta mem - //SEG239 [115] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG494 [230] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr2_hi sta mem jmp breturn - //SEG240 init_multiply_asm::@return + //SEG495 init_multiply_asm::@return breturn: - //SEG241 [116] return [ ] ( main:2::init_multiply_asm:9 [ ] ) + //SEG496 [231] return [ ] ( main:2::init_multiply_asm:9 [ ] ) rts } -//SEG242 init_multiply +//SEG497 init_multiply init_multiply: { .label sqr1_hi = 6 .label sqr = 8 @@ -5627,162 +9878,162 @@ init_multiply: { .label sqr2_hi = 6 .label sqr2_lo = 4 .label dir = 2 - //SEG243 [118] phi from init_multiply to init_multiply::@1 [phi:init_multiply->init_multiply::@1] + //SEG498 [233] phi from init_multiply to init_multiply::@1 [phi:init_multiply->init_multiply::@1] b1_from_init_multiply: - //SEG244 [118] phi (byte) init_multiply::x_2#3 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#0] -- vbuz1=vbuc1 + //SEG499 [233] phi (byte) init_multiply::x_2#3 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG245 [118] phi (byte*) init_multiply::sqr1_hi#2 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 [phi:init_multiply->init_multiply::@1#1] -- pbuz1=pbuc1 + //SEG500 [233] phi (byte*) init_multiply::sqr1_hi#2 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 [phi:init_multiply->init_multiply::@1#1] -- pbuz1=pbuc1 lda #mul_sqr1_hi+1 sta sqr1_hi+1 - //SEG246 [118] phi (byte*) init_multiply::sqr1_lo#2 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 [phi:init_multiply->init_multiply::@1#2] -- pbuz1=pbuc1 + //SEG501 [233] phi (byte*) init_multiply::sqr1_lo#2 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 [phi:init_multiply->init_multiply::@1#2] -- pbuz1=pbuc1 lda #mul_sqr1_lo+1 sta sqr1_lo+1 - //SEG247 [118] phi (word) init_multiply::sqr#4 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#3] -- vwuz1=vbuc1 + //SEG502 [233] phi (word) init_multiply::sqr#4 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#3] -- vwuz1=vbuc1 lda #0 sta sqr lda #0 sta sqr+1 - //SEG248 [118] phi (byte) init_multiply::c#2 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#4] -- vbuxx=vbuc1 + //SEG503 [233] phi (byte) init_multiply::c#2 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#4] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG249 [118] phi from init_multiply::@2 to init_multiply::@1 [phi:init_multiply::@2->init_multiply::@1] + //SEG504 [233] phi from init_multiply::@2 to init_multiply::@1 [phi:init_multiply::@2->init_multiply::@1] b1_from_b2: - //SEG250 [118] phi (byte) init_multiply::x_2#3 = (byte) init_multiply::x_2#2 [phi:init_multiply::@2->init_multiply::@1#0] -- register_copy - //SEG251 [118] phi (byte*) init_multiply::sqr1_hi#2 = (byte*) init_multiply::sqr1_hi#1 [phi:init_multiply::@2->init_multiply::@1#1] -- register_copy - //SEG252 [118] phi (byte*) init_multiply::sqr1_lo#2 = (byte*) init_multiply::sqr1_lo#1 [phi:init_multiply::@2->init_multiply::@1#2] -- register_copy - //SEG253 [118] phi (word) init_multiply::sqr#4 = (word) init_multiply::sqr#1 [phi:init_multiply::@2->init_multiply::@1#3] -- register_copy - //SEG254 [118] phi (byte) init_multiply::c#2 = (byte) init_multiply::c#1 [phi:init_multiply::@2->init_multiply::@1#4] -- register_copy + //SEG505 [233] phi (byte) init_multiply::x_2#3 = (byte) init_multiply::x_2#2 [phi:init_multiply::@2->init_multiply::@1#0] -- register_copy + //SEG506 [233] phi (byte*) init_multiply::sqr1_hi#2 = (byte*) init_multiply::sqr1_hi#1 [phi:init_multiply::@2->init_multiply::@1#1] -- register_copy + //SEG507 [233] phi (byte*) init_multiply::sqr1_lo#2 = (byte*) init_multiply::sqr1_lo#1 [phi:init_multiply::@2->init_multiply::@1#2] -- register_copy + //SEG508 [233] phi (word) init_multiply::sqr#4 = (word) init_multiply::sqr#1 [phi:init_multiply::@2->init_multiply::@1#3] -- register_copy + //SEG509 [233] phi (byte) init_multiply::c#2 = (byte) init_multiply::c#1 [phi:init_multiply::@2->init_multiply::@1#4] -- register_copy jmp b1 - //SEG255 init_multiply::@1 + //SEG510 init_multiply::@1 b1: - //SEG256 [119] (byte) init_multiply::c#1 ← ++ (byte) init_multiply::c#2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) -- vbuxx=_inc_vbuxx + //SEG511 [234] (byte) init_multiply::c#1 ← ++ (byte) init_multiply::c#2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG257 [120] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word) 1 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG512 [235] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word) 1 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG258 [121] if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word) 0) goto init_multiply::@2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) -- vbuaa_neq_0_then_la1 + //SEG513 [236] if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word) 0) goto init_multiply::@2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) -- vbuaa_neq_0_then_la1 cmp #0 bne b2_from_b1 jmp b5 - //SEG259 init_multiply::@5 + //SEG514 init_multiply::@5 b5: - //SEG260 [122] (byte) init_multiply::x_2#1 ← ++ (byte) init_multiply::x_2#3 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG515 [237] (byte) init_multiply::x_2#1 ← ++ (byte) init_multiply::x_2#3 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ) -- vbuz1=_inc_vbuz1 inc x_2 - //SEG261 [123] (word) init_multiply::sqr#2 ← ++ (word) init_multiply::sqr#4 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ) -- vwuz1=_inc_vwuz1 + //SEG516 [238] (word) init_multiply::sqr#2 ← ++ (word) init_multiply::sqr#4 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ) -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG262 [124] phi from init_multiply::@1 init_multiply::@5 to init_multiply::@2 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2] + //SEG517 [239] phi from init_multiply::@1 init_multiply::@5 to init_multiply::@2 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2] b2_from_b1: b2_from_b5: - //SEG263 [124] phi (byte) init_multiply::x_2#2 = (byte) init_multiply::x_2#3 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2#0] -- register_copy - //SEG264 [124] phi (word) init_multiply::sqr#3 = (word) init_multiply::sqr#4 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2#1] -- register_copy + //SEG518 [239] phi (byte) init_multiply::x_2#2 = (byte) init_multiply::x_2#3 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2#0] -- register_copy + //SEG519 [239] phi (word) init_multiply::sqr#3 = (word) init_multiply::sqr#4 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2#1] -- register_copy jmp b2 - //SEG265 init_multiply::@2 + //SEG520 init_multiply::@2 b2: - //SEG266 [125] (byte~) init_multiply::$5 ← < (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ) -- vbuaa=_lo_vwuz1 + //SEG521 [240] (byte~) init_multiply::$5 ← < (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ) -- vbuaa=_lo_vwuz1 lda sqr - //SEG267 [126] *((byte*) init_multiply::sqr1_lo#2) ← (byte~) init_multiply::$5 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- _deref_pbuz1=vbuaa + //SEG522 [241] *((byte*) init_multiply::sqr1_lo#2) ← (byte~) init_multiply::$5 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG268 [127] (byte~) init_multiply::$6 ← > (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ) -- vbuaa=_hi_vwuz1 + //SEG523 [242] (byte~) init_multiply::$6 ← > (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ) -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG269 [128] *((byte*) init_multiply::sqr1_hi#2) ← (byte~) init_multiply::$6 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- _deref_pbuz1=vbuaa + //SEG524 [243] *((byte*) init_multiply::sqr1_hi#2) ← (byte~) init_multiply::$6 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - //SEG270 [129] (byte*) init_multiply::sqr1_hi#1 ← ++ (byte*) init_multiply::sqr1_hi#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- pbuz1=_inc_pbuz1 + //SEG525 [244] (byte*) init_multiply::sqr1_hi#1 ← ++ (byte*) init_multiply::sqr1_hi#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG271 [130] (word) init_multiply::sqr#1 ← (word) init_multiply::sqr#3 + (byte) init_multiply::x_2#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2 + //SEG526 [245] (word) init_multiply::sqr#1 ← (word) init_multiply::sqr#3 + (byte) init_multiply::x_2#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr sta sqr - bcc !+ - inc sqr+1 - !: - //SEG272 [131] (byte*) init_multiply::sqr1_lo#1 ← ++ (byte*) init_multiply::sqr1_lo#2 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- pbuz1=_inc_pbuz1 + lda #0 + adc sqr+1 + sta sqr+1 + //SEG527 [246] (byte*) init_multiply::sqr1_lo#1 ← ++ (byte*) init_multiply::sqr1_lo#2 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG273 [132] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_multiply::@1 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG528 [247] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_multiply::@1 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mul_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #init_multiply::@3] + //SEG529 [248] phi from init_multiply::@2 to init_multiply::@3 [phi:init_multiply::@2->init_multiply::@3] b3_from_b2: - //SEG275 [133] phi (byte) init_multiply::dir#2 = (byte/word/signed word) 255 [phi:init_multiply::@2->init_multiply::@3#0] -- vbuz1=vbuc1 + //SEG530 [248] phi (byte) init_multiply::dir#2 = (byte/word/signed word) 255 [phi:init_multiply::@2->init_multiply::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG276 [133] phi (byte*) init_multiply::sqr2_hi#2 = (const byte[512]) mul_sqr2_hi#0 [phi:init_multiply::@2->init_multiply::@3#1] -- pbuz1=pbuc1 + //SEG531 [248] phi (byte*) init_multiply::sqr2_hi#2 = (const byte[512]) mul_sqr2_hi#0 [phi:init_multiply::@2->init_multiply::@3#1] -- pbuz1=pbuc1 lda #mul_sqr2_hi sta sqr2_hi+1 - //SEG277 [133] phi (byte*) init_multiply::sqr2_lo#2 = (const byte[512]) mul_sqr2_lo#0 [phi:init_multiply::@2->init_multiply::@3#2] -- pbuz1=pbuc1 + //SEG532 [248] phi (byte*) init_multiply::sqr2_lo#2 = (const byte[512]) mul_sqr2_lo#0 [phi:init_multiply::@2->init_multiply::@3#2] -- pbuz1=pbuc1 lda #mul_sqr2_lo sta sqr2_lo+1 - //SEG278 [133] phi (byte) init_multiply::x_255#2 = ((byte))-(byte/signed byte/word/signed word) 1 [phi:init_multiply::@2->init_multiply::@3#3] -- vbuxx=vbuc1 + //SEG533 [248] phi (byte) init_multiply::x_255#2 = ((byte))-(byte/signed byte/word/signed word) 1 [phi:init_multiply::@2->init_multiply::@3#3] -- vbuxx=vbuc1 ldx #-1 jmp b3 - //SEG279 [133] phi from init_multiply::@4 to init_multiply::@3 [phi:init_multiply::@4->init_multiply::@3] + //SEG534 [248] phi from init_multiply::@4 to init_multiply::@3 [phi:init_multiply::@4->init_multiply::@3] b3_from_b4: - //SEG280 [133] phi (byte) init_multiply::dir#2 = (byte) init_multiply::dir#3 [phi:init_multiply::@4->init_multiply::@3#0] -- register_copy - //SEG281 [133] phi (byte*) init_multiply::sqr2_hi#2 = (byte*) init_multiply::sqr2_hi#1 [phi:init_multiply::@4->init_multiply::@3#1] -- register_copy - //SEG282 [133] phi (byte*) init_multiply::sqr2_lo#2 = (byte*) init_multiply::sqr2_lo#1 [phi:init_multiply::@4->init_multiply::@3#2] -- register_copy - //SEG283 [133] phi (byte) init_multiply::x_255#2 = (byte) init_multiply::x_255#1 [phi:init_multiply::@4->init_multiply::@3#3] -- register_copy + //SEG535 [248] phi (byte) init_multiply::dir#2 = (byte) init_multiply::dir#3 [phi:init_multiply::@4->init_multiply::@3#0] -- register_copy + //SEG536 [248] phi (byte*) init_multiply::sqr2_hi#2 = (byte*) init_multiply::sqr2_hi#1 [phi:init_multiply::@4->init_multiply::@3#1] -- register_copy + //SEG537 [248] phi (byte*) init_multiply::sqr2_lo#2 = (byte*) init_multiply::sqr2_lo#1 [phi:init_multiply::@4->init_multiply::@3#2] -- register_copy + //SEG538 [248] phi (byte) init_multiply::x_255#2 = (byte) init_multiply::x_255#1 [phi:init_multiply::@4->init_multiply::@3#3] -- register_copy jmp b3 - //SEG284 init_multiply::@3 + //SEG539 init_multiply::@3 b3: - //SEG285 [134] *((byte*) init_multiply::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG540 [249] *((byte*) init_multiply::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mul_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG286 [135] *((byte*) init_multiply::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG541 [250] *((byte*) init_multiply::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mul_sqr1_hi,x ldy #0 sta (sqr2_hi),y - //SEG287 [136] (byte*) init_multiply::sqr2_hi#1 ← ++ (byte*) init_multiply::sqr2_hi#2 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG542 [251] (byte*) init_multiply::sqr2_hi#1 ← ++ (byte*) init_multiply::sqr2_hi#2 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG288 [137] (byte) init_multiply::x_255#1 ← (byte) init_multiply::x_255#2 + (byte) init_multiply::dir#2 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) -- vbuxx=vbuxx_plus_vbuz1 + //SEG543 [252] (byte) init_multiply::x_255#1 ← (byte) init_multiply::x_255#2 + (byte) init_multiply::dir#2 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG289 [138] if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_multiply::@12 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) -- vbuxx_neq_0_then_la1 + //SEG544 [253] if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_multiply::@12 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b12_from_b3 - //SEG290 [139] phi from init_multiply::@3 to init_multiply::@4 [phi:init_multiply::@3->init_multiply::@4] + //SEG545 [254] phi from init_multiply::@3 to init_multiply::@4 [phi:init_multiply::@3->init_multiply::@4] b4_from_b3: - //SEG291 [139] phi (byte) init_multiply::dir#3 = (byte/signed byte/word/signed word) 1 [phi:init_multiply::@3->init_multiply::@4#0] -- vbuz1=vbuc1 + //SEG546 [254] phi (byte) init_multiply::dir#3 = (byte/signed byte/word/signed word) 1 [phi:init_multiply::@3->init_multiply::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG292 init_multiply::@4 + //SEG547 init_multiply::@4 b4: - //SEG293 [140] (byte*) init_multiply::sqr2_lo#1 ← ++ (byte*) init_multiply::sqr2_lo#2 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) -- pbuz1=_inc_pbuz1 + //SEG548 [255] (byte*) init_multiply::sqr2_lo#1 ← ++ (byte*) init_multiply::sqr2_lo#2 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG294 [141] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_multiply::@3 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG549 [256] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_multiply::@3 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mul_sqr2_lo+$1ff bne b3_from_b4 @@ -5790,56 +10041,56 @@ init_multiply: { cmp #init_multiply::@12] + //SEG555 [260] phi from init_multiply::@3 to init_multiply::@12 [phi:init_multiply::@3->init_multiply::@12] b12_from_b3: jmp b12 - //SEG301 init_multiply::@12 + //SEG556 init_multiply::@12 b12: - //SEG302 [139] phi from init_multiply::@12 to init_multiply::@4 [phi:init_multiply::@12->init_multiply::@4] + //SEG557 [254] phi from init_multiply::@12 to init_multiply::@4 [phi:init_multiply::@12->init_multiply::@4] b4_from_b12: - //SEG303 [139] phi (byte) init_multiply::dir#3 = (byte) init_multiply::dir#2 [phi:init_multiply::@12->init_multiply::@4#0] -- register_copy + //SEG558 [254] phi (byte) init_multiply::dir#3 = (byte) init_multiply::dir#2 [phi:init_multiply::@12->init_multiply::@4#0] -- register_copy jmp b4 } -//SEG304 print_cls +//SEG559 print_cls print_cls: { .label sc = 4 - //SEG305 [147] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG560 [262] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG306 [147] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG561 [262] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG307 [147] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG562 [262] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG308 [147] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG563 [262] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG309 print_cls::@1 + //SEG564 print_cls::@1 b1: - //SEG310 [148] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG565 [263] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #' ' sta (sc),y - //SEG311 [149] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG566 [264] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG312 [150] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 + //SEG567 [265] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -5847,9 +10098,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG313 print_cls::@return + //SEG568 print_cls::@return breturn: - //SEG314 [151] return [ ] ( main:2::print_cls:5 [ ] ) + //SEG569 [266] return [ ] ( main:2::print_cls:5 [ ] ) rts } .align $100 @@ -5870,36 +10121,79 @@ print_cls: { asm_mul_sqr2_hi: .fill $200, 0 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b13 +Removing instruction jmp b20 Removing instruction jmp bend Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b3 Removing instruction jmp b4 +Removing instruction jmp b5 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b8 Removing instruction jmp b9 Removing instruction jmp b4 -Removing instruction jmp b10 -Removing instruction jmp b11 -Removing instruction jmp b12 Removing instruction jmp breturn Removing instruction jmp b6 Removing instruction jmp b7 -Removing instruction jmp b14 +Removing instruction jmp b11 +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b3 +Removing instruction jmp b4 +Removing instruction jmp b5 +Removing instruction jmp b6 +Removing instruction jmp b7 +Removing instruction jmp b8 +Removing instruction jmp breturn +Removing instruction jmp b2 +Removing instruction jmp b4 Removing instruction jmp b1 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp b2 +Removing instruction jmp b4 Removing instruction jmp b1 Removing instruction jmp breturn +Removing instruction jmp b6 +Removing instruction jmp b3 +Removing instruction jmp b1 +Removing instruction jmp b4 +Removing instruction jmp b2 Removing instruction jmp breturn Removing instruction jmp breturn Removing instruction jmp b2 +Removing instruction jmp b3 +Removing instruction jmp breturn +Removing instruction jmp b5 +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b8 +Removing instruction jmp b9 +Removing instruction jmp b4 +Removing instruction jmp breturn +Removing instruction jmp b6 +Removing instruction jmp b7 +Removing instruction jmp b11 +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b3 +Removing instruction jmp b4 +Removing instruction jmp b5 +Removing instruction jmp b6 +Removing instruction jmp b7 +Removing instruction jmp b8 +Removing instruction jmp breturn +Removing instruction jmp b2 Removing instruction jmp b1 Removing instruction jmp breturn Removing instruction jmp b1 @@ -5924,6 +10218,11 @@ Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction ldy #0 Replacing instruction lda memA with TXA +Removing instruction lda #0 +Removing instruction lda #0 +Removing instruction lda #0 +Removing instruction lda #0 +Removing instruction lda #0 Replacing instruction lda #0 with TYA Removing instruction lda #0 Removing instruction lda #0 @@ -5935,10 +10234,17 @@ Removing instruction ldy #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b2_from_b3 with b2 Replacing label b1_from_b6 with b1 -Replacing label breturn_from_b14 with breturn Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b2 with b1 +Replacing label b1_from_print_sword with b1 +Replacing label b1_from_print_sbyte with b1 +Replacing label b1_from_b6 with b1 +Replacing label b2_from_b1 with b2 +Replacing label b2_from_b2 with b2 +Replacing label b5_from_b5 with b5 +Replacing label b2_from_b3 with b2 +Replacing label b1_from_b6 with b1 Replacing label b2_from_b2 with b2 Replacing label b1_from_b2 with b1 Replacing label b1_from_b2 with b1 @@ -5951,8 +10257,8 @@ Replacing label b3_from_b4 with b3 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b13_from_bbegin: -Removing instruction bend_from_b13: +Removing instruction b20_from_bbegin: +Removing instruction bend_from_b20: Removing instruction b1_from_main: Removing instruction init_multiply_from_b1: Removing instruction b2_from_b1: @@ -5960,21 +10266,59 @@ Removing instruction b3_from_b2: Removing instruction multiply_tables_compare_from_b3: Removing instruction b4_from_b3: Removing instruction multiply_results_compare_from_b4: +Removing instruction b5_from_b4: +Removing instruction signed_multiply_results_compare_from_b5: Removing instruction b1_from_b6: Removing instruction b2_from_b1: Removing instruction b2_from_b3: -Removing instruction b11_from_b10: -Removing instruction print_str_from_b11: -Removing instruction breturn_from_b12: -Removing instruction breturn_from_b14: -Removing instruction b7_from_b6: -Removing instruction print_str_from_b7: -Removing instruction b14_from_b7: -Removing instruction print_ln_from_b14: +Removing instruction b11_from_b7: +Removing instruction print_ln_from_b11: Removing instruction b1_from_print_ln: Removing instruction b1_from_b1: Removing instruction b1_from_print_str: Removing instruction b1_from_b2: +Removing instruction b2_from_b1: +Removing instruction print_str_from_b2: +Removing instruction b4_from_b3: +Removing instruction print_str_from_b4: +Removing instruction b6_from_b5: +Removing instruction print_str_from_b6: +Removing instruction b8_from_b7: +Removing instruction print_ln_from_b8: +Removing instruction b2_from_print_sword: +Removing instruction print_char_from_b2: +Removing instruction b1_from_print_sword: +Removing instruction b1_from_b4: +Removing instruction print_word_from_b1: +Removing instruction b2_from_print_sbyte: +Removing instruction print_char_from_b2: +Removing instruction b1_from_print_sbyte: +Removing instruction b1_from_b4: +Removing instruction print_byte_from_b1: +Removing instruction b1_from_b3: +Removing instruction b1_from_b6: +Removing instruction b2_from_b1: +Removing instruction b2_from_b4: +Removing instruction breturn: +Removing instruction b2_from_b2: +Removing instruction b3_from_b2: +Removing instruction breturn: +Removing instruction b5_from_b5: +Removing instruction b1_from_b6: +Removing instruction b2_from_b1: +Removing instruction b2_from_b3: +Removing instruction b7_from_b6: +Removing instruction print_str_from_b7: +Removing instruction b11_from_b7: +Removing instruction print_ln_from_b11: +Removing instruction b2_from_b1: +Removing instruction print_str_from_b2: +Removing instruction b4_from_b3: +Removing instruction print_str_from_b4: +Removing instruction b6_from_b5: +Removing instruction print_str_from_b6: +Removing instruction b8_from_b7: +Removing instruction print_ln_from_b8: Removing instruction b2_from_b2: Removing instruction breturn: Removing instruction b1_from_b2: @@ -5992,29 +10336,42 @@ Removing instruction b12_from_b3: Removing instruction b4_from_b12: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b13: +Removing instruction b20: Removing instruction bend: Removing instruction print_cls_from_main: Removing instruction b1: Removing instruction b2: Removing instruction b3: Removing instruction b4: +Removing instruction b5: Removing instruction breturn: -Removing instruction b1_from_multiply_results_compare: +Removing instruction b1_from_signed_multiply_results_compare: Removing instruction b8: Removing instruction b9: Removing instruction b4: -Removing instruction print_str_from_b4: -Removing instruction b10: -Removing instruction print_word_from_b10: -Removing instruction b11: -Removing instruction b12: -Removing instruction print_word_from_b12: Removing instruction b6: Removing instruction b7: -Removing instruction b14: +Removing instruction print_str_from_b7: +Removing instruction b11: Removing instruction breturn: Removing instruction breturn: +Removing instruction print_str_from_signed_multiply_error: +Removing instruction b1: +Removing instruction print_sbyte_from_b1: +Removing instruction b2: +Removing instruction b3: +Removing instruction print_sbyte_from_b3: +Removing instruction b4: +Removing instruction b5: +Removing instruction print_sword_from_b5: +Removing instruction b6: +Removing instruction b7: +Removing instruction print_sword_from_b7: +Removing instruction b8: +Removing instruction breturn: +Removing instruction b2: +Removing instruction b4: +Removing instruction breturn: Removing instruction print_byte_from_print_word: Removing instruction b1: Removing instruction print_byte_from_b1: @@ -6024,6 +10381,38 @@ Removing instruction b1: Removing instruction print_char_from_b1: Removing instruction breturn: Removing instruction breturn: +Removing instruction b2: +Removing instruction b4: +Removing instruction breturn: +Removing instruction multiply_from_signed_multiply: +Removing instruction b6: +Removing instruction b3: +Removing instruction b4: +Removing instruction breturn: +Removing instruction b2_from_slow_signed_multiply: +Removing instruction b5_from_b1: +Removing instruction b1_from_multiply_results_compare: +Removing instruction b8: +Removing instruction multiply_from_b8: +Removing instruction b9: +Removing instruction b4: +Removing instruction multiply_error_from_b4: +Removing instruction b6: +Removing instruction b7: +Removing instruction b11: +Removing instruction print_str_from_multiply_error: +Removing instruction b1: +Removing instruction print_byte_from_b1: +Removing instruction b2: +Removing instruction b3: +Removing instruction print_byte_from_b3: +Removing instruction b4: +Removing instruction b5: +Removing instruction print_word_from_b5: +Removing instruction b6: +Removing instruction b7: +Removing instruction print_word_from_b7: +Removing instruction b8: Removing instruction breturn: Removing instruction b2_from_slow_multiply: Removing instruction b1_from_b2: @@ -6049,25 +10438,33 @@ Removing instruction breturn: Removing instruction b1_from_print_cls: Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination +Skipping double jump to b3 in jmp b3_from_b5 Skipping double jump to b4 in bne b12 Succesful ASM optimization Pass5DoubleJumpElimination +Relabelling long label b3_from_b5 to b4 +Relabelling long label b3_from_b1 to b6 Relabelling long label b1_from_slow_multiply to b3 Succesful ASM optimization Pass5RelabelLongLabels Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b2 +Removing instruction jmp b5 +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b2 Removing instruction jmp b1 Removing instruction jmp b1 Removing instruction jmp b3 Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination +Removing instruction b4: Removing instruction b12: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction jmp b4 Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @13 +(label) @20 (label) @begin (label) @end (byte*) BGCOL @@ -6082,15 +10479,19 @@ FINAL SYMBOL TABLE (const byte[512]) asm_mul_sqr2_lo#0 asm_mul_sqr2_lo = { fill( 512, 0) } (byte*) char_cursor (byte*) char_cursor#1 char_cursor zp ZP_WORD:8 11.0 -(byte*~) char_cursor#100 char_cursor zp ZP_WORD:8 4.0 -(byte*) char_cursor#11 char_cursor zp ZP_WORD:8 0.823529411764706 -(byte*) char_cursor#2 char_cursor zp ZP_WORD:8 2.1818181818181817 -(byte*) char_cursor#20 char_cursor zp ZP_WORD:8 0.3333333333333333 -(byte*) char_cursor#27 char_cursor zp ZP_WORD:8 40.0 -(byte*) char_cursor#41 char_cursor zp ZP_WORD:8 4.0 -(byte*) char_cursor#64 char_cursor zp ZP_WORD:8 2.0 -(byte*) char_cursor#71 char_cursor zp ZP_WORD:8 10.0 -(byte*~) char_cursor#89 char_cursor zp ZP_WORD:8 4.0 +(byte*) char_cursor#117 char_cursor zp ZP_WORD:8 1.6944444444444446 +(byte*) char_cursor#118 char_cursor zp ZP_WORD:8 5.25 +(byte*) char_cursor#119 char_cursor zp ZP_WORD:8 3.0 +(byte*) char_cursor#121 char_cursor zp ZP_WORD:8 3.0 +(byte*) char_cursor#123 char_cursor zp ZP_WORD:8 6.0 +(byte*) char_cursor#124 char_cursor zp ZP_WORD:8 3.9999999999999996 +(byte*) char_cursor#135 char_cursor zp ZP_WORD:8 24.0 +(byte*) char_cursor#17 char_cursor zp ZP_WORD:8 0.7894736842105261 +(byte*~) char_cursor#172 char_cursor zp ZP_WORD:8 4.0 +(byte*~) char_cursor#176 char_cursor zp ZP_WORD:8 4.0 +(byte*~) char_cursor#197 char_cursor zp ZP_WORD:8 4.0 +(byte*) char_cursor#27 char_cursor zp ZP_WORD:8 0.27586206896551724 +(byte*) char_cursor#75 char_cursor zp ZP_WORD:8 6.0 (void()) init_multiply() (byte~) init_multiply::$2 reg byte a 22.0 (byte~) init_multiply::$5 reg byte a 22.0 @@ -6138,16 +10539,16 @@ FINAL SYMBOL TABLE (byte*) init_multiply_asm::mem (const byte*) init_multiply_asm::mem#0 mem = ((byte*))(byte/word/signed word) 255 (byte*) line_cursor -(byte*) line_cursor#1 line_cursor zp ZP_WORD:4 5.857142857142857 -(byte*) line_cursor#11 line_cursor zp ZP_WORD:4 24.0 -(byte*) line_cursor#17 line_cursor zp ZP_WORD:4 0.18181818181818182 -(byte*) line_cursor#19 line_cursor zp ZP_WORD:4 40.0 -(byte*) line_cursor#22 line_cursor zp ZP_WORD:4 4.0 +(byte*) line_cursor#1 line_cursor zp ZP_WORD:4 0.8181818181818181 +(byte*) line_cursor#20 line_cursor zp ZP_WORD:4 24.0 +(byte*) line_cursor#27 line_cursor zp ZP_WORD:4 0.1276595744680851 +(byte*) line_cursor#40 line_cursor zp ZP_WORD:4 10.0 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 +(label) main::@5 (label) main::@return (byte[512]) mul_sqr1_hi (const byte[512]) mul_sqr1_hi#0 mul_sqr1_hi = { fill( 512, 0) } @@ -6160,22 +10561,46 @@ FINAL SYMBOL TABLE (word()) multiply((byte) multiply::a , (byte) multiply::b) (label) multiply::@return (byte) multiply::a -(byte) multiply::a#0 reg byte x 51.5 +(byte) multiply::a#0 reg byte x 2.0 +(byte) multiply::a#1 reg byte x 101.0 +(byte) multiply::a#2 reg byte x 105.0 (byte) multiply::b -(byte) multiply::b#0 reg byte a 51.5 +(byte) multiply::b#0 reg byte a 4.0 +(byte) multiply::b#1 reg byte a 202.0 +(byte) multiply::b#2 reg byte a 52.5 (byte*) multiply::memA (const byte*) multiply::memA#0 memA = ((byte*))(byte/word/signed word) 254 (byte*) multiply::memB (const byte*) multiply::memB#0 memB = ((byte*))(byte/word/signed word) 255 (word) multiply::return -(word) multiply::return#0 return zp ZP_WORD:6 34.33333333333333 -(word) multiply::return#2 return zp ZP_WORD:6 202.0 +(word) multiply::return#0 return zp ZP_WORD:6 26.25 +(word) multiply::return#2 return zp ZP_WORD:6 4.0 +(word) multiply::return#3 return zp ZP_WORD:6 202.0 +(void()) multiply_error((byte) multiply_error::a , (byte) multiply_error::b , (word) multiply_error::ms , (word) multiply_error::ma) +(label) multiply_error::@1 +(label) multiply_error::@2 +(label) multiply_error::@3 +(label) multiply_error::@4 +(label) multiply_error::@5 +(label) multiply_error::@6 +(label) multiply_error::@7 +(label) multiply_error::@8 +(label) multiply_error::@return +(byte) multiply_error::a +(byte) multiply_error::a#0 reg byte x 0.6666666666666666 +(byte) multiply_error::b +(byte) multiply_error::b#0 b zp ZP_BYTE:2 0.4444444444444444 +(word) multiply_error::ma +(word) multiply_error::ma#0 ma zp ZP_WORD:12 0.26666666666666666 +(word) multiply_error::ms +(word) multiply_error::ms#0 ms zp ZP_WORD:10 0.3333333333333333 +(const string) multiply_error::str str = (string) "multiply mismatch @" +(const string) multiply_error::str1 str1 = (string) "*@" +(const string) multiply_error::str2 str2 = (string) " slow:@" +(const string) multiply_error::str3 str3 = (string) " / fast asm:@" (void()) multiply_results_compare() (label) multiply_results_compare::@1 -(label) multiply_results_compare::@10 (label) multiply_results_compare::@11 -(label) multiply_results_compare::@12 -(label) multiply_results_compare::@14 (label) multiply_results_compare::@2 (label) multiply_results_compare::@3 (label) multiply_results_compare::@4 @@ -6186,17 +10611,15 @@ FINAL SYMBOL TABLE (label) multiply_results_compare::@return (byte) multiply_results_compare::a (byte) multiply_results_compare::a#1 a zp ZP_BYTE:2 16.5 -(byte) multiply_results_compare::a#5 a zp ZP_BYTE:2 14.933333333333332 +(byte) multiply_results_compare::a#6 a zp ZP_BYTE:2 14.125 (byte) multiply_results_compare::b (byte) multiply_results_compare::b#1 b zp ZP_BYTE:3 151.5 -(byte) multiply_results_compare::b#2 b zp ZP_BYTE:3 33.666666666666664 +(byte) multiply_results_compare::b#2 b zp ZP_BYTE:3 29.0 (word) multiply_results_compare::ma -(word) multiply_results_compare::ma#0 ma zp ZP_WORD:12 25.5 +(word) multiply_results_compare::ma#0 ma zp ZP_WORD:6 34.0 (word) multiply_results_compare::ms -(word) multiply_results_compare::ms#0 ms zp ZP_WORD:10 22.666666666666664 -(const string) multiply_results_compare::str str = (string) "multiply mismatch slow:@" -(const string) multiply_results_compare::str1 str1 = (string) " / fast asm:" -(const string) multiply_results_compare::str2 str2 = (string) "multiply results match!@" +(word) multiply_results_compare::ms#0 ms zp ZP_WORD:10 20.4 +(const string) multiply_results_compare::str str = (string) "multiply results match!@" (void()) multiply_tables_compare() (label) multiply_tables_compare::@1 (label) multiply_tables_compare::@10 @@ -6224,15 +10647,18 @@ FINAL SYMBOL TABLE (byte) print_byte::b (byte) print_byte::b#0 reg byte x 4.0 (byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#2 reg byte x 4.0 +(byte) print_byte::b#3 reg byte x 4.0 +(byte) print_byte::b#4 reg byte x 4.0 +(byte) print_byte::b#5 reg byte x 3.5 (byte[]) print_byte::hextab -(const byte[]) print_byte::hextab#0 hextab = { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } +(const string) print_byte::hextab#0 hextab = (string) "0123456789abcdef" (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 4.0 +(byte) print_char::ch#3 reg byte a 4.0 +(byte) print_char::ch#4 reg byte a 6.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -6242,14 +10668,36 @@ FINAL SYMBOL TABLE (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return +(void()) print_sbyte((signed byte) print_sbyte::b) +(label) print_sbyte::@1 +(label) print_sbyte::@2 +(label) print_sbyte::@4 +(label) print_sbyte::@return +(signed byte) print_sbyte::b +(signed byte) print_sbyte::b#0 reg byte x 4.0 +(signed byte) print_sbyte::b#1 reg byte x 4.0 +(signed byte) print_sbyte::b#2 reg byte x 4.0 +(signed byte) print_sbyte::b#3 reg byte x 2.5 +(signed byte) print_sbyte::b#4 reg byte x 6.0 (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str (byte*) print_str::str#0 str zp ZP_WORD:6 22.0 -(byte*) print_str::str#7 str zp ZP_WORD:6 11.5 -(byte*) print_str::str#9 str zp ZP_WORD:6 2.0 +(byte*) print_str::str#14 str zp ZP_WORD:6 11.5 +(byte*) print_str::str#16 str zp ZP_WORD:6 2.0 +(void()) print_sword((signed word) print_sword::w) +(label) print_sword::@1 +(label) print_sword::@2 +(label) print_sword::@4 +(label) print_sword::@return +(signed word) print_sword::w +(signed word) print_sword::w#0 w zp ZP_WORD:6 4.0 +(signed word) print_sword::w#1 w zp ZP_WORD:6 4.0 +(signed word) print_sword::w#2 w zp ZP_WORD:6 4.0 +(signed word) print_sword::w#3 w zp ZP_WORD:6 2.5 +(signed word) print_sword::w#4 w zp ZP_WORD:6 6.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -6258,7 +10706,78 @@ FINAL SYMBOL TABLE (word) print_word::w#1 w zp ZP_WORD:6 4.0 (word) print_word::w#2 w zp ZP_WORD:6 4.0 (word) print_word::w#3 w zp ZP_WORD:6 4.0 -(word) print_word::w#4 w zp ZP_WORD:6 3.9999999999999996 +(word) print_word::w#4 w zp ZP_WORD:6 4.0 +(word) print_word::w#5 w zp ZP_WORD:6 4.666666666666666 +(signed word()) signed_multiply((signed byte) signed_multiply::a , (signed byte) signed_multiply::b) +(byte~) signed_multiply::$12 $12 zp ZP_BYTE:14 2.0 +(byte~) signed_multiply::$13 reg byte a 4.0 +(byte/signed byte/word/signed word~) signed_multiply::$16 reg byte a 4.0 +(byte/signed byte/word/signed word~) signed_multiply::$17 reg byte a 4.0 +(byte~) signed_multiply::$6 $6 zp ZP_BYTE:14 2.0 +(byte~) signed_multiply::$7 reg byte a 4.0 +(label) signed_multiply::@1 +(label) signed_multiply::@2 +(label) signed_multiply::@3 +(label) signed_multiply::@4 +(label) signed_multiply::@6 +(label) signed_multiply::@return +(signed byte) signed_multiply::a +(signed byte) signed_multiply::a#0 a zp ZP_BYTE:2 7.133333333333335 +(signed byte) signed_multiply::b +(signed byte) signed_multiply::b#0 reg byte y 8.916666666666664 +(word) signed_multiply::m +(word) signed_multiply::m#0 m zp ZP_WORD:6 1.6 +(word) signed_multiply::m#1 m zp ZP_WORD:6 4.0 +(word) signed_multiply::m#2 m zp ZP_WORD:6 4.0 +(word) signed_multiply::m#4 m zp ZP_WORD:6 6.0 +(word) signed_multiply::m#5 m zp ZP_WORD:6 2.0 +(signed word) signed_multiply::return +(signed word) signed_multiply::return#0 return zp ZP_WORD:6 34.33333333333333 +(signed word) signed_multiply::return#2 return zp ZP_WORD:6 202.0 +(void()) signed_multiply_error((signed byte) signed_multiply_error::a , (signed byte) signed_multiply_error::b , (signed word) signed_multiply_error::ms , (signed word) signed_multiply_error::ma) +(label) signed_multiply_error::@1 +(label) signed_multiply_error::@2 +(label) signed_multiply_error::@3 +(label) signed_multiply_error::@4 +(label) signed_multiply_error::@5 +(label) signed_multiply_error::@6 +(label) signed_multiply_error::@7 +(label) signed_multiply_error::@8 +(label) signed_multiply_error::@return +(signed byte) signed_multiply_error::a +(signed byte) signed_multiply_error::a#0 reg byte x 0.6666666666666666 +(signed byte) signed_multiply_error::b +(signed byte) signed_multiply_error::b#0 b zp ZP_BYTE:2 0.4444444444444444 +(signed word) signed_multiply_error::ma +(signed word) signed_multiply_error::ma#0 ma zp ZP_WORD:12 0.26666666666666666 +(signed word) signed_multiply_error::ms +(signed word) signed_multiply_error::ms#0 ms zp ZP_WORD:10 0.3333333333333333 +(const string) signed_multiply_error::str str = (string) "signed multiply mismatch @" +(const string) signed_multiply_error::str1 str1 = (string) "*@" +(const string) signed_multiply_error::str2 str2 = (string) " slow:@" +(const string) signed_multiply_error::str3 str3 = (string) " / fast asm:@" +(void()) signed_multiply_results_compare() +(label) signed_multiply_results_compare::@1 +(label) signed_multiply_results_compare::@11 +(label) signed_multiply_results_compare::@2 +(label) signed_multiply_results_compare::@3 +(label) signed_multiply_results_compare::@4 +(label) signed_multiply_results_compare::@6 +(label) signed_multiply_results_compare::@7 +(label) signed_multiply_results_compare::@8 +(label) signed_multiply_results_compare::@9 +(label) signed_multiply_results_compare::@return +(signed byte) signed_multiply_results_compare::a +(signed byte) signed_multiply_results_compare::a#1 a zp ZP_BYTE:2 16.5 +(signed byte) signed_multiply_results_compare::a#6 a zp ZP_BYTE:2 14.125 +(signed byte) signed_multiply_results_compare::b +(signed byte) signed_multiply_results_compare::b#1 b zp ZP_BYTE:3 151.5 +(signed byte) signed_multiply_results_compare::b#2 b zp ZP_BYTE:3 29.0 +(signed word) signed_multiply_results_compare::ma +(signed word) signed_multiply_results_compare::ma#0 ma zp ZP_WORD:6 34.0 +(signed word) signed_multiply_results_compare::ms +(signed word) signed_multiply_results_compare::ms#0 ms zp ZP_WORD:8 20.4 +(const string) signed_multiply_results_compare::str str = (string) "signed multiply results match!@" (word()) slow_multiply((byte) slow_multiply::a , (byte) slow_multiply::b) (label) slow_multiply::@1 (label) slow_multiply::@2 @@ -6276,24 +10795,60 @@ FINAL SYMBOL TABLE (word) slow_multiply::return (word) slow_multiply::return#0 return zp ZP_WORD:6 367.33333333333337 (word) slow_multiply::return#2 return zp ZP_WORD:6 202.0 +(signed word()) slow_signed_multiply((signed byte) slow_signed_multiply::a , (signed byte) slow_signed_multiply::b) +(label) slow_signed_multiply::@1 +(label) slow_signed_multiply::@2 +(label) slow_signed_multiply::@3 +(label) slow_signed_multiply::@5 +(label) slow_signed_multiply::@return +(signed byte) slow_signed_multiply::a +(signed byte) slow_signed_multiply::a#0 a zp ZP_BYTE:2 175.58333333333334 +(signed byte) slow_signed_multiply::b +(signed byte) slow_signed_multiply::b#0 reg byte x 191.1818181818182 +(signed byte) slow_signed_multiply::i +(signed byte) slow_signed_multiply::i#1 reg byte y 1501.5 +(signed byte) slow_signed_multiply::i#2 reg byte y 1001.0 +(signed byte) slow_signed_multiply::j +(signed byte) slow_signed_multiply::j#1 reg byte y 1501.5 +(signed byte) slow_signed_multiply::j#2 reg byte y 1001.0 +(signed word) slow_signed_multiply::m +(signed word) slow_signed_multiply::m#1 m zp ZP_WORD:6 1001.0 +(signed word) slow_signed_multiply::m#2 m zp ZP_WORD:6 1001.0 +(signed word) slow_signed_multiply::m#3 m zp ZP_WORD:6 2002.0 +(signed word) slow_signed_multiply::m#5 m zp ZP_WORD:6 2002.0 +(signed word) slow_signed_multiply::return +(signed word) slow_signed_multiply::return#0 return zp ZP_WORD:6 701.0 +(signed word) slow_signed_multiply::return#2 return zp ZP_WORD:6 202.0 -zp ZP_BYTE:2 [ multiply_results_compare::a#5 multiply_results_compare::a#1 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 slow_multiply::a#0 ] -zp ZP_BYTE:3 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] -zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ] -zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_multiply::return#2 multiply::return#2 multiply::return#0 ] -reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -zp ZP_WORD:8 [ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] +zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 multiply_results_compare::a#6 multiply_results_compare::a#1 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 slow_signed_multiply::a#0 signed_multiply::a#0 signed_multiply_error::b#0 slow_multiply::a#0 multiply_error::b#0 ] +zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 multiply_results_compare::b#2 multiply_results_compare::b#1 ] +zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ] +zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 signed_multiply::return#0 multiply::return#0 slow_multiply::return#2 multiply::return#3 multiply_results_compare::ma#0 ] +reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +zp ZP_WORD:8 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 signed_multiply_results_compare::ms#0 ] +reg byte x [ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ] +reg byte x [ multiply::a#2 multiply::a#1 multiply::a#0 ] +reg byte a [ multiply::b#2 multiply::b#1 multiply::b#0 ] +reg byte y [ slow_signed_multiply::i#2 slow_signed_multiply::i#1 ] +reg byte y [ slow_signed_multiply::j#2 slow_signed_multiply::j#1 ] reg byte y [ slow_multiply::i#2 slow_multiply::i#1 ] -zp ZP_WORD:10 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 multiply_results_compare::ms#0 ] +zp ZP_WORD:10 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 multiply_results_compare::ms#0 multiply_error::ms#0 ] reg byte x [ init_multiply::c#2 init_multiply::c#1 ] reg byte x [ init_multiply::x_255#2 init_multiply::x_255#1 ] -reg byte x [ slow_multiply::b#0 ] -reg byte x [ multiply::a#0 ] -reg byte a [ multiply::b#0 ] -zp ZP_WORD:12 [ multiply_results_compare::ma#0 ] +reg byte x [ slow_signed_multiply::b#0 ] +reg byte y [ signed_multiply::b#0 ] +reg byte x [ signed_multiply_error::a#0 ] +zp ZP_WORD:12 [ signed_multiply_error::ma#0 multiply_error::ma#0 ] reg byte y [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +zp ZP_BYTE:14 [ signed_multiply::$6 signed_multiply::$12 ] +reg byte a [ signed_multiply::$7 ] +reg byte a [ signed_multiply::$16 ] +reg byte a [ signed_multiply::$13 ] +reg byte a [ signed_multiply::$17 ] +reg byte x [ slow_multiply::b#0 ] +reg byte x [ multiply_error::a#0 ] reg byte a [ init_multiply::$2 ] reg byte a [ init_multiply::$5 ] reg byte a [ init_multiply::$6 ] @@ -6309,11 +10864,11 @@ FINAL ASSEMBLER .label char_cursor = 8 .label line_cursor = 4 //SEG2 @begin -//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] -//SEG4 @13 +//SEG3 [1] phi from @begin to @20 [phi:@begin->@20] +//SEG4 @20 //SEG5 [2] call main param-assignment [ ] ( ) jsr main -//SEG6 [3] phi from @13 to @end [phi:@13->@end] +//SEG6 [3] phi from @20 to @end [phi:@20->@end] //SEG7 @end //SEG8 main main: { @@ -6321,12 +10876,12 @@ main: { lda #5 sta BGCOL //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] ) - //SEG11 [146] phi from main to print_cls [phi:main->print_cls] + //SEG11 [261] phi from main to print_cls [phi:main->print_cls] jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] //SEG13 main::@1 //SEG14 [7] call init_multiply param-assignment [ ] ( main:2 [ ] ) - //SEG15 [117] phi from main::@1 to init_multiply [phi:main::@1->init_multiply] + //SEG15 [232] phi from main::@1 to init_multiply [phi:main::@1->init_multiply] jsr init_multiply //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] //SEG17 main::@2 @@ -6334,69 +10889,73 @@ main: { jsr init_multiply_asm //SEG19 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] //SEG20 main::@3 - //SEG21 [11] call multiply_tables_compare param-assignment [ line_cursor#17 char_cursor#20 ] ( main:2 [ line_cursor#17 char_cursor#20 ] ) - //SEG22 [90] phi from main::@3 to multiply_tables_compare [phi:main::@3->multiply_tables_compare] + //SEG21 [11] call multiply_tables_compare param-assignment [ line_cursor#27 char_cursor#27 ] ( main:2 [ line_cursor#27 char_cursor#27 ] ) + //SEG22 [205] phi from main::@3 to multiply_tables_compare [phi:main::@3->multiply_tables_compare] jsr multiply_tables_compare //SEG23 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] //SEG24 main::@4 - //SEG25 [13] call multiply_results_compare param-assignment [ ] ( main:2 [ ] ) - //SEG26 [15] phi from main::@4 to multiply_results_compare [phi:main::@4->multiply_results_compare] + //SEG25 [13] call multiply_results_compare param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + //SEG26 [150] phi from main::@4 to multiply_results_compare [phi:main::@4->multiply_results_compare] jsr multiply_results_compare - //SEG27 main::@return - //SEG28 [14] return [ ] ( main:2 [ ] ) + //SEG27 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG28 main::@5 + //SEG29 [15] call signed_multiply_results_compare param-assignment [ ] ( main:2 [ ] ) + //SEG30 [17] phi from main::@5 to signed_multiply_results_compare [phi:main::@5->signed_multiply_results_compare] + jsr signed_multiply_results_compare + //SEG31 main::@return + //SEG32 [16] return [ ] ( main:2 [ ] ) rts } -//SEG29 multiply_results_compare -multiply_results_compare: { - .label ms = $a - .label ma = $c +//SEG33 signed_multiply_results_compare +signed_multiply_results_compare: { + .label ms = 8 + .label ma = 6 .label b = 3 .label a = 2 - //SEG30 [16] phi from multiply_results_compare to multiply_results_compare::@1 [phi:multiply_results_compare->multiply_results_compare::@1] - //SEG31 [16] phi (byte) multiply_results_compare::a#5 = (byte/signed byte/word/signed word) 0 [phi:multiply_results_compare->multiply_results_compare::@1#0] -- vbuz1=vbuc1 - lda #0 + //SEG34 [18] phi from signed_multiply_results_compare to signed_multiply_results_compare::@1 [phi:signed_multiply_results_compare->signed_multiply_results_compare::@1] + //SEG35 [18] phi (signed byte) signed_multiply_results_compare::a#6 = -(byte/word/signed word) 128 [phi:signed_multiply_results_compare->signed_multiply_results_compare::@1#0] -- vbsz1=vbsc1 + lda #-$80 sta a - //SEG32 [16] phi from multiply_results_compare::@6 to multiply_results_compare::@1 [phi:multiply_results_compare::@6->multiply_results_compare::@1] - //SEG33 [16] phi (byte) multiply_results_compare::a#5 = (byte) multiply_results_compare::a#1 [phi:multiply_results_compare::@6->multiply_results_compare::@1#0] -- register_copy - //SEG34 multiply_results_compare::@1 + //SEG36 [18] phi from signed_multiply_results_compare::@6 to signed_multiply_results_compare::@1 [phi:signed_multiply_results_compare::@6->signed_multiply_results_compare::@1] + //SEG37 [18] phi (signed byte) signed_multiply_results_compare::a#6 = (signed byte) signed_multiply_results_compare::a#1 [phi:signed_multiply_results_compare::@6->signed_multiply_results_compare::@1#0] -- register_copy + //SEG38 signed_multiply_results_compare::@1 b1: - //SEG35 [17] phi from multiply_results_compare::@1 to multiply_results_compare::@2 [phi:multiply_results_compare::@1->multiply_results_compare::@2] - //SEG36 [17] phi (byte) multiply_results_compare::b#2 = (byte/signed byte/word/signed word) 0 [phi:multiply_results_compare::@1->multiply_results_compare::@2#0] -- vbuz1=vbuc1 - lda #0 + //SEG39 [19] phi from signed_multiply_results_compare::@1 to signed_multiply_results_compare::@2 [phi:signed_multiply_results_compare::@1->signed_multiply_results_compare::@2] + //SEG40 [19] phi (signed byte) signed_multiply_results_compare::b#2 = -(byte/word/signed word) 128 [phi:signed_multiply_results_compare::@1->signed_multiply_results_compare::@2#0] -- vbsz1=vbsc1 + lda #-$80 sta b - //SEG37 [17] phi from multiply_results_compare::@3 to multiply_results_compare::@2 [phi:multiply_results_compare::@3->multiply_results_compare::@2] - //SEG38 [17] phi (byte) multiply_results_compare::b#2 = (byte) multiply_results_compare::b#1 [phi:multiply_results_compare::@3->multiply_results_compare::@2#0] -- register_copy - //SEG39 multiply_results_compare::@2 + //SEG41 [19] phi from signed_multiply_results_compare::@3 to signed_multiply_results_compare::@2 [phi:signed_multiply_results_compare::@3->signed_multiply_results_compare::@2] + //SEG42 [19] phi (signed byte) signed_multiply_results_compare::b#2 = (signed byte) signed_multiply_results_compare::b#1 [phi:signed_multiply_results_compare::@3->signed_multiply_results_compare::@2#0] -- register_copy + //SEG43 signed_multiply_results_compare::@2 b2: - //SEG40 [18] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#5 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ) - // (byte) slow_multiply::a#0 = (byte) multiply_results_compare::a#5 // register copy zp ZP_BYTE:2 - //SEG41 [19] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ) -- vbuxx=vbuz1 - ldx b - //SEG42 [20] call slow_multiply param-assignment [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ) - jsr slow_multiply - //SEG43 [21] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ) - // (word) slow_multiply::return#2 = (word) slow_multiply::return#0 // register copy zp ZP_WORD:6 - //SEG44 multiply_results_compare::@8 - //SEG45 [22] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1=vwuz2 - lda slow_multiply.return - sta ms - lda slow_multiply.return+1 - sta ms+1 - //SEG46 [23] (byte) multiply::a#0 ← (byte) multiply_results_compare::a#5 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 line_cursor#17 char_cursor#20 ] ) -- vbuxx=vbuz1 - ldx a - //SEG47 [24] (byte) multiply::b#0 ← (byte) multiply_results_compare::b#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#0 multiply::b#0 line_cursor#17 char_cursor#20 ] ) -- vbuaa=vbuz1 + //SEG44 [20] (signed byte) slow_signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 line_cursor#1 ] ) + // (signed byte) slow_signed_multiply::a#0 = (signed byte) signed_multiply_results_compare::a#6 // register copy zp ZP_BYTE:2 + //SEG45 [21] (signed byte) slow_signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 slow_signed_multiply::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 slow_signed_multiply::b#0 line_cursor#1 ] ) -- vbsxx=vbsz1 lda b - //SEG48 [25] call multiply param-assignment [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 line_cursor#17 char_cursor#20 ] ) - jsr multiply - //SEG49 [26] (word) multiply::return#2 ← (word) multiply::return#0 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#2 line_cursor#17 char_cursor#20 ] ) - // (word) multiply::return#2 = (word) multiply::return#0 // register copy zp ZP_WORD:6 - //SEG50 multiply_results_compare::@9 - //SEG51 [27] (word) multiply_results_compare::ma#0 ← (word) multiply::return#2 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1=vwuz2 - lda multiply.return - sta ma - lda multiply.return+1 - sta ma+1 - //SEG52 [28] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1_eq_vwuz2_then_la1 + tax + //SEG46 [22] call slow_signed_multiply param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#0 line_cursor#1 ] ) + jsr slow_signed_multiply + //SEG47 [23] (signed word) slow_signed_multiply::return#2 ← (signed word) slow_signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ) + // (signed word) slow_signed_multiply::return#2 = (signed word) slow_signed_multiply::return#0 // register copy zp ZP_WORD:6 + //SEG48 signed_multiply_results_compare::@8 + //SEG49 [24] (signed word) signed_multiply_results_compare::ms#0 ← (signed word) slow_signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] ) -- vwsz1=vwsz2 + lda slow_signed_multiply.return + sta ms + lda slow_signed_multiply.return+1 + sta ms+1 + //SEG50 [25] (signed byte) signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 line_cursor#1 ] ) + // (signed byte) signed_multiply::a#0 = (signed byte) signed_multiply_results_compare::a#6 // register copy zp ZP_BYTE:2 + //SEG51 [26] (signed byte) signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 signed_multiply::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 signed_multiply::b#0 line_cursor#1 ] ) -- vbsyy=vbsz1 + lda b + tay + //SEG52 [27] call signed_multiply param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#0 line_cursor#1 ] ) + jsr signed_multiply + //SEG53 [28] (signed word) signed_multiply::return#2 ← (signed word) signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#2 line_cursor#1 ] ) + // (signed word) signed_multiply::return#2 = (signed word) signed_multiply::return#0 // register copy zp ZP_WORD:6 + //SEG54 signed_multiply_results_compare::@9 + //SEG55 [29] (signed word) signed_multiply_results_compare::ma#0 ← (signed word) signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) + // (signed word) signed_multiply_results_compare::ma#0 = (signed word) signed_multiply::return#2 // register copy zp ZP_WORD:6 + //SEG56 [30] if((signed word) signed_multiply_results_compare::ms#0==(signed word) signed_multiply_results_compare::ma#0) goto signed_multiply_results_compare::@3 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) -- vwsz1_eq_vwsz2_then_la1 lda ms cmp ma bne !+ @@ -6404,104 +10963,79 @@ multiply_results_compare: { cmp ma+1 beq b3 !: - //SEG53 multiply_results_compare::@4 - //SEG54 [29] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- _deref_pbuc1=vbuc2 + //SEG57 signed_multiply_results_compare::@4 + //SEG58 [31] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ) -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG55 [30] call print_str param-assignment [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) - //SEG56 [53] phi from multiply_results_compare::@4 to print_str [phi:multiply_results_compare::@4->print_str] - //SEG57 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#20 [phi:multiply_results_compare::@4->print_str#0] -- register_copy - //SEG58 [53] phi (byte*) print_str::str#9 = (const string) multiply_results_compare::str [phi:multiply_results_compare::@4->print_str#1] -- pbuz1=pbuc1 + //SEG59 [32] (signed byte) signed_multiply_error::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 line_cursor#1 ] ) -- vbsxx=vbsz1 + lda a + tax + //SEG60 [33] (signed byte) signed_multiply_error::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 line_cursor#1 ] ) -- vbsz1=vbsz2 + lda b + sta signed_multiply_error.b + //SEG61 [34] (signed word) signed_multiply_error::ms#0 ← (signed word) signed_multiply_results_compare::ms#0 [ signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::ma#0 signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 line_cursor#1 ] ) -- vwsz1=vwsz2 + lda ms + sta signed_multiply_error.ms + lda ms+1 + sta signed_multiply_error.ms+1 + //SEG62 [35] (signed word) signed_multiply_error::ma#0 ← (signed word) signed_multiply_results_compare::ma#0 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 ] ) -- vwsz1=vwsz2 + lda ma + sta signed_multiply_error.ma + lda ma+1 + sta signed_multiply_error.ma+1 + //SEG63 [36] call signed_multiply_error param-assignment [ ] ( main:2::signed_multiply_results_compare:15 [ ] ) + jsr signed_multiply_error + //SEG64 signed_multiply_results_compare::@return + breturn: + //SEG65 [37] return [ ] ( main:2::signed_multiply_results_compare:15 [ ] ) + rts + //SEG66 signed_multiply_results_compare::@3 + b3: + //SEG67 [38] (signed byte) signed_multiply_results_compare::b#1 ← ++ (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ) -- vbsz1=_inc_vbsz1 + inc b + //SEG68 [39] if((signed byte) signed_multiply_results_compare::b#1!=-(byte/word/signed word) 128) goto signed_multiply_results_compare::@2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#1 line_cursor#1 ] ) -- vbsz1_neq_vbsc1_then_la1 + lda b + cmp #-$80 + bne b2 + //SEG69 signed_multiply_results_compare::@6 + //SEG70 [40] (signed byte) signed_multiply_results_compare::a#1 ← ++ (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ) -- vbsz1=_inc_vbsz1 + inc a + //SEG71 [41] if((signed byte) signed_multiply_results_compare::a#1!=-(byte/word/signed word) 128) goto signed_multiply_results_compare::@1 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#1 line_cursor#1 ] ) -- vbsz1_neq_vbsc1_then_la1 + lda a + cmp #-$80 + bne b1 + //SEG72 signed_multiply_results_compare::@7 + //SEG73 [42] (byte*~) char_cursor#176 ← (byte*) line_cursor#1 [ char_cursor#176 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ char_cursor#176 line_cursor#1 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG74 [43] call print_str param-assignment [ line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15 [ line_cursor#1 char_cursor#117 ] ) + //SEG75 [51] phi from signed_multiply_results_compare::@7 to print_str [phi:signed_multiply_results_compare::@7->print_str] + //SEG76 [51] phi (byte*) char_cursor#135 = (byte*~) char_cursor#176 [phi:signed_multiply_results_compare::@7->print_str#0] -- register_copy + //SEG77 [51] phi (byte*) print_str::str#16 = (const string) signed_multiply_results_compare::str [phi:signed_multiply_results_compare::@7->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG59 multiply_results_compare::@10 - //SEG60 [31] (word) print_word::w#2 ← (word) multiply_results_compare::ms#0 [ multiply_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ) -- vwuz1=vwuz2 - lda ms - sta print_word.w - lda ms+1 - sta print_word.w+1 - //SEG61 [32] call print_word param-assignment [ multiply_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ) - //SEG62 [60] phi from multiply_results_compare::@10 to print_word [phi:multiply_results_compare::@10->print_word] - //SEG63 [60] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:multiply_results_compare::@10->print_word#0] -- register_copy - jsr print_word - //SEG64 [33] phi from multiply_results_compare::@10 to multiply_results_compare::@11 [phi:multiply_results_compare::@10->multiply_results_compare::@11] - //SEG65 multiply_results_compare::@11 - //SEG66 [34] call print_str param-assignment [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) - //SEG67 [53] phi from multiply_results_compare::@11 to print_str [phi:multiply_results_compare::@11->print_str] - //SEG68 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#11 [phi:multiply_results_compare::@11->print_str#0] -- register_copy - //SEG69 [53] phi (byte*) print_str::str#9 = (const string) multiply_results_compare::str1 [phi:multiply_results_compare::@11->print_str#1] -- pbuz1=pbuc1 - lda #str1 - sta print_str.str+1 - jsr print_str - //SEG70 multiply_results_compare::@12 - //SEG71 [35] (word) print_word::w#3 ← (word) multiply_results_compare::ma#0 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ) -- vwuz1=vwuz2 - lda ma - sta print_word.w - lda ma+1 - sta print_word.w+1 - //SEG72 [36] call print_word param-assignment [ char_cursor#11 line_cursor#17 ] ( main:2::multiply_results_compare:13 [ char_cursor#11 line_cursor#17 ] ) - //SEG73 [60] phi from multiply_results_compare::@12 to print_word [phi:multiply_results_compare::@12->print_word] - //SEG74 [60] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:multiply_results_compare::@12->print_word#0] -- register_copy - jsr print_word - //SEG75 [37] phi from multiply_results_compare::@12 multiply_results_compare::@14 to multiply_results_compare::@return [phi:multiply_results_compare::@12/multiply_results_compare::@14->multiply_results_compare::@return] - //SEG76 [37] phi (byte*) line_cursor#19 = (byte*) line_cursor#17 [phi:multiply_results_compare::@12/multiply_results_compare::@14->multiply_results_compare::@return#0] -- register_copy - //SEG77 [37] phi (byte*) char_cursor#27 = (byte*) char_cursor#11 [phi:multiply_results_compare::@12/multiply_results_compare::@14->multiply_results_compare::@return#1] -- register_copy - //SEG78 multiply_results_compare::@return - breturn: - //SEG79 [38] return [ ] ( main:2::multiply_results_compare:13 [ ] ) - rts - //SEG80 multiply_results_compare::@3 - b3: - //SEG81 [39] (byte) multiply_results_compare::b#1 ← ++ (byte) multiply_results_compare::b#2 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1=_inc_vbuz1 - inc b - //SEG82 [40] if((byte) multiply_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@2 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#5 multiply_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1_neq_0_then_la1 - lda b - bne b2 - //SEG83 multiply_results_compare::@6 - //SEG84 [41] (byte) multiply_results_compare::a#1 ← ++ (byte) multiply_results_compare::a#5 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1=_inc_vbuz1 - inc a - //SEG85 [42] if((byte) multiply_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@1 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::multiply_results_compare:13 [ multiply_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1_neq_0_then_la1 - lda a - bne b1 - //SEG86 [43] phi from multiply_results_compare::@6 to multiply_results_compare::@7 [phi:multiply_results_compare::@6->multiply_results_compare::@7] - //SEG87 multiply_results_compare::@7 - //SEG88 [44] call print_str param-assignment [ line_cursor#17 char_cursor#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#17 char_cursor#2 ] ) - //SEG89 [53] phi from multiply_results_compare::@7 to print_str [phi:multiply_results_compare::@7->print_str] - //SEG90 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#20 [phi:multiply_results_compare::@7->print_str#0] -- register_copy - //SEG91 [53] phi (byte*) print_str::str#9 = (const string) multiply_results_compare::str2 [phi:multiply_results_compare::@7->print_str#1] -- pbuz1=pbuc1 - lda #str2 - sta print_str.str+1 - jsr print_str - //SEG92 [45] phi from multiply_results_compare::@7 to multiply_results_compare::@14 [phi:multiply_results_compare::@7->multiply_results_compare::@14] - //SEG93 multiply_results_compare::@14 - //SEG94 [46] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) - //SEG95 [48] phi from multiply_results_compare::@14 to print_ln [phi:multiply_results_compare::@14->print_ln] - //SEG96 [48] phi (byte*) line_cursor#22 = (byte*) line_cursor#17 [phi:multiply_results_compare::@14->print_ln#0] -- register_copy + //SEG78 [44] phi from signed_multiply_results_compare::@7 to signed_multiply_results_compare::@11 [phi:signed_multiply_results_compare::@7->signed_multiply_results_compare::@11] + //SEG79 signed_multiply_results_compare::@11 + //SEG80 [45] call print_ln param-assignment [ ] ( main:2::signed_multiply_results_compare:15 [ ] ) + //SEG81 [46] phi from signed_multiply_results_compare::@11 to print_ln [phi:signed_multiply_results_compare::@11->print_ln] + //SEG82 [46] phi (byte*) char_cursor#118 = (byte*) char_cursor#117 [phi:signed_multiply_results_compare::@11->print_ln#0] -- register_copy + //SEG83 [46] phi (byte*) line_cursor#40 = (byte*) line_cursor#1 [phi:signed_multiply_results_compare::@11->print_ln#1] -- register_copy jsr print_ln - //SEG97 [47] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ char_cursor#89 line_cursor#1 ] ( main:2::multiply_results_compare:13 [ char_cursor#89 line_cursor#1 ] ) -- pbuz1=pbuz2 - lda line_cursor - sta char_cursor - lda line_cursor+1 - sta char_cursor+1 jmp breturn - str: .text "multiply mismatch slow:@" - str1: .text " / fast asm:" - str2: .text "multiply results match!@" + str: .text "signed multiply results match!@" } -//SEG98 print_ln +//SEG84 print_ln print_ln: { - //SEG99 [49] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG100 [49] phi (byte*) line_cursor#11 = (byte*) line_cursor#22 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG101 print_ln::@1 + //SEG85 [47] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG86 [47] phi (byte*) line_cursor#20 = (byte*) line_cursor#40 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG87 print_ln::@1 b1: - //SEG102 [50] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG88 [48] (byte*) line_cursor#1 ← (byte*) line_cursor#20 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 char_cursor#118 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda line_cursor clc adc #$28 @@ -6509,7 +11043,7 @@ print_ln: { bcc !+ inc line_cursor+1 !: - //SEG103 [51] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1_lt_pbuz2_then_la1 + //SEG89 [49] if((byte*) line_cursor#1<(byte*) char_cursor#118) goto print_ln::@1 [ line_cursor#1 char_cursor#118 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 char_cursor#118 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 char_cursor#118 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 char_cursor#118 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 char_cursor#118 ] ) -- pbuz1_lt_pbuz2_then_la1 lda line_cursor+1 cmp char_cursor+1 bcc b1 @@ -6518,125 +11052,368 @@ print_ln: { cmp char_cursor bcc b1 !: - //SEG104 print_ln::@return - //SEG105 [52] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13::print_ln:46 [ line_cursor#1 ] main:2::multiply_tables_compare:11::print_ln:109 [ line_cursor#1 ] ) + //SEG90 print_ln::@return + //SEG91 [50] return [ line_cursor#1 ] ( main:2::signed_multiply_results_compare:15::print_ln:45 [ line_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_ln:75 [ line_cursor#1 ] main:2::multiply_results_compare:13::print_ln:178 [ line_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_ln:196 [ line_cursor#1 ] main:2::multiply_tables_compare:11::print_ln:224 [ line_cursor#1 ] ) rts } -//SEG106 print_str +//SEG92 print_str print_str: { .label str = 6 - //SEG107 [54] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG108 [54] phi (byte*) char_cursor#2 = (byte*) char_cursor#71 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG109 [54] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG110 print_str::@1 + //SEG93 [52] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG94 [52] phi (byte*) char_cursor#117 = (byte*) char_cursor#135 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG95 [52] phi (byte*) print_str::str#14 = (byte*) print_str::str#16 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG96 print_str::@1 b1: - //SEG111 [55] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG97 [53] if(*((byte*) print_str::str#14)!=(byte) '@') goto print_str::@2 [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG112 print_str::@return - //SEG113 [56] return [ char_cursor#2 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 ] ) + //SEG98 print_str::@return + //SEG99 [54] return [ char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 ] ) rts - //SEG114 print_str::@2 + //SEG100 print_str::@2 b2: - //SEG115 [57] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::multiply_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1=_deref_pbuz2 + //SEG101 [55] *((byte*) char_cursor#117) ← *((byte*) print_str::str#14) [ char_cursor#117 print_str::str#14 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 char_cursor#117 print_str::str#14 ] main:2::multiply_tables_compare:11::print_str:222 [ char_cursor#117 print_str::str#14 ] ) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (char_cursor),y - //SEG116 [58] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#7 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 print_str::str#7 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:107 [ print_str::str#7 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG102 [56] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#117 [ print_str::str#14 char_cursor#1 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 print_str::str#14 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#14 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 print_str::str#14 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:222 [ print_str::str#14 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: - //SEG117 [59] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::multiply_results_compare:13::print_str:30 [ multiply_results_compare::ms#0 multiply_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:34 [ multiply_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:94 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:98 [ multiply_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:107 [ print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG103 [57] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#14 [ print_str::str#0 char_cursor#1 ] ( main:2::signed_multiply_results_compare:15::print_str:43 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:59 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:63 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:67 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_str:71 [ signed_multiply_error::ma#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::print_str:176 [ line_cursor#27 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:180 [ line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:184 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:188 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_str:192 [ line_cursor#27 multiply_error::ma#0 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:209 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:213 [ multiply_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] main:2::multiply_tables_compare:11::print_str:222 [ print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG118 print_word -print_word: { +//SEG104 signed_multiply_error +signed_multiply_error: { + .label b = 2 + .label ms = $a + .label ma = $c + //SEG105 [58] (byte*~) char_cursor#172 ← (byte*) line_cursor#1 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#172 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#172 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG106 [59] call print_str param-assignment [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::a#0 signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + //SEG107 [51] phi from signed_multiply_error to print_str [phi:signed_multiply_error->print_str] + //SEG108 [51] phi (byte*) char_cursor#135 = (byte*~) char_cursor#172 [phi:signed_multiply_error->print_str#0] -- register_copy + //SEG109 [51] phi (byte*) print_str::str#16 = (const string) signed_multiply_error::str [phi:signed_multiply_error->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + //SEG110 signed_multiply_error::@1 + //SEG111 [60] (signed byte) print_sbyte::b#1 ← (signed byte) signed_multiply_error::a#0 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#1 ] ) + // (signed byte) print_sbyte::b#1 = (signed byte) signed_multiply_error::a#0 // register copy reg byte x + //SEG112 [61] call print_sbyte param-assignment [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + //SEG113 [104] phi from signed_multiply_error::@1 to print_sbyte [phi:signed_multiply_error::@1->print_sbyte] + //SEG114 [104] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:signed_multiply_error::@1->print_sbyte#0] -- register_copy + jsr print_sbyte + //SEG115 [62] phi from signed_multiply_error::@1 to signed_multiply_error::@2 [phi:signed_multiply_error::@1->signed_multiply_error::@2] + //SEG116 signed_multiply_error::@2 + //SEG117 [63] call print_str param-assignment [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + //SEG118 [51] phi from signed_multiply_error::@2 to print_str [phi:signed_multiply_error::@2->print_str] + //SEG119 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:signed_multiply_error::@2->print_str#0] -- register_copy + //SEG120 [51] phi (byte*) print_str::str#16 = (const string) signed_multiply_error::str1 [phi:signed_multiply_error::@2->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + //SEG121 signed_multiply_error::@3 + //SEG122 [64] (signed byte) print_sbyte::b#2 ← (signed byte) signed_multiply_error::b#0 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#2 ] ) -- vbsxx=vbsz1 + lda b + tax + //SEG123 [65] call print_sbyte param-assignment [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + //SEG124 [104] phi from signed_multiply_error::@3 to print_sbyte [phi:signed_multiply_error::@3->print_sbyte] + //SEG125 [104] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:signed_multiply_error::@3->print_sbyte#0] -- register_copy + jsr print_sbyte + //SEG126 [66] phi from signed_multiply_error::@3 to signed_multiply_error::@4 [phi:signed_multiply_error::@3->signed_multiply_error::@4] + //SEG127 signed_multiply_error::@4 + //SEG128 [67] call print_str param-assignment [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + //SEG129 [51] phi from signed_multiply_error::@4 to print_str [phi:signed_multiply_error::@4->print_str] + //SEG130 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:signed_multiply_error::@4->print_str#0] -- register_copy + //SEG131 [51] phi (byte*) print_str::str#16 = (const string) signed_multiply_error::str2 [phi:signed_multiply_error::@4->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + //SEG132 signed_multiply_error::@5 + //SEG133 [68] (signed word) print_sword::w#1 ← (signed word) signed_multiply_error::ms#0 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#1 ] ) -- vwsz1=vwsz2 + lda ms + sta print_sword.w + lda ms+1 + sta print_sword.w+1 + //SEG134 [69] call print_sword param-assignment [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + //SEG135 [77] phi from signed_multiply_error::@5 to print_sword [phi:signed_multiply_error::@5->print_sword] + //SEG136 [77] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:signed_multiply_error::@5->print_sword#0] -- register_copy + jsr print_sword + //SEG137 [70] phi from signed_multiply_error::@5 to signed_multiply_error::@6 [phi:signed_multiply_error::@5->signed_multiply_error::@6] + //SEG138 signed_multiply_error::@6 + //SEG139 [71] call print_str param-assignment [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 ] ) + //SEG140 [51] phi from signed_multiply_error::@6 to print_str [phi:signed_multiply_error::@6->print_str] + //SEG141 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:signed_multiply_error::@6->print_str#0] -- register_copy + //SEG142 [51] phi (byte*) print_str::str#16 = (const string) signed_multiply_error::str3 [phi:signed_multiply_error::@6->print_str#1] -- pbuz1=pbuc1 + lda #str3 + sta print_str.str+1 + jsr print_str + //SEG143 signed_multiply_error::@7 + //SEG144 [72] (signed word) print_sword::w#2 ← (signed word) signed_multiply_error::ma#0 [ line_cursor#1 char_cursor#117 print_sword::w#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ line_cursor#1 char_cursor#117 print_sword::w#2 ] ) -- vwsz1=vwsz2 + lda ma + sta print_sword.w + lda ma+1 + sta print_sword.w+1 + //SEG145 [73] call print_sword param-assignment [ line_cursor#1 char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ line_cursor#1 char_cursor#17 ] ) + //SEG146 [77] phi from signed_multiply_error::@7 to print_sword [phi:signed_multiply_error::@7->print_sword] + //SEG147 [77] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:signed_multiply_error::@7->print_sword#0] -- register_copy + jsr print_sword + //SEG148 [74] phi from signed_multiply_error::@7 to signed_multiply_error::@8 [phi:signed_multiply_error::@7->signed_multiply_error::@8] + //SEG149 signed_multiply_error::@8 + //SEG150 [75] call print_ln param-assignment [ ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ ] ) + //SEG151 [46] phi from signed_multiply_error::@8 to print_ln [phi:signed_multiply_error::@8->print_ln] + //SEG152 [46] phi (byte*) char_cursor#118 = (byte*) char_cursor#17 [phi:signed_multiply_error::@8->print_ln#0] -- register_copy + //SEG153 [46] phi (byte*) line_cursor#40 = (byte*) line_cursor#1 [phi:signed_multiply_error::@8->print_ln#1] -- register_copy + jsr print_ln + //SEG154 signed_multiply_error::@return + //SEG155 [76] return [ ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36 [ ] ) + rts + str: .text "signed multiply mismatch @" + str1: .text "*@" + str2: .text " slow:@" + str3: .text " / fast asm:@" +} +//SEG156 print_sword +print_sword: { .label w = 6 - //SEG119 [61] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ) -- vbuxx=_hi_vwuz1 + //SEG157 [78] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word) 0) goto print_sword::@1 [ char_cursor#117 print_sword::w#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sword::w#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#117 print_sword::w#3 ] ) -- vwsz1_ge_0_then_la1 lda w+1 - tax - //SEG120 [62] call print_byte param-assignment [ char_cursor#11 print_word::w#4 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_word::w#4 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 print_word::w#4 ] ) - //SEG121 [66] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG122 [66] phi (byte*) char_cursor#64 = (byte*) char_cursor#2 [phi:print_word->print_byte#0] -- register_copy - //SEG123 [66] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy - jsr print_byte - //SEG124 print_word::@1 - //SEG125 [63] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 print_byte::b#1 ] ) -- vbuxx=_lo_vwuz1 + bpl b1 + //SEG158 [79] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG159 print_sword::@2 + //SEG160 [80] call print_char param-assignment [ char_cursor#17 print_sword::w#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sword::w#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 print_sword::w#3 ] ) + //SEG161 [100] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG162 [100] phi (byte*) char_cursor#75 = (byte*) char_cursor#117 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG163 [100] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + lda #'-' + jsr print_char + //SEG164 print_sword::@4 + //SEG165 [81] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ char_cursor#17 print_sword::w#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sword::w#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 print_sword::w#0 ] ) -- vwsz1=_neg_vwsz1 + sec lda w - tax - //SEG126 [64] call print_byte param-assignment [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 ] ) - //SEG127 [66] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG128 [66] phi (byte*) char_cursor#64 = (byte*) char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG129 [66] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy - jsr print_byte - //SEG130 print_word::@return - //SEG131 [65] return [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100 [ char_cursor#11 ] ) + eor #$ff + adc #0 + sta w + lda w+1 + eor #$ff + adc #0 + sta w+1 + //SEG166 [82] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1] + //SEG167 [82] phi (byte*) char_cursor#119 = (byte*) char_cursor#117 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy + //SEG168 [82] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy + //SEG169 print_sword::@1 + b1: + //SEG170 [83] (word) print_word::w#0 ← ((word)) (signed word) print_sword::w#4 [ char_cursor#119 print_word::w#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#119 print_word::w#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#119 print_word::w#0 ] ) -- vwuz1=_word_vwsz1 + //SEG171 [84] call print_word param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 ] ) + //SEG172 [86] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + //SEG173 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#119 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG174 [86] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy + jsr print_word + //SEG175 print_sword::@return + //SEG176 [85] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73 [ line_cursor#1 char_cursor#17 ] ) rts } -//SEG132 print_byte +//SEG177 print_word +print_word: { + .label w = 6 + //SEG178 [87] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:215 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] ) -- vbuxx=_hi_vwuz1 + lda w+1 + tax + //SEG179 [88] call print_byte param-assignment [ char_cursor#17 print_word::w#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_word::w#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 print_word::w#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_word::w#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 print_word::w#5 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_word::w#5 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 print_word::w#5 ] ) + //SEG180 [92] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG181 [92] phi (byte*) char_cursor#124 = (byte*) char_cursor#123 [phi:print_word->print_byte#0] -- register_copy + //SEG182 [92] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + jsr print_byte + //SEG183 print_word::@1 + //SEG184 [89] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ char_cursor#17 print_byte::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 print_byte::b#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::b#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 print_byte::b#2 ] ) -- vbuxx=_lo_vwuz1 + lda w + tax + //SEG185 [90] call print_byte param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 ] ) + //SEG186 [92] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG187 [92] phi (byte*) char_cursor#124 = (byte*) char_cursor#17 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG188 [92] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + jsr print_byte + //SEG189 print_word::@return + //SEG190 [91] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215 [ char_cursor#17 ] ) + rts +} +//SEG191 print_byte print_byte: { - //SEG133 [67] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ) -- vbuyy=vbuxx_ror_4 + //SEG192 [93] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_byte::$0 ] ) -- vbuyy=vbuxx_ror_4 txa lsr lsr lsr lsr tay - //SEG134 [68] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG193 [94] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#124 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda hextab,y - //SEG135 [69] call print_char param-assignment [ char_cursor#11 print_byte::b#2 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::b#2 ] ) - //SEG136 [74] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG137 [74] phi (byte*) char_cursor#41 = (byte*) char_cursor#64 [phi:print_byte->print_char#0] -- register_copy - //SEG138 [74] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG194 [95] call print_char param-assignment [ char_cursor#17 print_byte::b#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::b#5 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::b#5 ] ) + //SEG195 [100] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG196 [100] phi (byte*) char_cursor#75 = (byte*) char_cursor#124 [phi:print_byte->print_char#0] -- register_copy + //SEG197 [100] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG139 print_byte::@1 - //SEG140 [70] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG198 print_byte::@1 + //SEG199 [96] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word) 15 [ char_cursor#17 print_byte::$2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG141 [71] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 print_char::ch#1 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG200 [97] (byte) print_char::ch#3 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#17 print_char::ch#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_char::ch#3 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tax lda hextab,x - //SEG142 [72] call print_char param-assignment [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) - //SEG143 [74] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG144 [74] phi (byte*) char_cursor#41 = (byte*) char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG145 [74] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG201 [98] call print_char param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] ) + //SEG202 [100] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG203 [100] phi (byte*) char_cursor#75 = (byte*) char_cursor#17 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG204 [100] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG146 print_byte::@return - //SEG147 [73] return [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + //SEG205 print_byte::@return + //SEG206 [99] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] ) rts - hextab: .byte '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' + hextab: .text "0123456789abcdef" } -//SEG148 print_char +//SEG207 print_char print_char: { - //SEG149 [75] *((byte*) char_cursor#41) ← (byte) print_char::ch#2 [ char_cursor#41 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#41 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#41 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#41 ] ) -- _deref_pbuz1=vbuaa + //SEG208 [101] *((byte*) char_cursor#75) ← (byte) print_char::ch#4 [ char_cursor#75 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#75 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#75 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#75 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#75 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (char_cursor),y - //SEG150 [76] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#41 [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) -- pbuz1=_inc_pbuz1 + //SEG209 [102] (byte*) char_cursor#17 ← ++ (byte*) char_cursor#75 [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: - //SEG151 print_char::@return - //SEG152 [77] return [ char_cursor#11 ] ( main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:69 [ multiply_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ multiply_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:62::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ multiply_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:32::print_byte:64::print_char:72 [ multiply_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::multiply_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ multiply_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::multiply_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) + //SEG210 print_char::@return + //SEG211 [103] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_char:80 [ signed_multiply_error::ma#0 line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_char:80 [ line_cursor#1 print_sword::w#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:95 [ line_cursor#1 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:95 [ line_cursor#27 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:95 [ signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:95 [ line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:95 [ line_cursor#27 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:95 [ line_cursor#27 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:95 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:95 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:95 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:95 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:88::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:88::print_char:98 [ line_cursor#1 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:88::print_char:98 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:88::print_char:98 [ line_cursor#27 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84::print_byte:90::print_char:98 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84::print_byte:90::print_char:98 [ line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:190::print_byte:90::print_char:98 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_word:194::print_byte:90::print_char:98 [ line_cursor#27 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:211::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 ] main:2::multiply_tables_compare:11::print_word:215::print_byte:90::print_char:98 [ char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_byte:111::print_char:98 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_byte:111::print_char:98 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:182::print_char:98 [ line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::multiply_results_compare:13::multiply_error:169::print_byte:186::print_char:98 [ line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61::print_char:107 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65::print_char:107 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_sbyte::b#3 char_cursor#17 ] ) rts } -//SEG153 multiply +//SEG212 print_sbyte +print_sbyte: { + //SEG213 [105] if((signed byte) print_sbyte::b#3>=(byte/signed byte/word/signed word) 0) goto print_sbyte::@1 [ char_cursor#117 print_sbyte::b#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#117 print_sbyte::b#3 ] ) -- vbsxx_ge_0_then_la1 + cpx #0 + bpl b1 + //SEG214 [106] phi from print_sbyte to print_sbyte::@2 [phi:print_sbyte->print_sbyte::@2] + //SEG215 print_sbyte::@2 + //SEG216 [107] call print_char param-assignment [ char_cursor#17 print_sbyte::b#3 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#3 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#3 ] ) + //SEG217 [100] phi from print_sbyte::@2 to print_char [phi:print_sbyte::@2->print_char] + //SEG218 [100] phi (byte*) char_cursor#75 = (byte*) char_cursor#117 [phi:print_sbyte::@2->print_char#0] -- register_copy + //SEG219 [100] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sbyte::@2->print_char#1] -- vbuaa=vbuc1 + lda #'-' + jsr print_char + //SEG220 print_sbyte::@4 + //SEG221 [108] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ char_cursor#17 print_sbyte::b#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#0 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_sbyte::b#0 ] ) -- vbsxx=_neg_vbsxx + txa + eor #$ff + clc + adc #1 + tax + //SEG222 [109] phi from print_sbyte print_sbyte::@4 to print_sbyte::@1 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1] + //SEG223 [109] phi (byte*) char_cursor#121 = (byte*) char_cursor#117 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1#0] -- register_copy + //SEG224 [109] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#3 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1#1] -- register_copy + //SEG225 print_sbyte::@1 + b1: + //SEG226 [110] (byte) print_byte::b#0 ← ((byte)) (signed byte) print_sbyte::b#4 [ print_byte::b#0 char_cursor#121 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#0 char_cursor#121 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 print_byte::b#0 char_cursor#121 ] ) -- vbuxx=_byte_vbsxx + //SEG227 [111] call print_byte param-assignment [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + //SEG228 [92] phi from print_sbyte::@1 to print_byte [phi:print_sbyte::@1->print_byte] + //SEG229 [92] phi (byte*) char_cursor#124 = (byte*) char_cursor#121 [phi:print_sbyte::@1->print_byte#0] -- register_copy + //SEG230 [92] phi (byte) print_byte::b#5 = (byte) print_byte::b#0 [phi:print_sbyte::@1->print_byte#1] -- register_copy + jsr print_byte + //SEG231 print_sbyte::@return + //SEG232 [112] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] ) + rts +} +//SEG233 signed_multiply +signed_multiply: { + .label _6 = $e + .label _12 = $e + .label m = 6 + .label return = 6 + .label a = 2 + //SEG234 [113] (byte) multiply::a#0 ← ((byte)) (signed byte) signed_multiply::a#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 ] ) -- vbuxx=_byte_vbsz1 + lda a + tax + //SEG235 [114] (byte) multiply::b#0 ← ((byte)) (signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#0 multiply::b#0 ] ) -- vbuaa=_byte_vbsyy + tya + //SEG236 [115] call multiply param-assignment [ signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] ) + //SEG237 [132] phi from signed_multiply to multiply [phi:signed_multiply->multiply] + //SEG238 [132] phi (byte) multiply::b#2 = (byte) multiply::b#0 [phi:signed_multiply->multiply#0] -- register_copy + //SEG239 [132] phi (byte) multiply::a#2 = (byte) multiply::a#0 [phi:signed_multiply->multiply#1] -- register_copy + jsr multiply + //SEG240 [116] (word) multiply::return#2 ← (word) multiply::return#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::return#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#2 ] ) + // (word) multiply::return#2 = (word) multiply::return#0 // register copy zp ZP_WORD:6 + //SEG241 signed_multiply::@6 + //SEG242 [117] (word) signed_multiply::m#0 ← (word) multiply::return#2 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ) + // (word) signed_multiply::m#0 = (word) multiply::return#2 // register copy zp ZP_WORD:6 + //SEG243 [118] if((signed byte) signed_multiply::a#0>=(byte/signed byte/word/signed word) 0) goto signed_multiply::@1 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ) -- vbsz1_ge_0_then_la1 + lda a + cmp #0 + bpl b1 + //SEG244 signed_multiply::@3 + //SEG245 [119] (byte~) signed_multiply::$6 ← > (word) signed_multiply::m#0 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 ] ) -- vbuz1=_hi_vwuz2 + lda m+1 + sta _6 + //SEG246 [120] (byte~) signed_multiply::$7 ← ((byte)) (signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 signed_multiply::$7 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 signed_multiply::$7 ] ) -- vbuaa=_byte_vbsyy + tya + //SEG247 [121] (byte/signed byte/word/signed word~) signed_multiply::$16 ← (byte~) signed_multiply::$6 - (byte~) signed_multiply::$7 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$16 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$16 ] ) -- vbuaa=vbuz1_minus_vbuaa + eor #$ff + sec + adc _6 + //SEG248 [122] (word) signed_multiply::m#1 ← (word) signed_multiply::m#0 hi= (byte/signed byte/word/signed word~) signed_multiply::$16 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#1 ] ) -- vwuz1=vwuz1_sethi_vbuaa + sta m+1 + //SEG249 [123] phi from signed_multiply::@3 signed_multiply::@6 to signed_multiply::@1 [phi:signed_multiply::@3/signed_multiply::@6->signed_multiply::@1] + //SEG250 [123] phi (word) signed_multiply::m#5 = (word) signed_multiply::m#1 [phi:signed_multiply::@3/signed_multiply::@6->signed_multiply::@1#0] -- register_copy + //SEG251 signed_multiply::@1 + b1: + //SEG252 [124] if((signed byte) signed_multiply::b#0>=(byte/signed byte/word/signed word) 0) goto signed_multiply::@2 [ signed_multiply::a#0 signed_multiply::m#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::m#5 ] ) -- vbsyy_ge_0_then_la1 + cpy #0 + bpl b2 + //SEG253 signed_multiply::@4 + //SEG254 [125] (byte~) signed_multiply::$12 ← > (word) signed_multiply::m#5 [ signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ) -- vbuz1=_hi_vwuz2 + lda m+1 + sta _12 + //SEG255 [126] (byte~) signed_multiply::$13 ← ((byte)) (signed byte) signed_multiply::a#0 [ signed_multiply::m#5 signed_multiply::$12 signed_multiply::$13 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#5 signed_multiply::$12 signed_multiply::$13 ] ) -- vbuaa=_byte_vbsz1 + lda a + //SEG256 [127] (byte/signed byte/word/signed word~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte~) signed_multiply::$13 [ signed_multiply::m#5 signed_multiply::$17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#5 signed_multiply::$17 ] ) -- vbuaa=vbuz1_minus_vbuaa + eor #$ff + sec + adc _12 + //SEG257 [128] (word) signed_multiply::m#2 ← (word) signed_multiply::m#5 hi= (byte/signed byte/word/signed word~) signed_multiply::$17 [ signed_multiply::m#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#2 ] ) -- vwuz1=vwuz1_sethi_vbuaa + sta m+1 + //SEG258 [129] phi from signed_multiply::@1 signed_multiply::@4 to signed_multiply::@2 [phi:signed_multiply::@1/signed_multiply::@4->signed_multiply::@2] + //SEG259 [129] phi (word) signed_multiply::m#4 = (word) signed_multiply::m#5 [phi:signed_multiply::@1/signed_multiply::@4->signed_multiply::@2#0] -- register_copy + //SEG260 signed_multiply::@2 + b2: + //SEG261 [130] (signed word) signed_multiply::return#0 ← ((signed word)) (word) signed_multiply::m#4 [ signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::return#0 ] ) -- vwsz1=_sword_vwuz1 + //SEG262 signed_multiply::@return + //SEG263 [131] return [ signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::return#0 ] ) + rts +} +//SEG264 multiply multiply: { .const memA = $fe .const memB = $ff .label return = 6 - //SEG154 [78] *((const byte*) multiply::memA#0) ← (byte) multiply::a#0 [ multiply::b#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::b#0 ] ) -- _deref_pbuc1=vbuxx + //SEG265 [133] *((const byte*) multiply::memA#0) ← (byte) multiply::a#2 [ multiply::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::b#2 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::b#2 ] ) -- _deref_pbuc1=vbuxx stx memA - //SEG155 [79] *((const byte*) multiply::memB#0) ← (byte) multiply::b#0 [ ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) -- _deref_pbuc1=vbuaa + //SEG266 [134] *((const byte*) multiply::memB#0) ← (byte) multiply::b#2 [ ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- _deref_pbuc1=vbuaa sta memB - //SEG156 asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB } + //SEG267 asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldamul_sqr1_lo,xsm2:sbcmul_sqr2_lo,xstamemAsm3:ldamul_sqr1_hi,xsm4:sbcmul_sqr2_hi,xstamemB } txa sta sm1+1 sta sm3+1 @@ -6655,161 +11432,472 @@ multiply: { sm4: sbc mul_sqr2_hi,x sta memB - //SEG157 [81] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG268 [136] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda memA sta return lda memB sta return+1 - //SEG158 multiply::@return - //SEG159 [82] return [ multiply::return#0 ] ( main:2::multiply_results_compare:13::multiply:25 [ multiply_results_compare::a#5 multiply_results_compare::b#2 multiply_results_compare::ms#0 line_cursor#17 char_cursor#20 multiply::return#0 ] ) + //SEG269 multiply::@return + //SEG270 [137] return [ multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] main:2::multiply_results_compare:13::multiply:160 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) rts } -//SEG160 slow_multiply -slow_multiply: { - .label return = 6 +//SEG271 slow_signed_multiply +slow_signed_multiply: { .label m = 6 + .label return = 6 .label a = 2 - //SEG161 [83] if((byte) slow_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuz1_le_0_then_la1 + //SEG272 [138] if((signed byte) slow_signed_multiply::a#0>=(byte/signed byte/word/signed word) 0) goto slow_signed_multiply::@1 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ) -- vbsz1_ge_0_then_la1 lda a cmp #0 - beq b3 - //SEG162 [84] phi from slow_multiply to slow_multiply::@2 [phi:slow_multiply->slow_multiply::@2] - //SEG163 [84] phi (byte) slow_multiply::i#2 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#0] -- vbuyy=vbuc1 - ldy #0 - //SEG164 [84] phi (word) slow_multiply::m#3 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#1] -- vwuz1=vbuc1 - tya + bpl b1 + //SEG273 [139] phi from slow_signed_multiply to slow_signed_multiply::@2 [phi:slow_signed_multiply->slow_signed_multiply::@2] + //SEG274 [139] phi (signed byte) slow_signed_multiply::i#2 = (byte/signed byte/word/signed word) 0 [phi:slow_signed_multiply->slow_signed_multiply::@2#0] -- vbsyy=vbuc1 + lda #0 + tay + //SEG275 [139] phi (signed word) slow_signed_multiply::m#3 = (byte/signed byte/word/signed word) 0 [phi:slow_signed_multiply->slow_signed_multiply::@2#1] -- vwsz1=vbuc1 sta m sta m+1 - //SEG165 [84] phi from slow_multiply::@2 to slow_multiply::@2 [phi:slow_multiply::@2->slow_multiply::@2] - //SEG166 [84] phi (byte) slow_multiply::i#2 = (byte) slow_multiply::i#1 [phi:slow_multiply::@2->slow_multiply::@2#0] -- register_copy - //SEG167 [84] phi (word) slow_multiply::m#3 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@2#1] -- register_copy - //SEG168 slow_multiply::@2 + //SEG276 [139] phi from slow_signed_multiply::@2 to slow_signed_multiply::@2 [phi:slow_signed_multiply::@2->slow_signed_multiply::@2] + //SEG277 [139] phi (signed byte) slow_signed_multiply::i#2 = (signed byte) slow_signed_multiply::i#1 [phi:slow_signed_multiply::@2->slow_signed_multiply::@2#0] -- register_copy + //SEG278 [139] phi (signed word) slow_signed_multiply::m#3 = (signed word) slow_signed_multiply::m#1 [phi:slow_signed_multiply::@2->slow_signed_multiply::@2#1] -- register_copy + //SEG279 slow_signed_multiply::@2 b2: - //SEG169 [85] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) -- vwuz1=vwuz1_plus_vbuxx + //SEG280 [140] (signed word) slow_signed_multiply::m#1 ← (signed word) slow_signed_multiply::m#3 - (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ) -- vwsz1=vwsz1_minus_vbsxx txa - clc - adc m - sta m - bcc !+ - inc m+1 + sta $fe + ora #$7f + bmi !+ + lda #0 !: - //SEG170 [86] (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuyy=_inc_vbuyy - iny - //SEG171 [87] if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuyy_neq_vbuz1_then_la1 + sta $ff + sec + lda m + sbc $fe + sta m + lda m+1 + sbc $ff + sta m+1 + //SEG281 [141] (signed byte) slow_signed_multiply::i#1 ← -- (signed byte) slow_signed_multiply::i#2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ) -- vbsyy=_dec_vbsyy + dey + //SEG282 [142] if((signed byte) slow_signed_multiply::i#1!=(signed byte) slow_signed_multiply::a#0) goto slow_signed_multiply::@2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ) -- vbsyy_neq_vbsz1_then_la1 cpy a bne b2 - //SEG172 [88] phi from slow_multiply::@2 to slow_multiply::@1 [phi:slow_multiply::@2->slow_multiply::@1] - //SEG173 [88] phi (word) slow_multiply::return#0 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@1#0] -- register_copy - jmp b1 - //SEG174 [88] phi from slow_multiply to slow_multiply::@1 [phi:slow_multiply->slow_multiply::@1] - b3: - //SEG175 [88] phi (word) slow_multiply::return#0 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@1#0] -- vwuz1=vbuc1 + //SEG283 [143] phi from slow_signed_multiply::@2 slow_signed_multiply::@5 to slow_signed_multiply::@3 [phi:slow_signed_multiply::@2/slow_signed_multiply::@5->slow_signed_multiply::@3] + //SEG284 [143] phi (signed word) slow_signed_multiply::return#0 = (signed word) slow_signed_multiply::m#1 [phi:slow_signed_multiply::@2/slow_signed_multiply::@5->slow_signed_multiply::@3#0] -- register_copy + jmp b3 + //SEG285 [143] phi from slow_signed_multiply::@1 to slow_signed_multiply::@3 [phi:slow_signed_multiply::@1->slow_signed_multiply::@3] + b6: + //SEG286 [143] phi (signed word) slow_signed_multiply::return#0 = (byte/signed byte/word/signed word) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@3#0] -- vwsz1=vbuc1 lda #0 sta return sta return+1 - //SEG176 slow_multiply::@1 - b1: - //SEG177 slow_multiply::@return - //SEG178 [89] return [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:20 [ multiply_results_compare::a#5 multiply_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::return#0 ] ) + //SEG287 slow_signed_multiply::@3 + b3: + //SEG288 slow_signed_multiply::@return + //SEG289 [144] return [ slow_signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::return#0 ] ) rts -} -//SEG179 multiply_tables_compare -multiply_tables_compare: { - .label asm_sqr = $a - .label kc_sqr = 4 - //SEG180 [91] phi from multiply_tables_compare to multiply_tables_compare::@1 [phi:multiply_tables_compare->multiply_tables_compare::@1] - //SEG181 [91] phi (byte*) multiply_tables_compare::asm_sqr#2 = (const byte[512]) asm_mul_sqr1_lo#0 [phi:multiply_tables_compare->multiply_tables_compare::@1#0] -- pbuz1=pbuc1 - lda #asm_mul_sqr1_lo - sta asm_sqr+1 - //SEG182 [91] phi (byte*) multiply_tables_compare::kc_sqr#2 = (const byte[512]) mul_sqr1_lo#0 [phi:multiply_tables_compare->multiply_tables_compare::@1#1] -- pbuz1=pbuc1 - lda #mul_sqr1_lo - sta kc_sqr+1 - //SEG183 [91] phi from multiply_tables_compare::@2 to multiply_tables_compare::@1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1] - //SEG184 [91] phi (byte*) multiply_tables_compare::asm_sqr#2 = (byte*) multiply_tables_compare::asm_sqr#1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1#0] -- register_copy - //SEG185 [91] phi (byte*) multiply_tables_compare::kc_sqr#2 = (byte*) multiply_tables_compare::kc_sqr#1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1#1] -- register_copy - //SEG186 multiply_tables_compare::@1 + //SEG290 slow_signed_multiply::@1 b1: - //SEG187 [92] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) -- _deref_pbuz1_eq__deref_pbuz2_then_la1 - ldy #0 - lda (kc_sqr),y - cmp (asm_sqr),y - beq b2 - //SEG188 multiply_tables_compare::@3 - //SEG189 [93] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) -- _deref_pbuc1=vbuc2 + //SEG291 [145] if((signed byte) slow_signed_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_signed_multiply::@3 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ) -- vbsz1_le_0_then_la1 + lda a + cmp #1 + bmi b6 + //SEG292 [146] phi from slow_signed_multiply::@1 to slow_signed_multiply::@5 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5] + //SEG293 [146] phi (signed byte) slow_signed_multiply::j#2 = (byte/signed byte/word/signed word) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5#0] -- vbsyy=vbuc1 + lda #0 + tay + //SEG294 [146] phi (signed word) slow_signed_multiply::m#5 = (byte/signed byte/word/signed word) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5#1] -- vwsz1=vbuc1 + sta m + sta m+1 + //SEG295 [146] phi from slow_signed_multiply::@5 to slow_signed_multiply::@5 [phi:slow_signed_multiply::@5->slow_signed_multiply::@5] + //SEG296 [146] phi (signed byte) slow_signed_multiply::j#2 = (signed byte) slow_signed_multiply::j#1 [phi:slow_signed_multiply::@5->slow_signed_multiply::@5#0] -- register_copy + //SEG297 [146] phi (signed word) slow_signed_multiply::m#5 = (signed word) slow_signed_multiply::m#2 [phi:slow_signed_multiply::@5->slow_signed_multiply::@5#1] -- register_copy + //SEG298 slow_signed_multiply::@5 + b5: + //SEG299 [147] (signed word) slow_signed_multiply::m#2 ← (signed word) slow_signed_multiply::m#5 + (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ) -- vwsz1=vwsz1_plus_vbsxx + txa + sta $fe + ora #$7f + bmi !+ + lda #0 + !: + sta $ff + clc + lda m + adc $fe + sta m + lda m+1 + adc $ff + sta m+1 + //SEG300 [148] (signed byte) slow_signed_multiply::j#1 ← ++ (signed byte) slow_signed_multiply::j#2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ) -- vbsyy=_inc_vbsyy + iny + //SEG301 [149] if((signed byte) slow_signed_multiply::j#1!=(signed byte) slow_signed_multiply::a#0) goto slow_signed_multiply::@5 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ) -- vbsyy_neq_vbsz1_then_la1 + cpy a + bne b5 + jmp b3 +} +//SEG302 multiply_results_compare +multiply_results_compare: { + .label ms = $a + .label ma = 6 + .label b = 3 + .label a = 2 + //SEG303 [151] phi from multiply_results_compare to multiply_results_compare::@1 [phi:multiply_results_compare->multiply_results_compare::@1] + //SEG304 [151] phi (byte) multiply_results_compare::a#6 = (byte/signed byte/word/signed word) 0 [phi:multiply_results_compare->multiply_results_compare::@1#0] -- vbuz1=vbuc1 + lda #0 + sta a + //SEG305 [151] phi from multiply_results_compare::@6 to multiply_results_compare::@1 [phi:multiply_results_compare::@6->multiply_results_compare::@1] + //SEG306 [151] phi (byte) multiply_results_compare::a#6 = (byte) multiply_results_compare::a#1 [phi:multiply_results_compare::@6->multiply_results_compare::@1#0] -- register_copy + //SEG307 multiply_results_compare::@1 + b1: + //SEG308 [152] phi from multiply_results_compare::@1 to multiply_results_compare::@2 [phi:multiply_results_compare::@1->multiply_results_compare::@2] + //SEG309 [152] phi (byte) multiply_results_compare::b#2 = (byte/signed byte/word/signed word) 0 [phi:multiply_results_compare::@1->multiply_results_compare::@2#0] -- vbuz1=vbuc1 + lda #0 + sta b + //SEG310 [152] phi from multiply_results_compare::@3 to multiply_results_compare::@2 [phi:multiply_results_compare::@3->multiply_results_compare::@2] + //SEG311 [152] phi (byte) multiply_results_compare::b#2 = (byte) multiply_results_compare::b#1 [phi:multiply_results_compare::@3->multiply_results_compare::@2#0] -- register_copy + //SEG312 multiply_results_compare::@2 + b2: + //SEG313 [153] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ) + // (byte) slow_multiply::a#0 = (byte) multiply_results_compare::a#6 // register copy zp ZP_BYTE:2 + //SEG314 [154] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuxx=vbuz1 + ldx b + //SEG315 [155] call slow_multiply param-assignment [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) + jsr slow_multiply + //SEG316 [156] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ) + // (word) slow_multiply::return#2 = (word) slow_multiply::return#0 // register copy zp ZP_WORD:6 + //SEG317 multiply_results_compare::@8 + //SEG318 [157] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vwuz1=vwuz2 + lda slow_multiply.return + sta ms + lda slow_multiply.return+1 + sta ms+1 + //SEG319 [158] (byte) multiply::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuxx=vbuz1 + ldx a + //SEG320 [159] (byte) multiply::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuaa=vbuz1 + lda b + //SEG321 [160] call multiply param-assignment [ line_cursor#27 char_cursor#27 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + //SEG322 [132] phi from multiply_results_compare::@8 to multiply [phi:multiply_results_compare::@8->multiply] + //SEG323 [132] phi (byte) multiply::b#2 = (byte) multiply::b#1 [phi:multiply_results_compare::@8->multiply#0] -- register_copy + //SEG324 [132] phi (byte) multiply::a#2 = (byte) multiply::a#1 [phi:multiply_results_compare::@8->multiply#1] -- register_copy + jsr multiply + //SEG325 [161] (word) multiply::return#3 ← (word) multiply::return#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ) + // (word) multiply::return#3 = (word) multiply::return#0 // register copy zp ZP_WORD:6 + //SEG326 multiply_results_compare::@9 + //SEG327 [162] (word) multiply_results_compare::ma#0 ← (word) multiply::return#3 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) + // (word) multiply_results_compare::ma#0 = (word) multiply::return#3 // register copy zp ZP_WORD:6 + //SEG328 [163] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) -- vwuz1_eq_vwuz2_then_la1 + lda ms + cmp ma + bne !+ + lda ms+1 + cmp ma+1 + beq b3 + !: + //SEG329 multiply_results_compare::@4 + //SEG330 [164] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG190 [94] call print_str param-assignment [ char_cursor#2 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) - //SEG191 [53] phi from multiply_tables_compare::@3 to print_str [phi:multiply_tables_compare::@3->print_str] - //SEG192 [53] phi (byte*) char_cursor#71 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@3->print_str#0] -- pbuz1=pbuc1 - lda #<$400 - sta char_cursor - lda #>$400 - sta char_cursor+1 - //SEG193 [53] phi (byte*) print_str::str#9 = (const string) multiply_tables_compare::str [phi:multiply_tables_compare::@3->print_str#1] -- pbuz1=pbuc1 + //SEG331 [165] (byte) multiply_error::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 ] ) -- vbuxx=vbuz1 + ldx a + //SEG332 [166] (byte) multiply_error::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 ] ) -- vbuz1=vbuz2 + lda b + sta multiply_error.b + //SEG333 [167] (word) multiply_error::ms#0 ← (word) multiply_results_compare::ms#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ) + // (word) multiply_error::ms#0 = (word) multiply_results_compare::ms#0 // register copy zp ZP_WORD:10 + //SEG334 [168] (word) multiply_error::ma#0 ← (word) multiply_results_compare::ma#0 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) -- vwuz1=vwuz2 + lda ma + sta multiply_error.ma + lda ma+1 + sta multiply_error.ma+1 + //SEG335 [169] call multiply_error param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) + //SEG336 [179] phi from multiply_results_compare::@4 to multiply_error [phi:multiply_results_compare::@4->multiply_error] + jsr multiply_error + //SEG337 multiply_results_compare::@return + breturn: + //SEG338 [170] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) + rts + //SEG339 multiply_results_compare::@3 + b3: + //SEG340 [171] (byte) multiply_results_compare::b#1 ← ++ (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ) -- vbuz1=_inc_vbuz1 + inc b + //SEG341 [172] if((byte) multiply_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#1 ] ) -- vbuz1_neq_0_then_la1 + lda b + bne b2 + //SEG342 multiply_results_compare::@6 + //SEG343 [173] (byte) multiply_results_compare::a#1 ← ++ (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ) -- vbuz1=_inc_vbuz1 + inc a + //SEG344 [174] if((byte) multiply_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto multiply_results_compare::@1 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#1 ] ) -- vbuz1_neq_0_then_la1 + lda a + bne b1 + //SEG345 [175] phi from multiply_results_compare::@6 to multiply_results_compare::@7 [phi:multiply_results_compare::@6->multiply_results_compare::@7] + //SEG346 multiply_results_compare::@7 + //SEG347 [176] call print_str param-assignment [ char_cursor#117 line_cursor#27 ] ( main:2::multiply_results_compare:13 [ char_cursor#117 line_cursor#27 ] ) + //SEG348 [51] phi from multiply_results_compare::@7 to print_str [phi:multiply_results_compare::@7->print_str] + //SEG349 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#27 [phi:multiply_results_compare::@7->print_str#0] -- register_copy + //SEG350 [51] phi (byte*) print_str::str#16 = (const string) multiply_results_compare::str [phi:multiply_results_compare::@7->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG194 multiply_tables_compare::@6 - //SEG195 [95] (word) print_word::w#0 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#2 print_word::w#0 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 print_word::w#0 multiply_tables_compare::kc_sqr#2 ] ) -- vwuz1=_word_pbuz2 - lda asm_sqr - sta print_word.w - lda asm_sqr+1 - sta print_word.w+1 - //SEG196 [96] call print_word param-assignment [ char_cursor#11 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#11 multiply_tables_compare::kc_sqr#2 ] ) - //SEG197 [60] phi from multiply_tables_compare::@6 to print_word [phi:multiply_tables_compare::@6->print_word] - //SEG198 [60] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:multiply_tables_compare::@6->print_word#0] -- register_copy - jsr print_word - //SEG199 [97] phi from multiply_tables_compare::@6 to multiply_tables_compare::@7 [phi:multiply_tables_compare::@6->multiply_tables_compare::@7] - //SEG200 multiply_tables_compare::@7 - //SEG201 [98] call print_str param-assignment [ char_cursor#2 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 multiply_tables_compare::kc_sqr#2 ] ) - //SEG202 [53] phi from multiply_tables_compare::@7 to print_str [phi:multiply_tables_compare::@7->print_str] - //SEG203 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#11 [phi:multiply_tables_compare::@7->print_str#0] -- register_copy - //SEG204 [53] phi (byte*) print_str::str#9 = (const string) multiply_tables_compare::str1 [phi:multiply_tables_compare::@7->print_str#1] -- pbuz1=pbuc1 + //SEG351 [177] phi from multiply_results_compare::@7 to multiply_results_compare::@11 [phi:multiply_results_compare::@7->multiply_results_compare::@11] + //SEG352 multiply_results_compare::@11 + //SEG353 [178] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13 [ line_cursor#1 ] ) + //SEG354 [46] phi from multiply_results_compare::@11 to print_ln [phi:multiply_results_compare::@11->print_ln] + //SEG355 [46] phi (byte*) char_cursor#118 = (byte*) char_cursor#117 [phi:multiply_results_compare::@11->print_ln#0] -- register_copy + //SEG356 [46] phi (byte*) line_cursor#40 = (byte*) line_cursor#27 [phi:multiply_results_compare::@11->print_ln#1] -- register_copy + jsr print_ln + jmp breturn + str: .text "multiply results match!@" +} +//SEG357 multiply_error +multiply_error: { + .label b = 2 + .label ms = $a + .label ma = $c + //SEG358 [180] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + //SEG359 [51] phi from multiply_error to print_str [phi:multiply_error->print_str] + //SEG360 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#27 [phi:multiply_error->print_str#0] -- register_copy + //SEG361 [51] phi (byte*) print_str::str#16 = (const string) multiply_error::str [phi:multiply_error->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + //SEG362 multiply_error::@1 + //SEG363 [181] (byte) print_byte::b#3 ← (byte) multiply_error::a#0 [ char_cursor#117 line_cursor#27 print_byte::b#3 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_byte::b#3 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + // (byte) print_byte::b#3 = (byte) multiply_error::a#0 // register copy reg byte x + //SEG364 [182] call print_byte param-assignment [ char_cursor#17 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + //SEG365 [92] phi from multiply_error::@1 to print_byte [phi:multiply_error::@1->print_byte] + //SEG366 [92] phi (byte*) char_cursor#124 = (byte*) char_cursor#117 [phi:multiply_error::@1->print_byte#0] -- register_copy + //SEG367 [92] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:multiply_error::@1->print_byte#1] -- register_copy + jsr print_byte + //SEG368 [183] phi from multiply_error::@1 to multiply_error::@2 [phi:multiply_error::@1->multiply_error::@2] + //SEG369 multiply_error::@2 + //SEG370 [184] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) + //SEG371 [51] phi from multiply_error::@2 to print_str [phi:multiply_error::@2->print_str] + //SEG372 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:multiply_error::@2->print_str#0] -- register_copy + //SEG373 [51] phi (byte*) print_str::str#16 = (const string) multiply_error::str1 [phi:multiply_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG205 multiply_tables_compare::@8 - //SEG206 [99] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#2 print_word::w#1 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 print_word::w#1 ] ) -- vwuz1=_word_pbuz2 + //SEG374 multiply_error::@3 + //SEG375 [185] (byte) print_byte::b#4 ← (byte) multiply_error::b#0 [ char_cursor#117 line_cursor#27 print_byte::b#4 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_byte::b#4 multiply_error::ms#0 multiply_error::ma#0 ] ) -- vbuxx=vbuz1 + ldx b + //SEG376 [186] call print_byte param-assignment [ char_cursor#17 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ) + //SEG377 [92] phi from multiply_error::@3 to print_byte [phi:multiply_error::@3->print_byte] + //SEG378 [92] phi (byte*) char_cursor#124 = (byte*) char_cursor#117 [phi:multiply_error::@3->print_byte#0] -- register_copy + //SEG379 [92] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:multiply_error::@3->print_byte#1] -- register_copy + jsr print_byte + //SEG380 [187] phi from multiply_error::@3 to multiply_error::@4 [phi:multiply_error::@3->multiply_error::@4] + //SEG381 multiply_error::@4 + //SEG382 [188] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::ms#0 multiply_error::ma#0 ] ) + //SEG383 [51] phi from multiply_error::@4 to print_str [phi:multiply_error::@4->print_str] + //SEG384 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:multiply_error::@4->print_str#0] -- register_copy + //SEG385 [51] phi (byte*) print_str::str#16 = (const string) multiply_error::str2 [phi:multiply_error::@4->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + //SEG386 multiply_error::@5 + //SEG387 [189] (word) print_word::w#3 ← (word) multiply_error::ms#0 [ char_cursor#117 line_cursor#27 print_word::w#3 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_word::w#3 multiply_error::ma#0 ] ) -- vwuz1=vwuz2 + lda ms + sta print_word.w + lda ms+1 + sta print_word.w+1 + //SEG388 [190] call print_word param-assignment [ char_cursor#17 line_cursor#27 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 multiply_error::ma#0 ] ) + //SEG389 [86] phi from multiply_error::@5 to print_word [phi:multiply_error::@5->print_word] + //SEG390 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_error::@5->print_word#0] -- register_copy + //SEG391 [86] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:multiply_error::@5->print_word#1] -- register_copy + jsr print_word + //SEG392 [191] phi from multiply_error::@5 to multiply_error::@6 [phi:multiply_error::@5->multiply_error::@6] + //SEG393 multiply_error::@6 + //SEG394 [192] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 multiply_error::ma#0 ] ) + //SEG395 [51] phi from multiply_error::@6 to print_str [phi:multiply_error::@6->print_str] + //SEG396 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:multiply_error::@6->print_str#0] -- register_copy + //SEG397 [51] phi (byte*) print_str::str#16 = (const string) multiply_error::str3 [phi:multiply_error::@6->print_str#1] -- pbuz1=pbuc1 + lda #str3 + sta print_str.str+1 + jsr print_str + //SEG398 multiply_error::@7 + //SEG399 [193] (word) print_word::w#4 ← (word) multiply_error::ma#0 [ char_cursor#117 line_cursor#27 print_word::w#4 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#117 line_cursor#27 print_word::w#4 ] ) -- vwuz1=vwuz2 + lda ma + sta print_word.w + lda ma+1 + sta print_word.w+1 + //SEG400 [194] call print_word param-assignment [ char_cursor#17 line_cursor#27 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ char_cursor#17 line_cursor#27 ] ) + //SEG401 [86] phi from multiply_error::@7 to print_word [phi:multiply_error::@7->print_word] + //SEG402 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_error::@7->print_word#0] -- register_copy + //SEG403 [86] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:multiply_error::@7->print_word#1] -- register_copy + jsr print_word + //SEG404 [195] phi from multiply_error::@7 to multiply_error::@8 [phi:multiply_error::@7->multiply_error::@8] + //SEG405 multiply_error::@8 + //SEG406 [196] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ line_cursor#1 ] ) + //SEG407 [46] phi from multiply_error::@8 to print_ln [phi:multiply_error::@8->print_ln] + //SEG408 [46] phi (byte*) char_cursor#118 = (byte*) char_cursor#17 [phi:multiply_error::@8->print_ln#0] -- register_copy + //SEG409 [46] phi (byte*) line_cursor#40 = (byte*) line_cursor#27 [phi:multiply_error::@8->print_ln#1] -- register_copy + jsr print_ln + //SEG410 multiply_error::@return + //SEG411 [197] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13::multiply_error:169 [ line_cursor#1 ] ) + rts + str: .text "multiply mismatch @" + str1: .text "*@" + str2: .text " slow:@" + str3: .text " / fast asm:@" +} +//SEG412 slow_multiply +slow_multiply: { + .label return = 6 + .label m = 6 + .label a = 2 + //SEG413 [198] if((byte) slow_multiply::a#0==(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuz1_eq_0_then_la1 + lda a + beq b3 + //SEG414 [199] phi from slow_multiply to slow_multiply::@2 [phi:slow_multiply->slow_multiply::@2] + //SEG415 [199] phi (byte) slow_multiply::i#2 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#0] -- vbuyy=vbuc1 + ldy #0 + //SEG416 [199] phi (word) slow_multiply::m#3 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#1] -- vwuz1=vbuc1 + tya + sta m + sta m+1 + //SEG417 [199] phi from slow_multiply::@2 to slow_multiply::@2 [phi:slow_multiply::@2->slow_multiply::@2] + //SEG418 [199] phi (byte) slow_multiply::i#2 = (byte) slow_multiply::i#1 [phi:slow_multiply::@2->slow_multiply::@2#0] -- register_copy + //SEG419 [199] phi (word) slow_multiply::m#3 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@2#1] -- register_copy + //SEG420 slow_multiply::@2 + b2: + //SEG421 [200] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) -- vwuz1=vwuz1_plus_vbuxx + txa + clc + adc m + sta m + lda #0 + adc m+1 + sta m+1 + //SEG422 [201] (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuyy=_inc_vbuyy + iny + //SEG423 [202] if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuyy_neq_vbuz1_then_la1 + cpy a + bne b2 + //SEG424 [203] phi from slow_multiply::@2 to slow_multiply::@1 [phi:slow_multiply::@2->slow_multiply::@1] + //SEG425 [203] phi (word) slow_multiply::return#0 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@1#0] -- register_copy + jmp b1 + //SEG426 [203] phi from slow_multiply to slow_multiply::@1 [phi:slow_multiply->slow_multiply::@1] + b3: + //SEG427 [203] phi (word) slow_multiply::return#0 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@1#0] -- vwuz1=vbuc1 + lda #0 + sta return + sta return+1 + //SEG428 slow_multiply::@1 + b1: + //SEG429 slow_multiply::@return + //SEG430 [204] return [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:155 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) + rts +} +//SEG431 multiply_tables_compare +multiply_tables_compare: { + .label asm_sqr = $a + .label kc_sqr = 4 + //SEG432 [206] phi from multiply_tables_compare to multiply_tables_compare::@1 [phi:multiply_tables_compare->multiply_tables_compare::@1] + //SEG433 [206] phi (byte*) multiply_tables_compare::asm_sqr#2 = (const byte[512]) asm_mul_sqr1_lo#0 [phi:multiply_tables_compare->multiply_tables_compare::@1#0] -- pbuz1=pbuc1 + lda #asm_mul_sqr1_lo + sta asm_sqr+1 + //SEG434 [206] phi (byte*) multiply_tables_compare::kc_sqr#2 = (const byte[512]) mul_sqr1_lo#0 [phi:multiply_tables_compare->multiply_tables_compare::@1#1] -- pbuz1=pbuc1 + lda #mul_sqr1_lo + sta kc_sqr+1 + //SEG435 [206] phi from multiply_tables_compare::@2 to multiply_tables_compare::@1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1] + //SEG436 [206] phi (byte*) multiply_tables_compare::asm_sqr#2 = (byte*) multiply_tables_compare::asm_sqr#1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1#0] -- register_copy + //SEG437 [206] phi (byte*) multiply_tables_compare::kc_sqr#2 = (byte*) multiply_tables_compare::kc_sqr#1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1#1] -- register_copy + //SEG438 multiply_tables_compare::@1 + b1: + //SEG439 [207] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) -- _deref_pbuz1_eq__deref_pbuz2_then_la1 + ldy #0 + lda (kc_sqr),y + cmp (asm_sqr),y + beq b2 + //SEG440 multiply_tables_compare::@3 + //SEG441 [208] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) -- _deref_pbuc1=vbuc2 + lda #2 + sta BGCOL + //SEG442 [209] call print_str param-assignment [ char_cursor#117 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) + //SEG443 [51] phi from multiply_tables_compare::@3 to print_str [phi:multiply_tables_compare::@3->print_str] + //SEG444 [51] phi (byte*) char_cursor#135 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@3->print_str#0] -- pbuz1=pbuc1 + lda #<$400 + sta char_cursor + lda #>$400 + sta char_cursor+1 + //SEG445 [51] phi (byte*) print_str::str#16 = (const string) multiply_tables_compare::str [phi:multiply_tables_compare::@3->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + //SEG446 multiply_tables_compare::@6 + //SEG447 [210] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ) -- vwuz1=_word_pbuz2 + lda asm_sqr + sta print_word.w + lda asm_sqr+1 + sta print_word.w+1 + //SEG448 [211] call print_word param-assignment [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ) + //SEG449 [86] phi from multiply_tables_compare::@6 to print_word [phi:multiply_tables_compare::@6->print_word] + //SEG450 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_tables_compare::@6->print_word#0] -- register_copy + //SEG451 [86] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:multiply_tables_compare::@6->print_word#1] -- register_copy + jsr print_word + //SEG452 [212] phi from multiply_tables_compare::@6 to multiply_tables_compare::@7 [phi:multiply_tables_compare::@6->multiply_tables_compare::@7] + //SEG453 multiply_tables_compare::@7 + //SEG454 [213] call print_str param-assignment [ char_cursor#117 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 multiply_tables_compare::kc_sqr#2 ] ) + //SEG455 [51] phi from multiply_tables_compare::@7 to print_str [phi:multiply_tables_compare::@7->print_str] + //SEG456 [51] phi (byte*) char_cursor#135 = (byte*) char_cursor#17 [phi:multiply_tables_compare::@7->print_str#0] -- register_copy + //SEG457 [51] phi (byte*) print_str::str#16 = (const string) multiply_tables_compare::str1 [phi:multiply_tables_compare::@7->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + //SEG458 multiply_tables_compare::@8 + //SEG459 [214] (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#2 ] ) -- vwuz1=_word_pbuz2 lda kc_sqr sta print_word.w lda kc_sqr+1 sta print_word.w+1 - //SEG207 [100] call print_word param-assignment [ char_cursor#11 ] ( main:2::multiply_tables_compare:11 [ char_cursor#11 ] ) - //SEG208 [60] phi from multiply_tables_compare::@8 to print_word [phi:multiply_tables_compare::@8->print_word] - //SEG209 [60] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:multiply_tables_compare::@8->print_word#0] -- register_copy + //SEG460 [215] call print_word param-assignment [ char_cursor#17 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 ] ) + //SEG461 [86] phi from multiply_tables_compare::@8 to print_word [phi:multiply_tables_compare::@8->print_word] + //SEG462 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_tables_compare::@8->print_word#0] -- register_copy + //SEG463 [86] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:multiply_tables_compare::@8->print_word#1] -- register_copy jsr print_word - //SEG210 [101] phi from multiply_tables_compare::@8 to multiply_tables_compare::@return [phi:multiply_tables_compare::@8->multiply_tables_compare::@return] - //SEG211 [101] phi (byte*) line_cursor#17 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@8->multiply_tables_compare::@return#0] -- pbuz1=pbuc1 + //SEG464 [216] phi from multiply_tables_compare::@8 to multiply_tables_compare::@return [phi:multiply_tables_compare::@8->multiply_tables_compare::@return] + //SEG465 [216] phi (byte*) line_cursor#27 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@8->multiply_tables_compare::@return#0] -- pbuz1=pbuc1 lda #<$400 sta line_cursor lda #>$400 sta line_cursor+1 - //SEG212 [101] phi (byte*) char_cursor#20 = (byte*) char_cursor#11 [phi:multiply_tables_compare::@8->multiply_tables_compare::@return#1] -- register_copy - //SEG213 multiply_tables_compare::@return + //SEG466 [216] phi (byte*) char_cursor#27 = (byte*) char_cursor#17 [phi:multiply_tables_compare::@8->multiply_tables_compare::@return#1] -- register_copy + //SEG467 multiply_tables_compare::@return breturn: - //SEG214 [102] return [ line_cursor#17 char_cursor#20 ] ( main:2::multiply_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) + //SEG468 [217] return [ line_cursor#27 char_cursor#27 ] ( main:2::multiply_tables_compare:11 [ line_cursor#27 char_cursor#27 ] ) rts - //SEG215 multiply_tables_compare::@2 + //SEG469 multiply_tables_compare::@2 b2: - //SEG216 [103] (byte*) multiply_tables_compare::asm_sqr#1 ← ++ (byte*) multiply_tables_compare::asm_sqr#2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG470 [218] (byte*) multiply_tables_compare::asm_sqr#1 ← ++ (byte*) multiply_tables_compare::asm_sqr#2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 inc asm_sqr bne !+ inc asm_sqr+1 !: - //SEG217 [104] (byte*) multiply_tables_compare::kc_sqr#1 ← ++ (byte*) multiply_tables_compare::kc_sqr#2 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG471 [219] (byte*) multiply_tables_compare::kc_sqr#1 ← ++ (byte*) multiply_tables_compare::kc_sqr#2 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 inc kc_sqr bne !+ inc kc_sqr+1 !: - //SEG218 [105] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG472 [220] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda kc_sqr+1 cmp #>mul_sqr1_lo+$200*4 bcc b1 @@ -6818,48 +11906,49 @@ multiply_tables_compare: { cmp #multiply_tables_compare::@5] - //SEG220 multiply_tables_compare::@5 - //SEG221 [107] call print_str param-assignment [ char_cursor#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#2 ] ) - //SEG222 [53] phi from multiply_tables_compare::@5 to print_str [phi:multiply_tables_compare::@5->print_str] - //SEG223 [53] phi (byte*) char_cursor#71 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@5->print_str#0] -- pbuz1=pbuc1 + //SEG473 [221] phi from multiply_tables_compare::@2 to multiply_tables_compare::@5 [phi:multiply_tables_compare::@2->multiply_tables_compare::@5] + //SEG474 multiply_tables_compare::@5 + //SEG475 [222] call print_str param-assignment [ char_cursor#117 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 ] ) + //SEG476 [51] phi from multiply_tables_compare::@5 to print_str [phi:multiply_tables_compare::@5->print_str] + //SEG477 [51] phi (byte*) char_cursor#135 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@5->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta char_cursor lda #>$400 sta char_cursor+1 - //SEG224 [53] phi (byte*) print_str::str#9 = (const string) multiply_tables_compare::str2 [phi:multiply_tables_compare::@5->print_str#1] -- pbuz1=pbuc1 + //SEG478 [51] phi (byte*) print_str::str#16 = (const string) multiply_tables_compare::str2 [phi:multiply_tables_compare::@5->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG225 [108] phi from multiply_tables_compare::@5 to multiply_tables_compare::@10 [phi:multiply_tables_compare::@5->multiply_tables_compare::@10] - //SEG226 multiply_tables_compare::@10 - //SEG227 [109] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 ] ) - //SEG228 [48] phi from multiply_tables_compare::@10 to print_ln [phi:multiply_tables_compare::@10->print_ln] - //SEG229 [48] phi (byte*) line_cursor#22 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@10->print_ln#0] -- pbuz1=pbuc1 + //SEG479 [223] phi from multiply_tables_compare::@5 to multiply_tables_compare::@10 [phi:multiply_tables_compare::@5->multiply_tables_compare::@10] + //SEG480 multiply_tables_compare::@10 + //SEG481 [224] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 ] ) + //SEG482 [46] phi from multiply_tables_compare::@10 to print_ln [phi:multiply_tables_compare::@10->print_ln] + //SEG483 [46] phi (byte*) char_cursor#118 = (byte*) char_cursor#117 [phi:multiply_tables_compare::@10->print_ln#0] -- register_copy + //SEG484 [46] phi (byte*) line_cursor#40 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta line_cursor lda #>$400 sta line_cursor+1 jsr print_ln - //SEG230 [110] (byte*~) char_cursor#100 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#100 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#100 ] ) -- pbuz1=pbuz2 + //SEG485 [225] (byte*~) char_cursor#197 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#197 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#197 ] ) -- pbuz1=pbuz2 lda line_cursor sta char_cursor lda line_cursor+1 sta char_cursor+1 - //SEG231 [101] phi from multiply_tables_compare::@10 to multiply_tables_compare::@return [phi:multiply_tables_compare::@10->multiply_tables_compare::@return] - //SEG232 [101] phi (byte*) line_cursor#17 = (byte*) line_cursor#1 [phi:multiply_tables_compare::@10->multiply_tables_compare::@return#0] -- register_copy - //SEG233 [101] phi (byte*) char_cursor#20 = (byte*~) char_cursor#100 [phi:multiply_tables_compare::@10->multiply_tables_compare::@return#1] -- register_copy + //SEG486 [216] phi from multiply_tables_compare::@10 to multiply_tables_compare::@return [phi:multiply_tables_compare::@10->multiply_tables_compare::@return] + //SEG487 [216] phi (byte*) line_cursor#27 = (byte*) line_cursor#1 [phi:multiply_tables_compare::@10->multiply_tables_compare::@return#0] -- register_copy + //SEG488 [216] phi (byte*) char_cursor#27 = (byte*~) char_cursor#197 [phi:multiply_tables_compare::@10->multiply_tables_compare::@return#1] -- register_copy jmp breturn str: .text "multiply table mismatch at @" str1: .text " / @" str2: .text "multiply tables match!@" } -//SEG234 init_multiply_asm +//SEG489 init_multiply_asm init_multiply_asm: { .const mem = $ff - //SEG235 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } + //SEG490 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } ldx #0 txa .byte $c9 @@ -6898,23 +11987,23 @@ init_multiply_asm: { dey inx bne !- - //SEG236 [112] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG491 [227] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr1_lo sta mem - //SEG237 [113] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG492 [228] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr1_hi sta mem - //SEG238 [114] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG493 [229] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr2_lo sta mem - //SEG239 [115] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG494 [230] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr2_hi sta mem - //SEG240 init_multiply_asm::@return - //SEG241 [116] return [ ] ( main:2::init_multiply_asm:9 [ ] ) + //SEG495 init_multiply_asm::@return + //SEG496 [231] return [ ] ( main:2::init_multiply_asm:9 [ ] ) rts } -//SEG242 init_multiply +//SEG497 init_multiply init_multiply: { .label sqr1_hi = 6 .label sqr = 8 @@ -6923,196 +12012,196 @@ init_multiply: { .label sqr2_hi = 6 .label sqr2_lo = 4 .label dir = 2 - //SEG243 [118] phi from init_multiply to init_multiply::@1 [phi:init_multiply->init_multiply::@1] - //SEG244 [118] phi (byte) init_multiply::x_2#3 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#0] -- vbuz1=vbuc1 + //SEG498 [233] phi from init_multiply to init_multiply::@1 [phi:init_multiply->init_multiply::@1] + //SEG499 [233] phi (byte) init_multiply::x_2#3 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG245 [118] phi (byte*) init_multiply::sqr1_hi#2 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 [phi:init_multiply->init_multiply::@1#1] -- pbuz1=pbuc1 + //SEG500 [233] phi (byte*) init_multiply::sqr1_hi#2 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 [phi:init_multiply->init_multiply::@1#1] -- pbuz1=pbuc1 lda #mul_sqr1_hi+1 sta sqr1_hi+1 - //SEG246 [118] phi (byte*) init_multiply::sqr1_lo#2 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 [phi:init_multiply->init_multiply::@1#2] -- pbuz1=pbuc1 + //SEG501 [233] phi (byte*) init_multiply::sqr1_lo#2 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 [phi:init_multiply->init_multiply::@1#2] -- pbuz1=pbuc1 lda #mul_sqr1_lo+1 sta sqr1_lo+1 - //SEG247 [118] phi (word) init_multiply::sqr#4 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#3] -- vwuz1=vbuc1 + //SEG502 [233] phi (word) init_multiply::sqr#4 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#3] -- vwuz1=vbuc1 lda #0 sta sqr sta sqr+1 - //SEG248 [118] phi (byte) init_multiply::c#2 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#4] -- vbuxx=vbuc1 + //SEG503 [233] phi (byte) init_multiply::c#2 = (byte/signed byte/word/signed word) 0 [phi:init_multiply->init_multiply::@1#4] -- vbuxx=vbuc1 tax - //SEG249 [118] phi from init_multiply::@2 to init_multiply::@1 [phi:init_multiply::@2->init_multiply::@1] - //SEG250 [118] phi (byte) init_multiply::x_2#3 = (byte) init_multiply::x_2#2 [phi:init_multiply::@2->init_multiply::@1#0] -- register_copy - //SEG251 [118] phi (byte*) init_multiply::sqr1_hi#2 = (byte*) init_multiply::sqr1_hi#1 [phi:init_multiply::@2->init_multiply::@1#1] -- register_copy - //SEG252 [118] phi (byte*) init_multiply::sqr1_lo#2 = (byte*) init_multiply::sqr1_lo#1 [phi:init_multiply::@2->init_multiply::@1#2] -- register_copy - //SEG253 [118] phi (word) init_multiply::sqr#4 = (word) init_multiply::sqr#1 [phi:init_multiply::@2->init_multiply::@1#3] -- register_copy - //SEG254 [118] phi (byte) init_multiply::c#2 = (byte) init_multiply::c#1 [phi:init_multiply::@2->init_multiply::@1#4] -- register_copy - //SEG255 init_multiply::@1 + //SEG504 [233] phi from init_multiply::@2 to init_multiply::@1 [phi:init_multiply::@2->init_multiply::@1] + //SEG505 [233] phi (byte) init_multiply::x_2#3 = (byte) init_multiply::x_2#2 [phi:init_multiply::@2->init_multiply::@1#0] -- register_copy + //SEG506 [233] phi (byte*) init_multiply::sqr1_hi#2 = (byte*) init_multiply::sqr1_hi#1 [phi:init_multiply::@2->init_multiply::@1#1] -- register_copy + //SEG507 [233] phi (byte*) init_multiply::sqr1_lo#2 = (byte*) init_multiply::sqr1_lo#1 [phi:init_multiply::@2->init_multiply::@1#2] -- register_copy + //SEG508 [233] phi (word) init_multiply::sqr#4 = (word) init_multiply::sqr#1 [phi:init_multiply::@2->init_multiply::@1#3] -- register_copy + //SEG509 [233] phi (byte) init_multiply::c#2 = (byte) init_multiply::c#1 [phi:init_multiply::@2->init_multiply::@1#4] -- register_copy + //SEG510 init_multiply::@1 b1: - //SEG256 [119] (byte) init_multiply::c#1 ← ++ (byte) init_multiply::c#2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) -- vbuxx=_inc_vbuxx + //SEG511 [234] (byte) init_multiply::c#1 ← ++ (byte) init_multiply::c#2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG257 [120] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word) 1 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG512 [235] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word) 1 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG258 [121] if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word) 0) goto init_multiply::@2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) -- vbuaa_neq_0_then_la1 + //SEG513 [236] if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word) 0) goto init_multiply::@2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ) -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG259 init_multiply::@5 - //SEG260 [122] (byte) init_multiply::x_2#1 ← ++ (byte) init_multiply::x_2#3 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG514 init_multiply::@5 + //SEG515 [237] (byte) init_multiply::x_2#1 ← ++ (byte) init_multiply::x_2#3 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ) -- vbuz1=_inc_vbuz1 inc x_2 - //SEG261 [123] (word) init_multiply::sqr#2 ← ++ (word) init_multiply::sqr#4 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ) -- vwuz1=_inc_vwuz1 + //SEG516 [238] (word) init_multiply::sqr#2 ← ++ (word) init_multiply::sqr#4 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ) -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG262 [124] phi from init_multiply::@1 init_multiply::@5 to init_multiply::@2 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2] - //SEG263 [124] phi (byte) init_multiply::x_2#2 = (byte) init_multiply::x_2#3 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2#0] -- register_copy - //SEG264 [124] phi (word) init_multiply::sqr#3 = (word) init_multiply::sqr#4 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2#1] -- register_copy - //SEG265 init_multiply::@2 + //SEG517 [239] phi from init_multiply::@1 init_multiply::@5 to init_multiply::@2 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2] + //SEG518 [239] phi (byte) init_multiply::x_2#2 = (byte) init_multiply::x_2#3 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2#0] -- register_copy + //SEG519 [239] phi (word) init_multiply::sqr#3 = (word) init_multiply::sqr#4 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2#1] -- register_copy + //SEG520 init_multiply::@2 b2: - //SEG266 [125] (byte~) init_multiply::$5 ← < (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ) -- vbuaa=_lo_vwuz1 + //SEG521 [240] (byte~) init_multiply::$5 ← < (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ) -- vbuaa=_lo_vwuz1 lda sqr - //SEG267 [126] *((byte*) init_multiply::sqr1_lo#2) ← (byte~) init_multiply::$5 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- _deref_pbuz1=vbuaa + //SEG522 [241] *((byte*) init_multiply::sqr1_lo#2) ← (byte~) init_multiply::$5 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG268 [127] (byte~) init_multiply::$6 ← > (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ) -- vbuaa=_hi_vwuz1 + //SEG523 [242] (byte~) init_multiply::$6 ← > (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ) -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG269 [128] *((byte*) init_multiply::sqr1_hi#2) ← (byte~) init_multiply::$6 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- _deref_pbuz1=vbuaa + //SEG524 [243] *((byte*) init_multiply::sqr1_hi#2) ← (byte~) init_multiply::$6 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- _deref_pbuz1=vbuaa sta (sqr1_hi),y - //SEG270 [129] (byte*) init_multiply::sqr1_hi#1 ← ++ (byte*) init_multiply::sqr1_hi#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- pbuz1=_inc_pbuz1 + //SEG525 [244] (byte*) init_multiply::sqr1_hi#1 ← ++ (byte*) init_multiply::sqr1_hi#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG271 [130] (word) init_multiply::sqr#1 ← (word) init_multiply::sqr#3 + (byte) init_multiply::x_2#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2 + //SEG526 [245] (word) init_multiply::sqr#1 ← (word) init_multiply::sqr#3 + (byte) init_multiply::x_2#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr sta sqr - bcc !+ - inc sqr+1 - !: - //SEG272 [131] (byte*) init_multiply::sqr1_lo#1 ← ++ (byte*) init_multiply::sqr1_lo#2 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- pbuz1=_inc_pbuz1 + lda #0 + adc sqr+1 + sta sqr+1 + //SEG527 [246] (byte*) init_multiply::sqr1_lo#1 ← ++ (byte*) init_multiply::sqr1_lo#2 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG273 [132] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_multiply::@1 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG528 [247] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_multiply::@1 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mul_sqr1_lo+$200 bne b1 lda sqr1_lo cmp #init_multiply::@3] - //SEG275 [133] phi (byte) init_multiply::dir#2 = (byte/word/signed word) 255 [phi:init_multiply::@2->init_multiply::@3#0] -- vbuz1=vbuc1 + //SEG529 [248] phi from init_multiply::@2 to init_multiply::@3 [phi:init_multiply::@2->init_multiply::@3] + //SEG530 [248] phi (byte) init_multiply::dir#2 = (byte/word/signed word) 255 [phi:init_multiply::@2->init_multiply::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG276 [133] phi (byte*) init_multiply::sqr2_hi#2 = (const byte[512]) mul_sqr2_hi#0 [phi:init_multiply::@2->init_multiply::@3#1] -- pbuz1=pbuc1 + //SEG531 [248] phi (byte*) init_multiply::sqr2_hi#2 = (const byte[512]) mul_sqr2_hi#0 [phi:init_multiply::@2->init_multiply::@3#1] -- pbuz1=pbuc1 lda #mul_sqr2_hi sta sqr2_hi+1 - //SEG277 [133] phi (byte*) init_multiply::sqr2_lo#2 = (const byte[512]) mul_sqr2_lo#0 [phi:init_multiply::@2->init_multiply::@3#2] -- pbuz1=pbuc1 + //SEG532 [248] phi (byte*) init_multiply::sqr2_lo#2 = (const byte[512]) mul_sqr2_lo#0 [phi:init_multiply::@2->init_multiply::@3#2] -- pbuz1=pbuc1 lda #mul_sqr2_lo sta sqr2_lo+1 - //SEG278 [133] phi (byte) init_multiply::x_255#2 = ((byte))-(byte/signed byte/word/signed word) 1 [phi:init_multiply::@2->init_multiply::@3#3] -- vbuxx=vbuc1 + //SEG533 [248] phi (byte) init_multiply::x_255#2 = ((byte))-(byte/signed byte/word/signed word) 1 [phi:init_multiply::@2->init_multiply::@3#3] -- vbuxx=vbuc1 ldx #-1 - //SEG279 [133] phi from init_multiply::@4 to init_multiply::@3 [phi:init_multiply::@4->init_multiply::@3] - //SEG280 [133] phi (byte) init_multiply::dir#2 = (byte) init_multiply::dir#3 [phi:init_multiply::@4->init_multiply::@3#0] -- register_copy - //SEG281 [133] phi (byte*) init_multiply::sqr2_hi#2 = (byte*) init_multiply::sqr2_hi#1 [phi:init_multiply::@4->init_multiply::@3#1] -- register_copy - //SEG282 [133] phi (byte*) init_multiply::sqr2_lo#2 = (byte*) init_multiply::sqr2_lo#1 [phi:init_multiply::@4->init_multiply::@3#2] -- register_copy - //SEG283 [133] phi (byte) init_multiply::x_255#2 = (byte) init_multiply::x_255#1 [phi:init_multiply::@4->init_multiply::@3#3] -- register_copy - //SEG284 init_multiply::@3 + //SEG534 [248] phi from init_multiply::@4 to init_multiply::@3 [phi:init_multiply::@4->init_multiply::@3] + //SEG535 [248] phi (byte) init_multiply::dir#2 = (byte) init_multiply::dir#3 [phi:init_multiply::@4->init_multiply::@3#0] -- register_copy + //SEG536 [248] phi (byte*) init_multiply::sqr2_hi#2 = (byte*) init_multiply::sqr2_hi#1 [phi:init_multiply::@4->init_multiply::@3#1] -- register_copy + //SEG537 [248] phi (byte*) init_multiply::sqr2_lo#2 = (byte*) init_multiply::sqr2_lo#1 [phi:init_multiply::@4->init_multiply::@3#2] -- register_copy + //SEG538 [248] phi (byte) init_multiply::x_255#2 = (byte) init_multiply::x_255#1 [phi:init_multiply::@4->init_multiply::@3#3] -- register_copy + //SEG539 init_multiply::@3 b3: - //SEG285 [134] *((byte*) init_multiply::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG540 [249] *((byte*) init_multiply::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mul_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG286 [135] *((byte*) init_multiply::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG541 [250] *((byte*) init_multiply::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mul_sqr1_hi,x sta (sqr2_hi),y - //SEG287 [136] (byte*) init_multiply::sqr2_hi#1 ← ++ (byte*) init_multiply::sqr2_hi#2 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG542 [251] (byte*) init_multiply::sqr2_hi#1 ← ++ (byte*) init_multiply::sqr2_hi#2 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG288 [137] (byte) init_multiply::x_255#1 ← (byte) init_multiply::x_255#2 + (byte) init_multiply::dir#2 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) -- vbuxx=vbuxx_plus_vbuz1 + //SEG543 [252] (byte) init_multiply::x_255#1 ← (byte) init_multiply::x_255#2 + (byte) init_multiply::dir#2 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG289 [138] if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_multiply::@12 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) -- vbuxx_neq_0_then_la1 + //SEG544 [253] if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_multiply::@12 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b4 - //SEG290 [139] phi from init_multiply::@3 to init_multiply::@4 [phi:init_multiply::@3->init_multiply::@4] - //SEG291 [139] phi (byte) init_multiply::dir#3 = (byte/signed byte/word/signed word) 1 [phi:init_multiply::@3->init_multiply::@4#0] -- vbuz1=vbuc1 + //SEG545 [254] phi from init_multiply::@3 to init_multiply::@4 [phi:init_multiply::@3->init_multiply::@4] + //SEG546 [254] phi (byte) init_multiply::dir#3 = (byte/signed byte/word/signed word) 1 [phi:init_multiply::@3->init_multiply::@4#0] -- vbuz1=vbuc1 lda #1 sta dir - //SEG292 init_multiply::@4 + //SEG547 init_multiply::@4 b4: - //SEG293 [140] (byte*) init_multiply::sqr2_lo#1 ← ++ (byte*) init_multiply::sqr2_lo#2 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) -- pbuz1=_inc_pbuz1 + //SEG548 [255] (byte*) init_multiply::sqr2_lo#1 ← ++ (byte*) init_multiply::sqr2_lo#2 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG294 [141] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_multiply::@3 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG549 [256] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_multiply::@3 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mul_sqr2_lo+$1ff bne b3 lda sqr2_lo cmp #init_multiply::@12] - //SEG301 init_multiply::@12 - //SEG302 [139] phi from init_multiply::@12 to init_multiply::@4 [phi:init_multiply::@12->init_multiply::@4] - //SEG303 [139] phi (byte) init_multiply::dir#3 = (byte) init_multiply::dir#2 [phi:init_multiply::@12->init_multiply::@4#0] -- register_copy + //SEG555 [260] phi from init_multiply::@3 to init_multiply::@12 [phi:init_multiply::@3->init_multiply::@12] + //SEG556 init_multiply::@12 + //SEG557 [254] phi from init_multiply::@12 to init_multiply::@4 [phi:init_multiply::@12->init_multiply::@4] + //SEG558 [254] phi (byte) init_multiply::dir#3 = (byte) init_multiply::dir#2 [phi:init_multiply::@12->init_multiply::@4#0] -- register_copy } -//SEG304 print_cls +//SEG559 print_cls print_cls: { .label sc = 4 - //SEG305 [147] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG306 [147] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG560 [262] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG561 [262] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG307 [147] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG308 [147] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG309 print_cls::@1 + //SEG562 [262] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG563 [262] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG564 print_cls::@1 b1: - //SEG310 [148] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG565 [263] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #' ' sta (sc),y - //SEG311 [149] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG566 [264] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG312 [150] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 + //SEG567 [265] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG313 print_cls::@return - //SEG314 [151] return [ ] ( main:2::print_cls:5 [ ] ) + //SEG568 print_cls::@return + //SEG569 [266] return [ ] ( main:2::print_cls:5 [ ] ) rts } .align $100 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.sym b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.sym index c7ed18235..7d34e8c57 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.sym @@ -1,4 +1,4 @@ -(label) @13 +(label) @20 (label) @begin (label) @end (byte*) BGCOL @@ -13,15 +13,19 @@ (const byte[512]) asm_mul_sqr2_lo#0 asm_mul_sqr2_lo = { fill( 512, 0) } (byte*) char_cursor (byte*) char_cursor#1 char_cursor zp ZP_WORD:8 11.0 -(byte*~) char_cursor#100 char_cursor zp ZP_WORD:8 4.0 -(byte*) char_cursor#11 char_cursor zp ZP_WORD:8 0.823529411764706 -(byte*) char_cursor#2 char_cursor zp ZP_WORD:8 2.1818181818181817 -(byte*) char_cursor#20 char_cursor zp ZP_WORD:8 0.3333333333333333 -(byte*) char_cursor#27 char_cursor zp ZP_WORD:8 40.0 -(byte*) char_cursor#41 char_cursor zp ZP_WORD:8 4.0 -(byte*) char_cursor#64 char_cursor zp ZP_WORD:8 2.0 -(byte*) char_cursor#71 char_cursor zp ZP_WORD:8 10.0 -(byte*~) char_cursor#89 char_cursor zp ZP_WORD:8 4.0 +(byte*) char_cursor#117 char_cursor zp ZP_WORD:8 1.6944444444444446 +(byte*) char_cursor#118 char_cursor zp ZP_WORD:8 5.25 +(byte*) char_cursor#119 char_cursor zp ZP_WORD:8 3.0 +(byte*) char_cursor#121 char_cursor zp ZP_WORD:8 3.0 +(byte*) char_cursor#123 char_cursor zp ZP_WORD:8 6.0 +(byte*) char_cursor#124 char_cursor zp ZP_WORD:8 3.9999999999999996 +(byte*) char_cursor#135 char_cursor zp ZP_WORD:8 24.0 +(byte*) char_cursor#17 char_cursor zp ZP_WORD:8 0.7894736842105261 +(byte*~) char_cursor#172 char_cursor zp ZP_WORD:8 4.0 +(byte*~) char_cursor#176 char_cursor zp ZP_WORD:8 4.0 +(byte*~) char_cursor#197 char_cursor zp ZP_WORD:8 4.0 +(byte*) char_cursor#27 char_cursor zp ZP_WORD:8 0.27586206896551724 +(byte*) char_cursor#75 char_cursor zp ZP_WORD:8 6.0 (void()) init_multiply() (byte~) init_multiply::$2 reg byte a 22.0 (byte~) init_multiply::$5 reg byte a 22.0 @@ -69,16 +73,16 @@ (byte*) init_multiply_asm::mem (const byte*) init_multiply_asm::mem#0 mem = ((byte*))(byte/word/signed word) 255 (byte*) line_cursor -(byte*) line_cursor#1 line_cursor zp ZP_WORD:4 5.857142857142857 -(byte*) line_cursor#11 line_cursor zp ZP_WORD:4 24.0 -(byte*) line_cursor#17 line_cursor zp ZP_WORD:4 0.18181818181818182 -(byte*) line_cursor#19 line_cursor zp ZP_WORD:4 40.0 -(byte*) line_cursor#22 line_cursor zp ZP_WORD:4 4.0 +(byte*) line_cursor#1 line_cursor zp ZP_WORD:4 0.8181818181818181 +(byte*) line_cursor#20 line_cursor zp ZP_WORD:4 24.0 +(byte*) line_cursor#27 line_cursor zp ZP_WORD:4 0.1276595744680851 +(byte*) line_cursor#40 line_cursor zp ZP_WORD:4 10.0 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 +(label) main::@5 (label) main::@return (byte[512]) mul_sqr1_hi (const byte[512]) mul_sqr1_hi#0 mul_sqr1_hi = { fill( 512, 0) } @@ -91,22 +95,46 @@ (word()) multiply((byte) multiply::a , (byte) multiply::b) (label) multiply::@return (byte) multiply::a -(byte) multiply::a#0 reg byte x 51.5 +(byte) multiply::a#0 reg byte x 2.0 +(byte) multiply::a#1 reg byte x 101.0 +(byte) multiply::a#2 reg byte x 105.0 (byte) multiply::b -(byte) multiply::b#0 reg byte a 51.5 +(byte) multiply::b#0 reg byte a 4.0 +(byte) multiply::b#1 reg byte a 202.0 +(byte) multiply::b#2 reg byte a 52.5 (byte*) multiply::memA (const byte*) multiply::memA#0 memA = ((byte*))(byte/word/signed word) 254 (byte*) multiply::memB (const byte*) multiply::memB#0 memB = ((byte*))(byte/word/signed word) 255 (word) multiply::return -(word) multiply::return#0 return zp ZP_WORD:6 34.33333333333333 -(word) multiply::return#2 return zp ZP_WORD:6 202.0 +(word) multiply::return#0 return zp ZP_WORD:6 26.25 +(word) multiply::return#2 return zp ZP_WORD:6 4.0 +(word) multiply::return#3 return zp ZP_WORD:6 202.0 +(void()) multiply_error((byte) multiply_error::a , (byte) multiply_error::b , (word) multiply_error::ms , (word) multiply_error::ma) +(label) multiply_error::@1 +(label) multiply_error::@2 +(label) multiply_error::@3 +(label) multiply_error::@4 +(label) multiply_error::@5 +(label) multiply_error::@6 +(label) multiply_error::@7 +(label) multiply_error::@8 +(label) multiply_error::@return +(byte) multiply_error::a +(byte) multiply_error::a#0 reg byte x 0.6666666666666666 +(byte) multiply_error::b +(byte) multiply_error::b#0 b zp ZP_BYTE:2 0.4444444444444444 +(word) multiply_error::ma +(word) multiply_error::ma#0 ma zp ZP_WORD:12 0.26666666666666666 +(word) multiply_error::ms +(word) multiply_error::ms#0 ms zp ZP_WORD:10 0.3333333333333333 +(const string) multiply_error::str str = (string) "multiply mismatch @" +(const string) multiply_error::str1 str1 = (string) "*@" +(const string) multiply_error::str2 str2 = (string) " slow:@" +(const string) multiply_error::str3 str3 = (string) " / fast asm:@" (void()) multiply_results_compare() (label) multiply_results_compare::@1 -(label) multiply_results_compare::@10 (label) multiply_results_compare::@11 -(label) multiply_results_compare::@12 -(label) multiply_results_compare::@14 (label) multiply_results_compare::@2 (label) multiply_results_compare::@3 (label) multiply_results_compare::@4 @@ -117,17 +145,15 @@ (label) multiply_results_compare::@return (byte) multiply_results_compare::a (byte) multiply_results_compare::a#1 a zp ZP_BYTE:2 16.5 -(byte) multiply_results_compare::a#5 a zp ZP_BYTE:2 14.933333333333332 +(byte) multiply_results_compare::a#6 a zp ZP_BYTE:2 14.125 (byte) multiply_results_compare::b (byte) multiply_results_compare::b#1 b zp ZP_BYTE:3 151.5 -(byte) multiply_results_compare::b#2 b zp ZP_BYTE:3 33.666666666666664 +(byte) multiply_results_compare::b#2 b zp ZP_BYTE:3 29.0 (word) multiply_results_compare::ma -(word) multiply_results_compare::ma#0 ma zp ZP_WORD:12 25.5 +(word) multiply_results_compare::ma#0 ma zp ZP_WORD:6 34.0 (word) multiply_results_compare::ms -(word) multiply_results_compare::ms#0 ms zp ZP_WORD:10 22.666666666666664 -(const string) multiply_results_compare::str str = (string) "multiply mismatch slow:@" -(const string) multiply_results_compare::str1 str1 = (string) " / fast asm:" -(const string) multiply_results_compare::str2 str2 = (string) "multiply results match!@" +(word) multiply_results_compare::ms#0 ms zp ZP_WORD:10 20.4 +(const string) multiply_results_compare::str str = (string) "multiply results match!@" (void()) multiply_tables_compare() (label) multiply_tables_compare::@1 (label) multiply_tables_compare::@10 @@ -155,15 +181,18 @@ (byte) print_byte::b (byte) print_byte::b#0 reg byte x 4.0 (byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 2.0 +(byte) print_byte::b#2 reg byte x 4.0 +(byte) print_byte::b#3 reg byte x 4.0 +(byte) print_byte::b#4 reg byte x 4.0 +(byte) print_byte::b#5 reg byte x 3.5 (byte[]) print_byte::hextab -(const byte[]) print_byte::hextab#0 hextab = { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } +(const string) print_byte::hextab#0 hextab = (string) "0123456789abcdef" (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#0 reg byte a 4.0 -(byte) print_char::ch#1 reg byte a 4.0 -(byte) print_char::ch#2 reg byte a 6.0 +(byte) print_char::ch#2 reg byte a 4.0 +(byte) print_char::ch#3 reg byte a 4.0 +(byte) print_char::ch#4 reg byte a 6.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -173,14 +202,36 @@ (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return +(void()) print_sbyte((signed byte) print_sbyte::b) +(label) print_sbyte::@1 +(label) print_sbyte::@2 +(label) print_sbyte::@4 +(label) print_sbyte::@return +(signed byte) print_sbyte::b +(signed byte) print_sbyte::b#0 reg byte x 4.0 +(signed byte) print_sbyte::b#1 reg byte x 4.0 +(signed byte) print_sbyte::b#2 reg byte x 4.0 +(signed byte) print_sbyte::b#3 reg byte x 2.5 +(signed byte) print_sbyte::b#4 reg byte x 6.0 (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str (byte*) print_str::str#0 str zp ZP_WORD:6 22.0 -(byte*) print_str::str#7 str zp ZP_WORD:6 11.5 -(byte*) print_str::str#9 str zp ZP_WORD:6 2.0 +(byte*) print_str::str#14 str zp ZP_WORD:6 11.5 +(byte*) print_str::str#16 str zp ZP_WORD:6 2.0 +(void()) print_sword((signed word) print_sword::w) +(label) print_sword::@1 +(label) print_sword::@2 +(label) print_sword::@4 +(label) print_sword::@return +(signed word) print_sword::w +(signed word) print_sword::w#0 w zp ZP_WORD:6 4.0 +(signed word) print_sword::w#1 w zp ZP_WORD:6 4.0 +(signed word) print_sword::w#2 w zp ZP_WORD:6 4.0 +(signed word) print_sword::w#3 w zp ZP_WORD:6 2.5 +(signed word) print_sword::w#4 w zp ZP_WORD:6 6.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -189,7 +240,78 @@ (word) print_word::w#1 w zp ZP_WORD:6 4.0 (word) print_word::w#2 w zp ZP_WORD:6 4.0 (word) print_word::w#3 w zp ZP_WORD:6 4.0 -(word) print_word::w#4 w zp ZP_WORD:6 3.9999999999999996 +(word) print_word::w#4 w zp ZP_WORD:6 4.0 +(word) print_word::w#5 w zp ZP_WORD:6 4.666666666666666 +(signed word()) signed_multiply((signed byte) signed_multiply::a , (signed byte) signed_multiply::b) +(byte~) signed_multiply::$12 $12 zp ZP_BYTE:14 2.0 +(byte~) signed_multiply::$13 reg byte a 4.0 +(byte/signed byte/word/signed word~) signed_multiply::$16 reg byte a 4.0 +(byte/signed byte/word/signed word~) signed_multiply::$17 reg byte a 4.0 +(byte~) signed_multiply::$6 $6 zp ZP_BYTE:14 2.0 +(byte~) signed_multiply::$7 reg byte a 4.0 +(label) signed_multiply::@1 +(label) signed_multiply::@2 +(label) signed_multiply::@3 +(label) signed_multiply::@4 +(label) signed_multiply::@6 +(label) signed_multiply::@return +(signed byte) signed_multiply::a +(signed byte) signed_multiply::a#0 a zp ZP_BYTE:2 7.133333333333335 +(signed byte) signed_multiply::b +(signed byte) signed_multiply::b#0 reg byte y 8.916666666666664 +(word) signed_multiply::m +(word) signed_multiply::m#0 m zp ZP_WORD:6 1.6 +(word) signed_multiply::m#1 m zp ZP_WORD:6 4.0 +(word) signed_multiply::m#2 m zp ZP_WORD:6 4.0 +(word) signed_multiply::m#4 m zp ZP_WORD:6 6.0 +(word) signed_multiply::m#5 m zp ZP_WORD:6 2.0 +(signed word) signed_multiply::return +(signed word) signed_multiply::return#0 return zp ZP_WORD:6 34.33333333333333 +(signed word) signed_multiply::return#2 return zp ZP_WORD:6 202.0 +(void()) signed_multiply_error((signed byte) signed_multiply_error::a , (signed byte) signed_multiply_error::b , (signed word) signed_multiply_error::ms , (signed word) signed_multiply_error::ma) +(label) signed_multiply_error::@1 +(label) signed_multiply_error::@2 +(label) signed_multiply_error::@3 +(label) signed_multiply_error::@4 +(label) signed_multiply_error::@5 +(label) signed_multiply_error::@6 +(label) signed_multiply_error::@7 +(label) signed_multiply_error::@8 +(label) signed_multiply_error::@return +(signed byte) signed_multiply_error::a +(signed byte) signed_multiply_error::a#0 reg byte x 0.6666666666666666 +(signed byte) signed_multiply_error::b +(signed byte) signed_multiply_error::b#0 b zp ZP_BYTE:2 0.4444444444444444 +(signed word) signed_multiply_error::ma +(signed word) signed_multiply_error::ma#0 ma zp ZP_WORD:12 0.26666666666666666 +(signed word) signed_multiply_error::ms +(signed word) signed_multiply_error::ms#0 ms zp ZP_WORD:10 0.3333333333333333 +(const string) signed_multiply_error::str str = (string) "signed multiply mismatch @" +(const string) signed_multiply_error::str1 str1 = (string) "*@" +(const string) signed_multiply_error::str2 str2 = (string) " slow:@" +(const string) signed_multiply_error::str3 str3 = (string) " / fast asm:@" +(void()) signed_multiply_results_compare() +(label) signed_multiply_results_compare::@1 +(label) signed_multiply_results_compare::@11 +(label) signed_multiply_results_compare::@2 +(label) signed_multiply_results_compare::@3 +(label) signed_multiply_results_compare::@4 +(label) signed_multiply_results_compare::@6 +(label) signed_multiply_results_compare::@7 +(label) signed_multiply_results_compare::@8 +(label) signed_multiply_results_compare::@9 +(label) signed_multiply_results_compare::@return +(signed byte) signed_multiply_results_compare::a +(signed byte) signed_multiply_results_compare::a#1 a zp ZP_BYTE:2 16.5 +(signed byte) signed_multiply_results_compare::a#6 a zp ZP_BYTE:2 14.125 +(signed byte) signed_multiply_results_compare::b +(signed byte) signed_multiply_results_compare::b#1 b zp ZP_BYTE:3 151.5 +(signed byte) signed_multiply_results_compare::b#2 b zp ZP_BYTE:3 29.0 +(signed word) signed_multiply_results_compare::ma +(signed word) signed_multiply_results_compare::ma#0 ma zp ZP_WORD:6 34.0 +(signed word) signed_multiply_results_compare::ms +(signed word) signed_multiply_results_compare::ms#0 ms zp ZP_WORD:8 20.4 +(const string) signed_multiply_results_compare::str str = (string) "signed multiply results match!@" (word()) slow_multiply((byte) slow_multiply::a , (byte) slow_multiply::b) (label) slow_multiply::@1 (label) slow_multiply::@2 @@ -207,24 +329,60 @@ (word) slow_multiply::return (word) slow_multiply::return#0 return zp ZP_WORD:6 367.33333333333337 (word) slow_multiply::return#2 return zp ZP_WORD:6 202.0 +(signed word()) slow_signed_multiply((signed byte) slow_signed_multiply::a , (signed byte) slow_signed_multiply::b) +(label) slow_signed_multiply::@1 +(label) slow_signed_multiply::@2 +(label) slow_signed_multiply::@3 +(label) slow_signed_multiply::@5 +(label) slow_signed_multiply::@return +(signed byte) slow_signed_multiply::a +(signed byte) slow_signed_multiply::a#0 a zp ZP_BYTE:2 175.58333333333334 +(signed byte) slow_signed_multiply::b +(signed byte) slow_signed_multiply::b#0 reg byte x 191.1818181818182 +(signed byte) slow_signed_multiply::i +(signed byte) slow_signed_multiply::i#1 reg byte y 1501.5 +(signed byte) slow_signed_multiply::i#2 reg byte y 1001.0 +(signed byte) slow_signed_multiply::j +(signed byte) slow_signed_multiply::j#1 reg byte y 1501.5 +(signed byte) slow_signed_multiply::j#2 reg byte y 1001.0 +(signed word) slow_signed_multiply::m +(signed word) slow_signed_multiply::m#1 m zp ZP_WORD:6 1001.0 +(signed word) slow_signed_multiply::m#2 m zp ZP_WORD:6 1001.0 +(signed word) slow_signed_multiply::m#3 m zp ZP_WORD:6 2002.0 +(signed word) slow_signed_multiply::m#5 m zp ZP_WORD:6 2002.0 +(signed word) slow_signed_multiply::return +(signed word) slow_signed_multiply::return#0 return zp ZP_WORD:6 701.0 +(signed word) slow_signed_multiply::return#2 return zp ZP_WORD:6 202.0 -zp ZP_BYTE:2 [ multiply_results_compare::a#5 multiply_results_compare::a#1 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 slow_multiply::a#0 ] -zp ZP_BYTE:3 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] -zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ] -zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_multiply::return#2 multiply::return#2 multiply::return#0 ] -reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -zp ZP_WORD:8 [ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] +zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 multiply_results_compare::a#6 multiply_results_compare::a#1 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 slow_signed_multiply::a#0 signed_multiply::a#0 signed_multiply_error::b#0 slow_multiply::a#0 multiply_error::b#0 ] +zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 multiply_results_compare::b#2 multiply_results_compare::b#1 ] +zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ] +zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 signed_multiply::return#0 multiply::return#0 slow_multiply::return#2 multiply::return#3 multiply_results_compare::ma#0 ] +reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +zp ZP_WORD:8 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 signed_multiply_results_compare::ms#0 ] +reg byte x [ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ] +reg byte x [ multiply::a#2 multiply::a#1 multiply::a#0 ] +reg byte a [ multiply::b#2 multiply::b#1 multiply::b#0 ] +reg byte y [ slow_signed_multiply::i#2 slow_signed_multiply::i#1 ] +reg byte y [ slow_signed_multiply::j#2 slow_signed_multiply::j#1 ] reg byte y [ slow_multiply::i#2 slow_multiply::i#1 ] -zp ZP_WORD:10 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 multiply_results_compare::ms#0 ] +zp ZP_WORD:10 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 multiply_results_compare::ms#0 multiply_error::ms#0 ] reg byte x [ init_multiply::c#2 init_multiply::c#1 ] reg byte x [ init_multiply::x_255#2 init_multiply::x_255#1 ] -reg byte x [ slow_multiply::b#0 ] -reg byte x [ multiply::a#0 ] -reg byte a [ multiply::b#0 ] -zp ZP_WORD:12 [ multiply_results_compare::ma#0 ] +reg byte x [ slow_signed_multiply::b#0 ] +reg byte y [ signed_multiply::b#0 ] +reg byte x [ signed_multiply_error::a#0 ] +zp ZP_WORD:12 [ signed_multiply_error::ma#0 multiply_error::ma#0 ] reg byte y [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +zp ZP_BYTE:14 [ signed_multiply::$6 signed_multiply::$12 ] +reg byte a [ signed_multiply::$7 ] +reg byte a [ signed_multiply::$16 ] +reg byte a [ signed_multiply::$13 ] +reg byte a [ signed_multiply::$17 ] +reg byte x [ slow_multiply::b#0 ] +reg byte x [ multiply_error::a#0 ] reg byte a [ init_multiply::$2 ] reg byte a [ init_multiply::$5 ] reg byte a [ init_multiply::$6 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/zpptr.asm b/src/test/java/dk/camelot64/kickc/test/ref/zpptr.asm index 987823f3a..f07679fce 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/zpptr.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/zpptr.asm @@ -16,9 +16,9 @@ main: { b2: ldx #0 b3: - lda #zpptr adc #0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/zpptr.log b/src/test/java/dk/camelot64/kickc/test/ref/zpptr.log index 904fc9e0e..9e6424a44 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/zpptr.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/zpptr.log @@ -497,9 +497,9 @@ main: { //SEG24 main::@3 b3: //SEG25 [8] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) -- pbuz1=pbuc1_plus_vbuz2 - lda #zpptr adc #0 @@ -653,9 +653,9 @@ main: { //SEG24 main::@3 b3: //SEG25 [8] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) -- pbuz1=pbuc1_plus_vbuz2 - lda #zpptr adc #0 @@ -822,9 +822,9 @@ main: { //SEG24 main::@3 b3: //SEG25 [8] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:2 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) -- pbuz1=pbuc1_plus_vbuz2 - lda #zpptr adc #0 diff --git a/src/test/java/dk/camelot64/kickc/test/test-multiply.kc b/src/test/java/dk/camelot64/kickc/test/test-multiply.kc index b4e4ba23b..02e5ffb54 100644 --- a/src/test/java/dk/camelot64/kickc/test/test-multiply.kc +++ b/src/test/java/dk/camelot64/kickc/test/test-multiply.kc @@ -14,12 +14,13 @@ void main() { init_multiply_asm(); multiply_tables_compare(); multiply_results_compare(); + signed_multiply_results_compare(); } -// Perform a slow multiplication by repeated addition +// Calculate an unsigned multiplication by repeated addition word slow_multiply(byte a, byte b) { word m = 0; - if(a>0) { + if(a!=0) { for(byte i = 0; i!=a; i++) { m = m + b; } @@ -27,6 +28,21 @@ word slow_multiply(byte a, byte b) { return m; } +// Perform a signed multiplication by repeated addition/ +signed word slow_signed_multiply(signed byte a, signed byte b) { + signed word m = 0; + if(a<0) { + for(signed byte i = 0; i!=a; i--) { + m = m - b; + } + } else if (a>0) { + for(signed byte j = 0; j!=a; j++) { + m = m + b; + } + } + return m; +} + // ASM based multiplication tables // <(( x * x )/4) byte[512] align($100) asm_mul_sqr1_lo; @@ -106,7 +122,7 @@ void multiply_tables_compare() { print_ln(); } -// Perform all possible byte-multiplications (slow and ASM) and compare the results +// Perform all possible byte multiplications (slow and fast) and compare the results void multiply_results_compare() { for(byte a: 0..255) { for(byte b: 0..255) { @@ -114,14 +130,52 @@ void multiply_results_compare() { word ma = multiply(a,b); if(ms!=ma) { *BGCOL = 2; - print_str("multiply mismatch slow:@"); - print_word(ms); - print_str(" / fast asm:"); - print_word(ma); + multiply_error(a,b, ms, ma); return; } } } print_str("multiply results match!@"); print_ln(); -} \ No newline at end of file +} + +void multiply_error(byte a, byte b, word ms, word ma) { + print_str("multiply mismatch @"); + print_byte(a); + print_str("*@"); + print_byte(b); + print_str(" slow:@"); + print_word(ms); + print_str(" / fast asm:@"); + print_word(ma); + print_ln(); +} + +// Perform all possible signed byte multiplications (slow and fast) and compare the results +void signed_multiply_results_compare() { + for(signed byte a = -128; a!=-128; a++) { + for(signed byte b = -128; b!=-128; b++) { + signed word ms = slow_signed_multiply(a, b); + signed word ma = signed_multiply(a,b); + if(ms!=ma) { + *BGCOL = 2; + signed_multiply_error(a,b, ms, ma); + return; + } + } + } + print_str("signed multiply results match!@"); + print_ln(); +} + +void signed_multiply_error(signed byte a, signed byte b, signed word ms, signed word ma) { + print_str("signed multiply mismatch @"); + print_sbyte(a); + print_str("*@"); + print_sbyte(b); + print_str(" slow:@"); + print_sword(ms); + print_str(" / fast asm:@"); + print_sword(ma); + print_ln(); +}